Skip to main content

Builder

Struct Builder 

Source
pub struct Builder<Tls = TlsUnset> { /* private fields */ }
Available on crate feature default-client only.
Expand description

Builds a partition-aware connection pool.

Implementations§

Source§

impl<Tls> Builder<Tls>

Source

pub fn idle_timeout(self, timeout: impl Into<Option<Duration>>) -> Self

Sets how long a reusable idle connection remains in the pool.

Passing None disables idle expiration. When unset, the pool uses a 90-second timeout.

Source

pub fn set_idle_timeout( &mut self, timeout: Option<Option<Duration>>, ) -> &mut Self

Mutably sets the idle timeout.

The outer None restores the default; Some(None) disables expiry.

Source

pub fn time_source(self, source: impl TimeSource + 'static) -> Self

Sets the clock used by pool maintenance and connection timing.

Source

pub fn set_time_source(&mut self, source: Option<SharedTimeSource>) -> &mut Self

Mutably sets the clock used by pool maintenance and connection timing.

Source

pub fn sleep_impl(self, sleep: impl AsyncSleep + 'static) -> Self

Sets the sleep implementation used by pool maintenance.

Source

pub fn set_sleep_impl(&mut self, sleep: Option<SharedAsyncSleep>) -> &mut Self

Mutably sets the sleep implementation used by pool maintenance.

Source

pub fn tcp_nodelay(self, enabled: bool) -> Self

Configures TCP_NODELAY for newly created sockets.

Source

pub fn set_tcp_nodelay(&mut self, enabled: bool) -> &mut Self

Mutably configures TCP_NODELAY.

Source

pub fn tcp_keepalive(self, time: impl Into<Option<Duration>>) -> Self

Configures TCP keepalive for newly created sockets.

Source

pub fn set_tcp_keepalive(&mut self, time: Option<Option<Duration>>) -> &mut Self

Mutably configures TCP keepalive.

Source

pub fn max_connections_per_host(self, limit: usize) -> Self

Bounds connection capacity for one origin across every pool partition.

An origin is a scheme, host, and port, so https://example.com and http://example.com are bounded separately, as is each non-default port. Establishing, idle, and active connections occupy capacity. Logical close normally returns capacity while accepted work drains. An HTTP/1 upgrade retains capacity until the caller releases upgraded I/O. This is not an idle-connection limit.

Source

pub fn set_max_connections_per_host( &mut self, limit: Option<usize>, ) -> &mut Self

Mutably sets the connection-capacity bound described by Builder::max_connections_per_host.

Source

pub fn connection_reuse_scope(self, scope: ConnectionReuseScope) -> Self

Selects which partitions may reuse each other’s connections.

Source

pub fn set_connection_reuse_scope( &mut self, scope: ConnectionReuseScope, ) -> &mut Self

Mutably selects the connection reuse scope.

Source

pub fn has_explicit_partitions(&self) -> bool

Returns whether an explicit partition set is configured.

An explicitly supplied empty set also returns true. Clearing the set with Self::set_partitions and None restores anonymous partition construction.

Source

pub fn partitions(self, partitions: impl IntoIterator<Item = Partition>) -> Self

Declares the complete explicit partition set.

Source

pub fn set_partitions( &mut self, partitions: Option<Vec<Partition>>, ) -> &mut Self

Mutably declares or clears the explicit partition set.

Source

pub fn proxy_config(self, config: ProxyConfig) -> Self

Configures proxy selection for every connection established by this pool.

The configuration applies across every partition. Proxying is disabled unless this method is called.

Source

pub fn set_proxy_config(&mut self, config: Option<ProxyConfig>) -> &mut Self

Mutably configures pool-wide proxy selection.

Passing None disables proxying.

Source

pub fn dns_resolver(self, resolver: impl ResolveDns + 'static) -> Self

Configures the DNS resolver used by connections established by this pool.

The resolver applies across every partition. When unset, the client uses its default resolver, which currently delegates to the operating system.

Examples found in repository?
examples/custom-dns.rs (line 29)
23fn main() {
24    let _legacy_client = Builder::new()
25        .tls_provider(tls::Provider::Rustls(CryptoMode::Ring))
26        .build_with_resolver(StaticResolver);
27
28    let pool = ConnectionPool::builder()
29        .dns_resolver(StaticResolver)
30        .tls_provider(tls::Provider::Rustls(CryptoMode::Ring))
31        .build_https()
32        .expect("valid connection pool");
33    let _partitioned_client =
34        PoolClient::new(&pool).expect("pool contains the anonymous partition");
35}
Source

pub fn set_dns_resolver( &mut self, resolver: Option<SharedDnsResolver>, ) -> &mut Self

Mutably configures the pool-wide DNS resolver.

Passing None restores the client default.

Source

pub fn event_listener(self, listener: impl ConnectionEventListener) -> Self

Observes connection establishment and installed-lifetime transitions.

The listener applies to every partition. Each callback runs synchronously on the task that completed the transition and after pool locks are released. A listener must not block on work that requires progress from that same task.

Observation is disabled unless a listener is configured.

Source

pub fn set_event_listener( &mut self, listener: Option<SharedConnectionEventListener>, ) -> &mut Self

Mutably configures pool-wide connection lifecycle observation.

Passing None disables observation. The callback contract is the same as Builder::event_listener.

Source§

impl Builder<TlsUnset>

Source

pub fn tls_provider(self, provider: Provider) -> Builder<TlsProviderSelected>

Selects the TLS provider used by HTTPS pool connections.

Examples found in repository?
examples/custom-dns.rs (line 30)
23fn main() {
24    let _legacy_client = Builder::new()
25        .tls_provider(tls::Provider::Rustls(CryptoMode::Ring))
26        .build_with_resolver(StaticResolver);
27
28    let pool = ConnectionPool::builder()
29        .dns_resolver(StaticResolver)
30        .tls_provider(tls::Provider::Rustls(CryptoMode::Ring))
31        .build_https()
32        .expect("valid connection pool");
33    let _partitioned_client =
34        PoolClient::new(&pool).expect("pool contains the anonymous partition");
35}
Source§

impl Builder<TlsProviderSelected>

Source

pub fn build_https(self) -> Result<ConnectionPool, BuildError>

Builds a pool whose connector performs TLS and ALPN negotiation.

Examples found in repository?
examples/custom-dns.rs (line 31)
23fn main() {
24    let _legacy_client = Builder::new()
25        .tls_provider(tls::Provider::Rustls(CryptoMode::Ring))
26        .build_with_resolver(StaticResolver);
27
28    let pool = ConnectionPool::builder()
29        .dns_resolver(StaticResolver)
30        .tls_provider(tls::Provider::Rustls(CryptoMode::Ring))
31        .build_https()
32        .expect("valid connection pool");
33    let _partitioned_client =
34        PoolClient::new(&pool).expect("pool contains the anonymous partition");
35}
Source§

impl Builder<TlsProviderSelected>

Source

pub fn tls_context(self, context: TlsContext) -> Self

Available on crate features __rustls or s2n-tls only.

Sets provider-specific TLS configuration for HTTPS connections.

Source

pub fn set_tls_context(&mut self, context: TlsContext) -> &mut Self

Available on crate features __rustls or s2n-tls only.

Mutably sets provider-specific TLS configuration.

Trait Implementations§

Source§

impl<Tls: Clone> Clone for Builder<Tls>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<Tls: Debug> Debug for Builder<Tls>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Builder<TlsUnset>

Source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<Tls = TlsUnset> !Freeze for Builder<Tls>

§

impl<Tls = TlsUnset> !RefUnwindSafe for Builder<Tls>

§

impl<Tls = TlsUnset> !UnwindSafe for Builder<Tls>

§

impl<Tls> Send for Builder<Tls>
where Tls: Send,

§

impl<Tls> Sync for Builder<Tls>
where Tls: Sync,

§

impl<Tls> Unpin for Builder<Tls>
where Tls: Unpin,

§

impl<Tls> UnsafeUnpin for Builder<Tls>
where Tls: UnsafeUnpin,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

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

Source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
Source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
Source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
Source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
Source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
Source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1:

renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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