ChunkingError

Enum ChunkingError 

Source
pub enum ChunkingError {
    InvalidPayloadLengthError {
        received: usize,
        expected: usize,
    },
    TooLongPayloadLengthError {
        received: usize,
        expected_at_most: usize,
    },
    MalformedHeaderError,
    TooShortFragmentHeader {
        received: usize,
        expected: usize,
    },
    MalformedFragmentIdentifier {
        received: i32,
    },
}
Expand description

The idea behind the process of chunking is to incur as little data overhead as possible due to very computationally costly sphinx encapsulation procedure.

To achieve this, the underlying message is split into so-called “sets”, which are further subdivided into the base unit of “fragment” that is directly encapsulated by a Sphinx packet. This allows to encapsulate messages of arbitrary length.

Each message, regardless of its size, consists of at least a single Set that has at least a single Fragment.

Each Fragment can have variable, yet fully deterministic, length, that depends on its position in the set as well as total number of sets. This is further explained in fragment.rs file.

Similarly, each Set can have a variable number of Fragments inside. However, that value is more restrictive: if it’s the last set into which the message was split (or implicitly the only one), it has no lower bound on the number of Fragments. (Apart from the restriction of containing at least a single one). If the set is located somewhere in the middle, it must be full. Finally, regardless of its position, it must also be true that it contains no more than u8::MAX, i.e. 255 Fragments. Again, the reasoning for this is further explained in set.rs file. However, you might also want to look at fragment.rs to understand the full context behind that design choice.

Both of those concepts as well as their structures, i.e. Set and Fragment are further explained in the respective files.

Variants§

§

InvalidPayloadLengthError

Fields

§received: usize
§expected: usize
§

TooLongPayloadLengthError

Fields

§received: usize
§expected_at_most: usize
§

MalformedHeaderError

§

TooShortFragmentHeader

Fields

§received: usize
§expected: usize
§

MalformedFragmentIdentifier

Fields

§received: i32

Trait Implementations§

Source§

impl Debug for ChunkingError

Source§

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

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

impl Display for ChunkingError

Source§

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

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

impl Error for ChunkingError

1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl PartialEq for ChunkingError

Source§

fn eq(&self, other: &ChunkingError) -> 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 Eq for ChunkingError

Source§

impl StructuralPartialEq for ChunkingError

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. 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

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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