Struct icu::properties::script::ScriptWithExtensionsBorrowed

source ·
pub struct ScriptWithExtensionsBorrowed<'a> { /* private fields */ }
Expand description

A borrowed wrapper around script extension data, returned by ScriptWithExtensions::as_borrowed(). More efficient to query.

Implementations§

source§

impl<'a> ScriptWithExtensionsBorrowed<'a>

source

pub fn get_script_val(self, ch: char) -> Script

Returns the Script property value for this code point.

§Examples
use icu::properties::script::ScriptWithExtensions;
use icu::properties::props::Script;

let swe = ScriptWithExtensions::new();

// U+0640 ARABIC TATWEEL
assert_eq!(swe.get_script_val('ـ'), Script::Common); // main Script value
assert_ne!(swe.get_script_val('ـ'), Script::Arabic);
assert_ne!(swe.get_script_val('ـ'), Script::Syriac);
assert_ne!(swe.get_script_val('ـ'), Script::Thaana);

// U+0650 ARABIC KASRA
assert_eq!(swe.get_script_val('\u{0650}'), Script::Inherited); // main Script value
assert_ne!(swe.get_script_val('\u{0650}'), Script::Arabic);
assert_ne!(swe.get_script_val('\u{0650}'), Script::Syriac);
assert_ne!(swe.get_script_val('\u{0650}'), Script::Thaana);

// U+0660 ARABIC-INDIC DIGIT ZERO
assert_ne!(swe.get_script_val('٠'), Script::Common);
assert_eq!(swe.get_script_val('٠'), Script::Arabic); // main Script value
assert_ne!(swe.get_script_val('٠'), Script::Syriac);
assert_ne!(swe.get_script_val('٠'), Script::Thaana);

// U+FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM
assert_ne!(swe.get_script_val('ﷲ'), Script::Common);
assert_eq!(swe.get_script_val('ﷲ'), Script::Arabic); // main Script value
assert_ne!(swe.get_script_val('ﷲ'), Script::Syriac);
assert_ne!(swe.get_script_val('ﷲ'), Script::Thaana);
source

pub fn get_script_val32(self, code_point: u32) -> Script

source

pub fn get_script_extensions_val(self, ch: char) -> ScriptExtensionsSet<'a>

Return the Script_Extensions property value for this code point.

If code_point has Script_Extensions, then return the Script codes in the Script_Extensions. In this case, the Script property value (normally Common or Inherited) is not included in the ScriptExtensionsSet.

If c does not have Script_Extensions, then the one Script code is put into the ScriptExtensionsSet and also returned.

If c is not a valid code point, then return an empty ScriptExtensionsSet.

§Examples
use icu::properties::script::ScriptWithExtensions;
use icu::properties::props::Script;

let swe = ScriptWithExtensions::new();

assert_eq!(
    swe.get_script_extensions_val('𐓐') // U+104D0 OSAGE CAPITAL LETTER KHA
        .iter()
        .collect::<Vec<_>>(),
    [Script::Osage]
);
assert_eq!(
    swe.get_script_extensions_val('🥳') // U+1F973 FACE WITH PARTY HORN AND PARTY HAT
        .iter()
        .collect::<Vec<_>>(),
    [Script::Common]
);
assert_eq!(
    swe.get_script_extensions_val('\u{200D}') // ZERO WIDTH JOINER
        .iter()
        .collect::<Vec<_>>(),
    [Script::Inherited]
);
assert_eq!(
    swe.get_script_extensions_val('௫') // U+0BEB TAMIL DIGIT FIVE
        .iter()
        .collect::<Vec<_>>(),
    [Script::Tamil, Script::Grantha]
);
source

pub fn get_script_extensions_val32( self, code_point: u32, ) -> ScriptExtensionsSet<'a>

source

pub fn has_script(self, ch: char, script: Script) -> bool

Returns whether script is contained in the Script_Extensions property value if the code_point has Script_Extensions, otherwise if the code point does not have Script_Extensions then returns whether the Script property value matches.

Some characters are commonly used in multiple scripts. For more information, see UAX #24: http://www.unicode.org/reports/tr24/.

§Examples
use icu::properties::script::ScriptWithExtensions;
use icu::properties::props::Script;

let swe = ScriptWithExtensions::new();

// U+0650 ARABIC KASRA
assert!(!swe.has_script('\u{0650}', Script::Inherited)); // main Script value
assert!(swe.has_script('\u{0650}', Script::Arabic));
assert!(swe.has_script('\u{0650}', Script::Syriac));
assert!(!swe.has_script('\u{0650}', Script::Thaana));

// U+0660 ARABIC-INDIC DIGIT ZERO
assert!(!swe.has_script('٠', Script::Common)); // main Script value
assert!(swe.has_script('٠', Script::Arabic));
assert!(!swe.has_script('٠', Script::Syriac));
assert!(swe.has_script('٠', Script::Thaana));

// U+FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM
assert!(!swe.has_script('ﷲ', Script::Common));
assert!(swe.has_script('ﷲ', Script::Arabic)); // main Script value
assert!(!swe.has_script('ﷲ', Script::Syriac));
assert!(swe.has_script('ﷲ', Script::Thaana));
source

pub fn has_script32(self, code_point: u32, script: Script) -> bool

source

pub fn get_script_extensions_ranges( self, script: Script, ) -> impl Iterator<Item = RangeInclusive<u32>> + 'a

Returns all of the matching CodePointMapRanges for the given Script in which has_script will return true for all of the contained code points.

§Examples
use icu::properties::props::Script;
use icu::properties::script::ScriptWithExtensions;

let swe = ScriptWithExtensions::new();

let syriac_script_extensions_ranges =
    swe.get_script_extensions_ranges(Script::Syriac);

let exp_ranges = [
    0x060C..=0x060C, // ARABIC COMMA
    0x061B..=0x061C, // ARABIC SEMICOLON, ARABIC LETTER MARK
    0x061F..=0x061F, // ARABIC QUESTION MARK
    0x0640..=0x0640, // ARABIC TATWEEL
    0x064B..=0x0655, // ARABIC FATHATAN..ARABIC HAMZA BELOW
    0x0670..=0x0670, // ARABIC LETTER SUPERSCRIPT ALEF
    0x0700..=0x070D, // Syriac block begins at U+0700
    0x070F..=0x074A, // Syriac block
    0x074D..=0x074F, // Syriac block ends at U+074F
    0x0860..=0x086A, // Syriac Supplement block is U+0860..=U+086F
    0x1DF8..=0x1DF8, // U+1DF8 COMBINING DOT ABOVE LEFT
    0x1DFA..=0x1DFA, // U+1DFA COMBINING DOT BELOW LEFT
];

assert_eq!(
    syriac_script_extensions_ranges.collect::<Vec<_>>(),
    exp_ranges
);
source

pub fn get_script_extensions_set( self, script: Script, ) -> CodePointInversionList<'a>

Returns a CodePointInversionList for the given Script which represents all code points for which has_script will return true.

§Examples
use icu::properties::script::ScriptWithExtensions;
use icu::properties::props::Script;

let swe = ScriptWithExtensions::new();

let syriac = swe.get_script_extensions_set(Script::Syriac);

assert!(!syriac.contains('؞')); // ARABIC TRIPLE DOT PUNCTUATION MARK
assert!(syriac.contains('؟')); // ARABIC QUESTION MARK
assert!(!syriac.contains('ؠ')); // ARABIC LETTER KASHMIRI YEH

assert!(syriac.contains('܀')); // SYRIAC END OF PARAGRAPH
assert!(syriac.contains('\u{074A}')); // SYRIAC BARREKH
assert!(!syriac.contains('\u{074B}')); // unassigned
assert!(syriac.contains('ݏ')); // SYRIAC LETTER SOGDIAN FE
assert!(!syriac.contains('ݐ')); // ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW

assert!(syriac.contains('\u{1DF8}')); // COMBINING DOT ABOVE LEFT
assert!(!syriac.contains('\u{1DF9}')); // COMBINING WIDE INVERTED BRIDGE BELOW
assert!(syriac.contains('\u{1DFA}')); // COMBINING DOT BELOW LEFT
assert!(!syriac.contains('\u{1DFB}')); // COMBINING DELETION MARK
source§

impl ScriptWithExtensionsBorrowed<'static>

source

pub fn new() -> ScriptWithExtensionsBorrowed<'static>

Creates a new instance of ScriptWithExtensionsBorrowed using compiled data.

Enabled with the compiled_data Cargo feature.

📚 Help choosing a constructor

source

pub const fn static_to_owned(self) -> ScriptWithExtensions

Cheaply converts a [ScriptWithExtensionsBorrowed<'static>] into a ScriptWithExtensions.

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

Trait Implementations§

source§

impl<'a> Clone for ScriptWithExtensionsBorrowed<'a>

source§

fn clone(&self) -> ScriptWithExtensionsBorrowed<'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 ScriptWithExtensionsBorrowed<'a>

source§

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

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

impl Default for ScriptWithExtensionsBorrowed<'static>

source§

fn default() -> ScriptWithExtensionsBorrowed<'static>

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

impl<'a> Copy for ScriptWithExtensionsBorrowed<'a>

Auto Trait Implementations§

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,