Struct DeflateOptions

Source
pub struct DeflateOptions {
    pub level: CompressionLevel,
    pub server_max_window_bits: Option<u8>,
    pub client_max_window_bits: Option<u8>,
    pub server_no_context_takeover: bool,
    pub client_no_context_takeover: bool,
}
Expand description

Configuration options for WebSocket message compression using the Deflate algorithm.

The WebSocket protocol supports per-message compression using a Deflate-based algorithm (RFC 7692) to reduce bandwidth usage. This struct allows fine-grained control over compression behavior and memory usage through several key settings:

§Compression Level

Controls the tradeoff between compression ratio and CPU usage via the level field. Higher levels provide better compression but require more processing time.

§Context Management

Offers two modes for managing the compression context:

  • Context Takeover (default): Maintains compression state between messages, providing better compression ratios at the cost of increased memory usage. Ideal for applications prioritizing bandwidth efficiency.

  • No Context Takeover: Resets compression state after each message, reducing memory usage at the expense of compression efficiency. Better suited for memory-constrained environments.

§Memory Window Size

When the zlib feature is enabled, allows precise control over the compression window size for both client and server, enabling further optimization of the memory-compression tradeoff.

§Example

use yawc::{DeflateOptions, CompressionLevel};

let opts = DeflateOptions {
    level: CompressionLevel::default(),
    server_no_context_takeover: true,
    ..Default::default()
};

Fields§

§level: CompressionLevel

Sets the compression level (0-9), balancing compression ratio against CPU usage.

  • 0: No compression (fastest)
  • 1-3: Low compression (fast)
  • 4-6: Medium compression (default)
  • 7-9: High compression (slow)
§server_max_window_bits: Option<u8>

Controls the compression window size (in bits) for server-side compression.

Larger windows improve compression but use more memory. Available only with the zlib feature enabled. Valid range: 8-15 bits.

§client_max_window_bits: Option<u8>

Controls the compression window size (in bits) for client-side compression.

Larger windows improve compression but use more memory. Available only with the zlib feature enabled. Valid range: 8-15 bits.

§server_no_context_takeover: bool

Controls server-side compression context management.

When true, compression state is reset after each message, reducing memory usage at the cost of compression efficiency.

§client_no_context_takeover: bool

Controls client-side compression context management.

When true, compression state is reset after each message, reducing memory usage at the cost of compression efficiency.

Trait Implementations§

Source§

impl Clone for DeflateOptions

Source§

fn clone(&self) -> DeflateOptions

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Default for DeflateOptions

Source§

fn default() -> DeflateOptions

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<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> 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> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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

Source§

type Output = T

Should always be Self
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 = 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
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T