Struct icu::properties::CodePointMapDataBorrowed

source ·
pub struct CodePointMapDataBorrowed<'a, T>
where T: TrieValue,
{ /* private fields */ }
Expand description

A borrowed wrapper around code point set data, returned by CodePointSetData::as_borrowed(). More efficient to query.

Implementations§

source§

impl<'a, T> CodePointMapDataBorrowed<'a, T>
where T: TrieValue,

source

pub fn get(self, ch: char) -> T

Get the value this map has associated with code point ch

§Example
use icu::properties::CodePointMapData;
use icu::properties::props::GeneralCategory;

let gc = CodePointMapData::<GeneralCategory>::new();

assert_eq!(gc.get('木'), GeneralCategory::OtherLetter);  // U+6728
assert_eq!(gc.get('🎃'), GeneralCategory::OtherSymbol);  // U+1F383 JACK-O-LANTERN
source

pub fn get32(self, ch: u32) -> T

See Self::get.

source

pub fn get_set_for_value(self, value: T) -> CodePointSetData

Get a CodePointSetData for all elements corresponding to a particular value

§Example
use icu::properties::props::GeneralCategory;
use icu::properties::CodePointMapData;

let gc = CodePointMapData::<GeneralCategory>::new();

let other_letter_set_data =
    gc.get_set_for_value(GeneralCategory::OtherLetter);
let other_letter_set = other_letter_set_data.as_borrowed();

assert!(other_letter_set.contains('木')); // U+6728
assert!(!other_letter_set.contains('🎃')); // U+1F383 JACK-O-LANTERN
source

pub fn iter_ranges(self) -> impl Iterator<Item = CodePointMapRange<T>> + 'a

Yields an Iterator returning ranges of consecutive code points that share the same value in the CodePointMapData.

§Examples
use icu::properties::props::GeneralCategory;
use icu::properties::CodePointMapData;

let gc = CodePointMapData::<GeneralCategory>::new();
let mut ranges = gc.iter_ranges();
let next = ranges.next().unwrap();
assert_eq!(next.range, 0..=31);
assert_eq!(next.value, GeneralCategory::Control);
let next = ranges.next().unwrap();
assert_eq!(next.range, 32..=32);
assert_eq!(next.value, GeneralCategory::SpaceSeparator);
source

pub fn iter_ranges_for_value( self, val: T, ) -> impl Iterator<Item = RangeInclusive<u32>> + 'a

Yields an Iterator returning ranges of consecutive code points that share the same value v in the CodePointMapData.

§Examples
use icu::properties::props::GeneralCategory;
use icu::properties::CodePointMapData;

let gc = CodePointMapData::<GeneralCategory>::new();
let mut ranges = gc.iter_ranges_for_value(GeneralCategory::UppercaseLetter);
assert_eq!(ranges.next().unwrap(), 'A' as u32..='Z' as u32);
assert_eq!(ranges.next().unwrap(), 'À' as u32..='Ö' as u32);
assert_eq!(ranges.next().unwrap(), 'Ø' as u32..='Þ' as u32);
source

pub fn iter_ranges_for_value_complemented( self, val: T, ) -> impl Iterator<Item = RangeInclusive<u32>> + 'a

Yields an Iterator returning ranges of consecutive code points that do not have the value v in the CodePointMapData.

source§

impl CodePointMapDataBorrowed<'_, GeneralCategory>

source§

impl<T> CodePointMapDataBorrowed<'static, T>
where T: TrieValue,

source

pub const fn new() -> CodePointMapDataBorrowed<'static, T>

Creates a new CodePointMapDataBorrowed for a EnumeratedProperty.

See the documentation on EnumeratedProperty implementations for details.

Enabled with the compiled_data Cargo feature.

📚 Help choosing a constructor

source

pub const fn static_to_owned(self) -> CodePointMapData<T>

Cheaply converts a [CodePointMapDataBorrowed<'static>] into a CodePointMapData.

Note: Due to branching and indirection, using CodePointMapData might inhibit some compile-time optimizations that are possible with CodePointMapDataBorrowed.

source§

impl<'a> CodePointMapDataBorrowed<'a, GeneralCategory>

source

pub fn iter_ranges_for_group( self, group: GeneralCategoryGroup, ) -> impl Iterator<Item = RangeInclusive<u32>> + 'a

Yields an Iterator returning ranges of consecutive code points that have a General_Category value belonging to the specified GeneralCategoryGroup

§Examples
use icu::properties::props::{GeneralCategory, GeneralCategoryGroup};
use icu::properties::CodePointMapData;

let gc = CodePointMapData::<GeneralCategory>::new();
let mut ranges = gc.iter_ranges_for_group(GeneralCategoryGroup::Letter);
assert_eq!(ranges.next().unwrap(), 'A' as u32..='Z' as u32);
assert_eq!(ranges.next().unwrap(), 'a' as u32..='z' as u32);
assert_eq!(ranges.next().unwrap(), 'ª' as u32..='ª' as u32);
assert_eq!(ranges.next().unwrap(), 'µ' as u32..='µ' as u32);
assert_eq!(ranges.next().unwrap(), 'º' as u32..='º' as u32);
assert_eq!(ranges.next().unwrap(), 'À' as u32..='Ö' as u32);
assert_eq!(ranges.next().unwrap(), 'Ø' as u32..='ö' as u32);

Trait Implementations§

source§

impl BidiDataSource for CodePointMapDataBorrowed<'_, BidiClass>

Implements [unicode_bidi::BidiDataSource] on CodePointMapDataBorrowed<BidiClass>.

Enabled with the unicode_bidi Cargo feature.

§Examples

 use icu::properties::CodePointMapData;
 use icu::properties::props::BidiClass;
 use unicode_bidi::BidiInfo;

 // This example text is defined using `concat!` because some browsers
 // and text editors have trouble displaying bidi strings.
 let text =  concat!["א", // RTL#1
                     "ב", // RTL#2
                     "ג", // RTL#3
                     "a", // LTR#1
                     "b", // LTR#2
                     "c", // LTR#3
                     ]; //


 let bidi_map = CodePointMapData::<BidiClass>::new();

 // Resolve embedding levels within the text.  Pass `None` to detect the
 // paragraph level automatically.
 let bidi_info = BidiInfo::new_with_data_source(&bidi_map, text, None);

 // This paragraph has embedding level 1 because its first strong character is RTL.
 assert_eq!(bidi_info.paragraphs.len(), 1);
 let para = &bidi_info.paragraphs[0];
 assert_eq!(para.level.number(), 1);
 assert!(para.level.is_rtl());

 // Re-ordering is done after wrapping each paragraph into a sequence of
 // lines. For this example, I'll just use a single line that spans the
 // entire paragraph.
 let line = para.range.clone();

 let display = bidi_info.reorder_line(para, line);
 assert_eq!(display, concat!["a", // LTR#1
                             "b", // LTR#2
                             "c", // LTR#3
                             "ג", // RTL#3
                             "ב", // RTL#2
                             "א", // RTL#1
                             ]);
source§

fn bidi_class(&self, c: char) -> BidiClass

§

fn bidi_matched_opening_bracket( &self, c: char, ) -> Option<BidiMatchedOpeningBracket>

If this character is a bracket according to BidiBrackets.txt, return the corresponding normalized opening bracket of the pair, and whether or not it itself is an opening bracket. Read more
source§

impl<'a, T> Clone for CodePointMapDataBorrowed<'a, T>
where T: Clone + TrieValue,

source§

fn clone(&self) -> CodePointMapDataBorrowed<'a, T>

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, T> Debug for CodePointMapDataBorrowed<'a, T>
where T: Debug + TrieValue,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<T> Default for CodePointMapDataBorrowed<'static, T>

source§

fn default() -> CodePointMapDataBorrowed<'static, T>

Returns the “default value” for a type. Read more
source§

impl<'a, T> Copy for CodePointMapDataBorrowed<'a, T>
where T: Copy + TrieValue,

Auto Trait Implementations§

§

impl<'a, T> Freeze for CodePointMapDataBorrowed<'a, T>

§

impl<'a, T> RefUnwindSafe for CodePointMapDataBorrowed<'a, T>
where T: RefUnwindSafe, <T as AsULE>::ULE: RefUnwindSafe,

§

impl<'a, T> Send for CodePointMapDataBorrowed<'a, T>
where T: Sync, <T as AsULE>::ULE: Sync,

§

impl<'a, T> Sync for CodePointMapDataBorrowed<'a, T>
where T: Sync, <T as AsULE>::ULE: Sync,

§

impl<'a, T> Unpin for CodePointMapDataBorrowed<'a, T>

§

impl<'a, T> UnwindSafe for CodePointMapDataBorrowed<'a, T>
where T: RefUnwindSafe, <T as AsULE>::ULE: RefUnwindSafe,

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> 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> ErasedDestructor for T
where T: 'static,

source§

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