Struct wtransport::config::ClientConfig

source ·
pub struct ClientConfig { /* private fields */ }
Expand description

Client configuration.

You can create an instance of ClientConfig using its builder pattern by calling the builder() method. Once you have an instance, you can further customize it by chaining method calls to set various configuration options.

§Configuration Builder States

The configuration process follows a state-based builder pattern, where the client configuration progresses through 3 states.

§1. WantsBindAddress

The caller must supply a binding address for the client. The following options are mutually exclusive:

  • with_bind_default: configures to use the default bind address. This is generally the default choice for a client.
  • with_bind_config: configures to bind an address determined by a configuration preset.
  • with_bind_address: configures to bind a custom specified socket address.

Only one of these options can be selected during the client configuration process.

§Examples:
use wtransport::ClientConfig;

ClientConfig::builder().with_bind_default();

§2. WantsRootStore

The caller must supply a TLS root store configuration for server certificate validation. The following options are mutually exclusive:

  • with_native_certs: configures to use root certificates found in the platform’s native certificate store. This is the default configuration as it uses root store installed on the current machine.
  • with_custom_tls: sets the TLS client configuration manually.
  • with_server_certificate_hashes: configures the client to accept some certificates mapped to hashes.
  • (unsafe) with_no_cert_validation: configure to skip server certificate validation. This might be handy for testing purpose to accept self-signed certificate.

Only one of these options can be selected during the client configuration process.

§Examples:
use wtransport::ClientConfig;

ClientConfig::builder()
    .with_bind_default()
    .with_native_certs();

§3. WantsTransportConfigClient

The caller can supply additional transport configurations. Multiple options can be given at this stage. Once the configuration is completed, it is possible to finalize with the method build().

All these options can be omitted in the configuration; default values will be used.

§Examples:
use std::time::Duration;
use wtransport::ClientConfig;

let client_config = ClientConfig::builder()
    .with_bind_default()
    .with_native_certs()
    .max_idle_timeout(Some(Duration::from_secs(30)))
    .unwrap()
    .keep_alive_interval(Some(Duration::from_secs(3)))
    .build();

Implementations§

source§

impl ClientConfig

source

pub fn builder() -> ClientConfigBuilder<WantsBindAddress>

Creates a builder to build up the client configuration.

For more information, see the ClientConfigBuilder documentation.

source

pub fn quic_config(&self) -> &ClientConfig

Available on crate feature quinn only.

Returns a reference to the inner QUIC configuration.

source

pub fn quic_config_mut(&mut self) -> &mut ClientConfig

Available on crate feature quinn only.

Returns a mutable reference to the inner QUIC configuration.

Trait Implementations§

source§

impl Default for ClientConfig

source§

fn default() -> Self

Returns the “default value” for a type. Read more

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

source§

fn implicit( self, class: Class, constructed: bool, tag: u32 ) -> TaggedParser<'a, Implicit, Self, E>

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> Same for T

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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