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
Fieldsยง
ยงbits: ExceptionBitsThe 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: SlotPresenceWhich 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<'de, 'a> Deserialize<'de> for Exception<'a>
impl<'de, 'a> Deserialize<'de> for Exception<'a>
Sourceยงfn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Sourceยงimpl<'a> EncodeAsVarULE<ExceptionULE> for &Exception<'a>
impl<'a> EncodeAsVarULE<ExceptionULE> for &Exception<'a>
Sourceยงfn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R
fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R
cb with a piecewise list of byte slices that when concatenated
produce the memory pattern of the corresponding instance of T. Read moreSourceยงfn encode_var_ule_len(&self) -> usize
fn encode_var_ule_len(&self) -> usize
VarULE typeSourceยงfn encode_var_ule_write(&self, dst: &mut [u8])
fn encode_var_ule_write(&self, dst: &mut [u8])
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>
impl<'a> EncodeAsVarULE<ExceptionULE> for Exception<'a>
Sourceยงfn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R
fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R
cb with a piecewise list of byte slices that when concatenated
produce the memory pattern of the corresponding instance of T. Read moreSourceยงfn encode_var_ule_len(&self) -> usize
fn encode_var_ule_len(&self) -> usize
VarULE typeSourceยงfn encode_var_ule_write(&self, dst: &mut [u8])
fn encode_var_ule_write(&self, dst: &mut [u8])
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>
impl<'a> From<&'a ExceptionULE> for Exception<'a>
Sourceยงfn from(other: &'a ExceptionULE) -> Self
fn from(other: &'a ExceptionULE) -> Self
Sourceยงimpl<'a> ZeroFrom<'a, ExceptionULE> for Exception<'a>
impl<'a> ZeroFrom<'a, ExceptionULE> for Exception<'a>
Sourceยงfn zero_from(other: &'a ExceptionULE) -> Self
fn zero_from(other: &'a ExceptionULE) -> Self
C into a struct that may retain references into C.impl<'a> Eq for Exception<'a>
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Sourceยงfn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Sourceยงimpl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Sourceยงimpl<T> IntoEither for T
impl<T> IntoEither for T
Sourceยงfn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSourceยงfn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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