Struct QuicClient

Source
pub struct QuicClient { /* private fields */ }
Expand description

A QUIC client for initiating connections to servers.

§Creating Clients

Use QuicClient::builder to configure and create a client instance. Configure interfaces, TLS settings, and connection behavior before building.

§Interface Management

  • Automatic binding: If no interfaces are bound, the client automatically binds to system-assigned addresses
  • Manual binding: Use QuicClientBuilder::bind to bind specific interfaces

§Connection Handling

Call QuicClient::connect to establish connections. The client supports:

  • Automatic interface selection: Matches interface with server endpoint address

Implementations§

Source§

impl QuicClient

Source

pub fn builder() -> QuicClientBuilder<ConfigBuilder<TlsClientConfig, WantsVerifier>>

Create a new QuicClient builder.

Source

pub fn builder_with_crypto_provieder( provider: Arc<CryptoProvider>, ) -> QuicClientBuilder<ConfigBuilder<TlsClientConfig, WantsVerifier>>

Create a QuicClient builder with custom crypto provider.

Source

pub fn builder_with_tls<T>(tls_config: T) -> QuicClientBuilder<T>

Start to build a QuicClient with the given TLS configuration.

This is useful when you want to customize the TLS configuration, or integrate qm-quic with other crates.

Source§

impl QuicClient

Source

pub fn connect( &self, server_name: impl Into<String>, server_eps: impl IntoIterator<Item = impl Into<EndpointAddr>>, ) -> Result<Arc<Connection>, ConnectServerError>

Returns the connection to the specified server.

server_name is the name of the server, it will be included in the ClientHello message.

server_addr is the address of the server, packets will be sent to this address.

Note that the returned connection may not yet be connected to the server, but you can use it to do anything you want, such as sending data, receiving data… operations will be pending until the connection is connected or failed to connect.

§Select an interface

First, the client will select an interface to communicate with the server.

If the client has already bound a set of addresses, The client will select the interface whose IP family of the first address matches the server addr from the bound and not closed interfaces.

§Connect to server

If the client does not bind any interface, the client will bind the interface on the address/port randomly assigned by the system through quic_iface_factory every time it establishes a connection.

The client will initiate a new connection to the server.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more