pub struct CanonicalCompositionBorrowed<'a> { /* private fields */ }Expand description
Borrowed version of the raw canonical composition operation.
Callers should generally use ComposingNormalizer instead of this API.
However, this API is provided for callers such as HarfBuzz that specifically
want access to the raw canonical composition operation e.g. for use in a
glyph-availability-guided custom normalizer.
Implementations§
Source§impl CanonicalCompositionBorrowed<'static>
 
impl CanonicalCompositionBorrowed<'static>
Sourcepub const fn static_to_owned(self) -> CanonicalComposition
 
pub const fn static_to_owned(self) -> CanonicalComposition
Cheaply converts a [CanonicalCompositionBorrowed<'static>] into a CanonicalComposition.
Note: Due to branching and indirection, using CanonicalComposition might inhibit some
compile-time optimizations that are possible with CanonicalCompositionBorrowed.
Sourcepub const fn new() -> CanonicalCompositionBorrowed<'static>
 
pub const fn new() -> CanonicalCompositionBorrowed<'static>
Constructs a new CanonicalComposition using compiled data.
✨ Enabled with the compiled_data Cargo feature.
Source§impl CanonicalCompositionBorrowed<'_>
 
impl CanonicalCompositionBorrowed<'_>
Sourcepub fn compose(self, starter: char, second: char) -> Option<char>
 
pub fn compose(self, starter: char, second: char) -> Option<char>
Performs canonical composition (including Hangul) on a pair of
characters or returns None if these characters don’t compose.
Composition exclusions are taken into account.
§Examples
let comp = icu::normalizer::properties::CanonicalCompositionBorrowed::new();
assert_eq!(comp.compose('a', 'b'), None); // Just two non-composing starters
assert_eq!(comp.compose('a', '\u{0308}'), Some('ä'));
assert_eq!(comp.compose('ẹ', '\u{0302}'), Some('ệ'));
assert_eq!(comp.compose('𝅗', '𝅥'), None); // Composition exclusion
assert_eq!(comp.compose('ে', 'া'), Some('ো')); // Second is starter
assert_eq!(comp.compose('ᄀ', 'ᅡ'), Some('가')); // Hangul LV
assert_eq!(comp.compose('가', 'ᆨ'), Some('각')); // Hangul LVTTrait Implementations§
Source§impl<'a> Clone for CanonicalCompositionBorrowed<'a>
 
impl<'a> Clone for CanonicalCompositionBorrowed<'a>
Source§fn clone(&self) -> CanonicalCompositionBorrowed<'a>
 
fn clone(&self) -> CanonicalCompositionBorrowed<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'a> Debug for CanonicalCompositionBorrowed<'a>
 
impl<'a> Debug for CanonicalCompositionBorrowed<'a>
Source§impl Default for CanonicalCompositionBorrowed<'static>
 
impl Default for CanonicalCompositionBorrowed<'static>
Source§fn default() -> CanonicalCompositionBorrowed<'static>
 
fn default() -> CanonicalCompositionBorrowed<'static>
impl<'a> Copy for CanonicalCompositionBorrowed<'a>
Auto Trait Implementations§
impl<'a> Freeze for CanonicalCompositionBorrowed<'a>
impl<'a> RefUnwindSafe for CanonicalCompositionBorrowed<'a>
impl<'a> Send for CanonicalCompositionBorrowed<'a>
impl<'a> Sync for CanonicalCompositionBorrowed<'a>
impl<'a> Unpin for CanonicalCompositionBorrowed<'a>
impl<'a> UnwindSafe for CanonicalCompositionBorrowed<'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