Skip to main content

DeflateOptions

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>
Available on crate feature zlib only.

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>
Available on crate feature zlib only.

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.

Implementations§

Source§

impl DeflateOptions

Source

pub fn low_latency() -> Self

Available on non-WebAssembly only.

Creates compression settings optimized for low latency.

This profile uses:

  • Fast compression level (level 1)
  • No context takeover on both sides to minimize memory and processing

Best for real-time applications where latency is critical.

Source

pub fn high_compression() -> Self

Available on non-WebAssembly only.

Creates compression settings optimized for maximum compression.

This profile uses:

  • Best compression level (level 9)
  • Context takeover enabled for better compression ratios

Best for bandwidth-constrained scenarios where CPU is available.

Source

pub fn balanced() -> Self

Available on non-WebAssembly only.

Creates balanced compression settings.

This profile uses:

  • Default compression level (level 6)
  • Moderate window sizes
  • No context takeover to prevent memory growth

Best general-purpose configuration for most applications.

Trait Implementations§

Source§

impl Clone for DeflateOptions

Available on non-WebAssembly only.
Source§

fn clone(&self) -> DeflateOptions

Returns a duplicate 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

Available on non-WebAssembly only.
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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,