Struct icu::casemap::provider::exceptions::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<(), Error>

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<Exception<'a>, <__D as Deserializer<'de>>::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) -> Exception<'a>

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

source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<'a> ZeroFrom<'a, ExceptionULE> for Exception<'a>

source§

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

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, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> Serialize for T
where T: Serialize + ?Sized,

source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<Ok, Error>

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,

source§

impl<T> MaybeSendSync for T
where T: Send + Sync,