Struct ConstConfig

Source
pub struct ConstConfig {
    pub msg_size_hint: u32,
    pub sender_buffer: u32,
    pub receiver_buffer: u32,
    pub flush_timeout_millis: u16,
    pub retrying_strategy: RetryingStrategies,
    pub socket_options: SocketOptions,
    pub executor_instruments: Instruments,
}
Expand description

Implements something that could be called the “Zero-Cost Const Configuration Pattern”, that produces a usize whose goal is to be the only const parameter of a generic struct (avoiding the alternative of bloating it with several const params).
When using the const “query functions” defined here in ifs, the compiler will have the opportunity to cancel out any unreachable code (zero-cost abstraction).
Some commonly used combinations may be pre-defined in some enum variants, but you may always build unmapped possibilities through [Self::custom()].
Usage examples:

    see bellow

Fields§

§msg_size_hint: u32

Pre-allocates the sender/receiver buffers to this value (power of 2). Setting it wisely may economize some realloc calls

§sender_buffer: u32

How many messages (per peer) may be enqueued for output (power of 2) before operations start to fail

§receiver_buffer: u32

How many messages (per peer) may be enqueued for processing (power of 2) before operations start to fail

§flush_timeout_millis: u16

How many milliseconds to wait when flushing messages out to a to-be-closed connection.

§retrying_strategy: RetryingStrategies

Specifies what to do when operations fail (full buffers / connection droppings)

§socket_options: SocketOptions

Messes with the low level (system) socket options

§executor_instruments: Instruments

Allows changing the Stream executor options in regard to logging & collected/reported metrics

Implementations§

Source§

impl ConstConfig

Source

pub const fn default() -> ConstConfig

Contains sane & performant defaults.
Usage example:

 const CONFIG: ConstConfig = ConstConfig {
    receiver_buffer: 1024,
    ..ConstConfig::default()
};
Source

pub const fn into(self) -> u64

For use when instantiating a generic struct that uses the “Const Config Pattern” – when choosing a pre-defined configuration.
See also [Self::custom()].
Example:

    see bellow
Source

pub const fn from(config: u64) -> Self

Builds Self from the generic const CONFIGS: usize parameter used in structs by the “Const Config Pattern”

Source

pub const fn extract_receiver_buffer(config: u64) -> u32

Source

pub const fn extract_executor_instruments(config: u64) -> usize

Source

pub const fn extract_msg_size_hint(config: u64) -> u32

Source

pub const fn extract_graceful_close_timeout(config: u64) -> Duration

Source

pub const fn extract_retrying_strategy(config: u64) -> RetryingStrategies

Source

pub const fn extract_socket_options(config: u64) -> SocketOptions

Trait Implementations§

Source§

impl Debug for ConstConfig

Source§

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

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

impl PartialEq for ConstConfig

Source§

fn eq(&self, other: &ConstConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for ConstConfig

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, 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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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