pub struct Level(/* private fields */);
Expand description
Embedding Level
Embedding Levels are numbers between 0 and 126 (inclusive), where even values denote a left-to-right (LTR) direction and odd values a right-to-left (RTL) direction.
This struct maintains a valid status for level numbers, meaning that creating a new level, or
mutating an existing level, with the value smaller than 0
(before conversion to u8
) or
larger than 125 results in an Error
.
Implementations§
source§impl Level
impl Level
sourcepub fn max_implicit_depth() -> u8
pub fn max_implicit_depth() -> u8
Maximum depth of the directional status stack during implicit resolutions.
sourcepub fn max_explicit_depth() -> u8
pub fn max_explicit_depth() -> u8
Maximum depth of the directional status stack during explicit resolutions.
sourcepub fn new(number: u8) -> Result<Level, Error>
pub fn new(number: u8) -> Result<Level, Error>
Create new level, fail if number is larger than max_depth + 1
.
sourcepub fn new_explicit(number: u8) -> Result<Level, Error>
pub fn new_explicit(number: u8) -> Result<Level, Error>
Create new level, fail if number is larger than max_depth
.
sourcepub fn raise(&mut self, amount: u8) -> Result<(), Error>
pub fn raise(&mut self, amount: u8) -> Result<(), Error>
Raise level by amount
, fail if number is larger than max_depth + 1
.
sourcepub fn raise_explicit(&mut self, amount: u8) -> Result<(), Error>
pub fn raise_explicit(&mut self, amount: u8) -> Result<(), Error>
Raise level by amount
, fail if number is larger than max_depth
.
sourcepub fn lower(&mut self, amount: u8) -> Result<(), Error>
pub fn lower(&mut self, amount: u8) -> Result<(), Error>
Lower level by amount
, fail if number goes below zero.
sourcepub fn new_explicit_next_ltr(&self) -> Result<Level, Error>
pub fn new_explicit_next_ltr(&self) -> Result<Level, Error>
The next LTR (even) level greater than this, or fail if number is larger than max_depth
.
sourcepub fn new_explicit_next_rtl(&self) -> Result<Level, Error>
pub fn new_explicit_next_rtl(&self) -> Result<Level, Error>
The next RTL (odd) level greater than this, or fail if number is larger than max_depth
.
sourcepub fn new_lowest_ge_rtl(&self) -> Result<Level, Error>
pub fn new_lowest_ge_rtl(&self) -> Result<Level, Error>
The lowest RTL (odd) level greater than or equal to this, or fail if number is larger than
max_depth + 1
.
sourcepub fn bidi_class(&self) -> BidiClass
pub fn bidi_class(&self) -> BidiClass
Generate a character type based on a level (as specified in steps X10 and N2).
pub fn vec(v: &[u8]) -> Vec<Level>
sourcepub fn from_slice_unchecked(v: &[u8]) -> &[Level]
pub fn from_slice_unchecked(v: &[u8]) -> &[Level]
Converts a byte slice to a slice of Levels
Does not check if each level is within bounds (<=
MAX_IMPLICIT_DEPTH
),
which is not a requirement for safety but is a requirement for correctness of the algorithm.
Trait Implementations§
source§impl Ord for Level
impl Ord for Level
source§impl PartialOrd for Level
impl PartialOrd for Level
impl Copy for Level
impl Eq for Level
impl StructuralPartialEq for Level
Auto Trait Implementations§
impl Freeze for Level
impl RefUnwindSafe for Level
impl Send for Level
impl Sync for Level
impl Unpin for Level
impl UnwindSafe for Level
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)