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

Returns the Script property value for this code point.

Examples
use icu::properties::{script, Script};

let data = script::load_script_with_extensions_unstable(&icu_testdata::unstable()).expect("The data should be valid");
let swe = data.as_borrowed();

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

// U+0650 ARABIC KASRA
assert_eq!(swe.get_script_val(0x0650), Script::Inherited); // main Script value
assert_ne!(swe.get_script_val(0x0650), Script::Arabic);
assert_ne!(swe.get_script_val(0x0650), Script::Syriac);
assert_ne!(swe.get_script_val(0x0650), Script::Thaana);

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

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

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, Script};

let data = script::load_script_with_extensions_unstable(&icu_testdata::unstable()).expect("The data should be valid");
let swe = data.as_borrowed();

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

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, Script};

let provider = icu_testdata::unstable();
let data =
    script::load_script_with_extensions_unstable(&icu_testdata::unstable())
        .expect("The data should be valid");
let swe = data.as_borrowed();

// U+0650 ARABIC KASRA
assert!(!swe.has_script(0x0650, Script::Inherited)); // main Script value
assert!(swe.has_script(0x0650, Script::Arabic));
assert!(swe.has_script(0x0650, Script::Syriac));
assert!(!swe.has_script(0x0650, Script::Thaana));

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

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

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::{script, Script};

let data = script::load_script_with_extensions_unstable(&icu_testdata::unstable()).expect("The data should be valid");
let swe = data.as_borrowed();

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

let exp_ranges = vec![
    0x060C..=0x060C, // ARABIC COMMA
    0x061B..=0x061B, // ARABIC SEMICOLON
    0x061C..=0x061C, // 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
];
let mut exp_ranges_iter = exp_ranges.iter();

for act_range in syriac_script_extensions_ranges {
    let exp_range = exp_ranges_iter
        .next()
        .expect("There are too many ranges returned by get_script_extensions_ranges()");
    assert_eq!(act_range.start(), exp_range.start());
    assert_eq!(act_range.end(), exp_range.end());
}
assert!(
    exp_ranges_iter.next().is_none(),
    "There are too few ranges returned by get_script_extensions_ranges()"
);

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

Examples
use icu::properties::{script, Script};

let data = script::load_script_with_extensions_unstable(&icu_testdata::unstable()).expect("The data should be valid");
let swe = data.as_borrowed();

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

assert!(!syriac.contains32(0x061E)); // ARABIC TRIPLE DOT PUNCTUATION MARK
assert!(syriac.contains32(0x061F)); // ARABIC QUESTION MARK
assert!(!syriac.contains32(0x0620)); // ARABIC LETTER KASHMIRI YEH

assert!(syriac.contains32(0x0700)); // SYRIAC END OF PARAGRAPH
assert!(syriac.contains32(0x074A)); // SYRIAC BARREKH
assert!(!syriac.contains32(0x074B)); // unassigned
assert!(syriac.contains32(0x074F)); // SYRIAC LETTER SOGDIAN FE
assert!(!syriac.contains32(0x0750)); // ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW

assert!(syriac.contains32(0x1DF8)); // COMBINING DOT ABOVE LEFT
assert!(!syriac.contains32(0x1DF9)); // COMBINING WIDE INVERTED BRIDGE BELOW
assert!(syriac.contains32(0x1DFA)); // COMBINING DOT BELOW LEFT
assert!(!syriac.contains32(0x1DFB)); // COMBINING DELETION MARK

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.