Rust Environments
The same Rust crates (moq-net, hang) target two very different environments. moq-net is transport-agnostic: it runs over anything that implements web_transport_trait::Session, so the only thing that changes between environments is which transport you hand it.
Native server, desktop, mobile
Servers, CLIs, desktop apps, and mobile (via the FFI bindings). Uses moq-native to stand up a QUIC endpoint with quinn and rustls, with automatic WebSocket fallback. This is the common case.
WebAssembly browser
Compile a Rust client to wasm32-unknown-unknown and run it inside a browser tab, reusing the browser's own WebTransport. Useful when you want to share Rust logic between native and web instead of maintaining a separate TypeScript client.