Struct ScriptWithExtensions

struct ScriptWithExtensions { ... }

A struct that represents the data for the Script and Script_Extensions properties.

Enabled with the compiled_data Cargo feature.

📚 Help choosing a constructor

Most useful methods are on ScriptWithExtensionsBorrowed obtained by calling [ScriptWithExtensions::as_borrowed()]

Examples

use icu::properties::script::ScriptWithExtensions;
use icu::properties::props::Script;
let swe = ScriptWithExtensions::new();

// get the `Script` property value
assert_eq!(swe.get_script_val('ـ'), Script::Common); // U+0640 ARABIC TATWEEL
assert_eq!(swe.get_script_val('\u{0650}'), Script::Inherited); // U+0650 ARABIC KASRA
assert_eq!(swe.get_script_val('٠'), Script::Arabic); // // U+0660 ARABIC-INDIC DIGIT ZERO
assert_eq!(swe.get_script_val(''), Script::Arabic); // U+FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM

// get the `Script_Extensions` property value
assert_eq!(
    swe.get_script_extensions_val('ـ') // U+0640 ARABIC TATWEEL
        .iter().collect::<Vec<_>>(),
    [Script::Arabic, Script::Syriac, Script::Mandaic, Script::Manichaean,
         Script::PsalterPahlavi, Script::Adlam, Script::HanifiRohingya, Script::Sogdian,
         Script::OldUyghur]
);
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]
);

// check containment of a `Script` value in the `Script_Extensions` value
// 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));

// get a `CodePointInversionList` for when `Script` value is contained in `Script_Extensions` value
let syriac = swe.get_script_extensions_set(Script::Syriac);
assert!(syriac.contains('\u{0650}')); // ARABIC KASRA
assert!(!syriac.contains('٠')); // ARABIC-INDIC DIGIT ZERO
assert!(!syriac.contains('')); // ARABIC LIGATURE ALLAH ISOLATED FORM
assert!(syriac.contains('܀')); // SYRIAC END OF PARAGRAPH
assert!(syriac.contains('\u{074A}')); // SYRIAC BARREKH

Implementations

impl ScriptWithExtensions

fn new() -> ScriptWithExtensionsBorrowed<'static>

Creates a new instance of ScriptWithExtensionsBorrowed using compiled data.

Enabled with the compiled_data Cargo feature.

📚 Help choosing a constructor

fn try_new_unstable<impl DataProvider<PropertyScriptWithExtensionsV1> + ?Sized: DataProvider<PropertyScriptWithExtensionsV1> + ?Sized>(provider: &impl DataProvider<PropertyScriptWithExtensionsV1> + ?Sized) -> Result<Self, DataError>

A version of Self::new that uses custom data provided by a DataProvider.

📚 Help choosing a constructor

⚠️ The bounds on provider may change over time, including in SemVer minor releases.
fn as_borrowed(self: &Self) -> ScriptWithExtensionsBorrowed<'_>

Construct a borrowed version of this type that can be queried.

This avoids a potential small underlying cost per API call (ex: contains()) by consolidating it up front.

impl Debug for ScriptWithExtensions

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

impl Freeze for ScriptWithExtensions

impl RefUnwindSafe for ScriptWithExtensions

impl Send for ScriptWithExtensions

impl Sync for ScriptWithExtensions

impl Unpin for ScriptWithExtensions

impl UnsafeUnpin for ScriptWithExtensions

impl UnwindSafe for ScriptWithExtensions

impl<T> Any for ScriptWithExtensions

fn type_id(self: &Self) -> TypeId

impl<T> Borrow for ScriptWithExtensions

fn borrow(self: &Self) -> &T

impl<T> BorrowMut for ScriptWithExtensions

fn borrow_mut(self: &mut Self) -> &mut T

impl<T> ErasedDestructor for ScriptWithExtensions

impl<T> From for ScriptWithExtensions

fn from(t: T) -> T

Returns the argument unchanged.

impl<T, U> Into for ScriptWithExtensions

fn into(self: Self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

impl<T, U> TryFrom for ScriptWithExtensions

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

impl<T, U> TryInto for ScriptWithExtensions

fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>