Struct Exception

Source
pub struct Exception<'a> {
    pub bits: ExceptionBits,
    pub slot_presence: SlotPresence,
    pub data: Cow<'a, str>,
}
Expand description

A type representing the wire format of Exception. The data contained is equivalently represented by DecodedException.

This type is itself not used that much, most of its relevant methods live on ExceptionULE.

The bits contain supplementary data, whereas slot_presence marks te presence of various extra data in the data field.

The data field is not validated to contain all of this data, this type will have GIGO behavior when constructed with invalid data.

The format of data is documented on the field

๐Ÿšง This code is considered unstable; it may change at any time, in breaking or non-breaking ways, including in SemVer minor releases. While the serde representation of data structs is guaranteed to be stable, their Rust representation might not be. Use with caution.

Fieldsยง

ยงbits: ExceptionBits

The various bit based exception data associated with this.

Format: Just a u8 of bitflags, some flags unused. See ExceptionBits and its ULE type for more.

ยงslot_presence: SlotPresence

Which slots are present in data.

Format: a u8 of bitflags

ยงdata: Cow<'a, str>

Format : [char slots] [optional closure length] [ closure slot ] [ full mappings data ]

For each set SlotPresence bit, except for the two stringy slots (Closure/FullMapping), this will have one entry in the string, packed together.

Note that the simple_case delta is stored as a u32 normalized to a char, where u32s which are from or beyond the surrogate range 0xD800-0xDFFF are stored as chars starting from 0xE000. The sign is stored in bits.negative_delta.

If both Closure/FullMapping are present, the next char will be the length of the closure slot, bisecting the rest of the data. If only one is present, the rest of the data represents that slot.

The closure slot simply represents one string. The full-mappings slot represents four strings, packed in a way similar to VarZeroVec, in the following format: i1 i2 i3 [ str0 ] [ str1 ] [ str2 ] [ str3 ]

where i1 i2 i3 are the indices of the relevant mappings string. The strings are stored in the order corresponding to the MappingKind enum.

Trait Implementationsยง

Sourceยง

impl<'a> Clone for Exception<'a>

Sourceยง

fn clone(&self) -> Exception<'a>

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<'a> Debug for Exception<'a>

Sourceยง

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

Formats the value using the given formatter. Read more
Sourceยง

impl<'a> Default for Exception<'a>

Sourceยง

fn default() -> Exception<'a>

Returns the โ€œdefault valueโ€ for a type. Read more
Sourceยง

impl<'de, 'a> Deserialize<'de> for Exception<'a>

Sourceยง

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Sourceยง

impl<'a> EncodeAsVarULE<ExceptionULE> for &Exception<'a>

Sourceยง

fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R

Calls cb with a piecewise list of byte slices that when concatenated produce the memory pattern of the corresponding instance of T. Read more
Sourceยง

fn encode_var_ule_len(&self) -> usize

Return the length, in bytes, of the corresponding VarULE type
Sourceยง

fn encode_var_ule_write(&self, dst: &mut [u8])

Write the corresponding VarULE type to the dst buffer. dst should be the size of Self::encode_var_ule_len()
Sourceยง

impl<'a> EncodeAsVarULE<ExceptionULE> for Exception<'a>

Sourceยง

fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R

Calls cb with a piecewise list of byte slices that when concatenated produce the memory pattern of the corresponding instance of T. Read more
Sourceยง

fn encode_var_ule_len(&self) -> usize

Return the length, in bytes, of the corresponding VarULE type
Sourceยง

fn encode_var_ule_write(&self, dst: &mut [u8])

Write the corresponding VarULE type to the dst buffer. dst should be the size of Self::encode_var_ule_len()
Sourceยง

impl<'a> From<&'a ExceptionULE> for Exception<'a>

Sourceยง

fn from(other: &'a ExceptionULE) -> Self

Converts to this type from the input type.
Sourceยง

impl<'a> PartialEq for Exception<'a>

Sourceยง

fn eq(&self, other: &Exception<'a>) -> 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<'a> ZeroFrom<'a, ExceptionULE> for Exception<'a>

Sourceยง

fn zero_from(other: &'a ExceptionULE) -> Self

Clone the other C into a struct that may retain references into C.
Sourceยง

impl<'a> Eq for Exception<'a>

Sourceยง

impl<'a> StructuralPartialEq for Exception<'a>

Auto Trait Implementationsยง

ยง

impl<'a> Freeze for Exception<'a>

ยง

impl<'a> RefUnwindSafe for Exception<'a>

ยง

impl<'a> Send for Exception<'a>

ยง

impl<'a> Sync for Exception<'a>

ยง

impl<'a> Unpin for Exception<'a>

ยง

impl<'a> UnwindSafe for Exception<'a>

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, 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<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<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Sourceยง

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