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: 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<'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