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>
impl<'a> ScriptWithExtensionsBorrowed<'a>
Sourcepub fn get_script_val(self, ch: char) -> Script
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);
Sourcepub fn get_script_val32(self, code_point: u32) -> Script
pub fn get_script_val32(self, code_point: u32) -> Script
See Self::get_script_val
.
Sourcepub fn get_script_extensions_val(self, ch: char) -> ScriptExtensionsSet<'a>
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]
);
Sourcepub fn get_script_extensions_val32(
self,
code_point: u32,
) -> ScriptExtensionsSet<'a>
pub fn get_script_extensions_val32( self, code_point: u32, ) -> ScriptExtensionsSet<'a>
Sourcepub fn has_script(self, ch: char, script: Script) -> bool
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));
Sourcepub fn has_script32(self, code_point: u32, script: Script) -> bool
pub fn has_script32(self, code_point: u32, script: Script) -> bool
See Self::has_script
.
Sourcepub fn get_script_extensions_ranges(
self,
script: Script,
) -> impl Iterator<Item = RangeInclusive<u32>> + 'a
pub fn get_script_extensions_ranges( self, script: Script, ) -> impl Iterator<Item = RangeInclusive<u32>> + 'a
Returns all of the matching CodePointMapRange
s 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 = [
0x0303..=0x0304, // COMBINING TILDE..COMBINING MACRON
0x0307..=0x0308, // COMBINING DOT ABOVE..COMBINING DIAERESIS
0x030A..=0x030A, // COMBINING RING ABOVE
0x0320..=0x0320, // COMBINING MINUS SIGN BELOW
0x0323..=0x0325, // COMBINING DOT BELOW..COMBINING RING BELOW
0x032D..=0x032E, // COMBINING CIRCUMFLEX ACCENT BELOW..COMBINING BREVE BELOW
0x0330..=0x0330, // COMBINING TILDE BELOW
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, // COMBINING DOT ABOVE LEFT
0x1DFA..=0x1DFA, // COMBINING DOT BELOW LEFT
];
assert_eq!(
syriac_script_extensions_ranges.collect::<Vec<_>>(),
exp_ranges
);
Source§impl ScriptWithExtensionsBorrowed<'static>
impl ScriptWithExtensionsBorrowed<'static>
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new instance of ScriptWithExtensionsBorrowed
using compiled data.
✨ Enabled with the compiled_data
Cargo feature.
Sourcepub const fn static_to_owned(self) -> ScriptWithExtensions
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>
impl<'a> Clone for ScriptWithExtensionsBorrowed<'a>
Source§fn clone(&self) -> ScriptWithExtensionsBorrowed<'a>
fn clone(&self) -> ScriptWithExtensionsBorrowed<'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 ScriptWithExtensionsBorrowed<'a>
impl<'a> Debug for ScriptWithExtensionsBorrowed<'a>
Source§impl Default for ScriptWithExtensionsBorrowed<'static>
impl Default for ScriptWithExtensionsBorrowed<'static>
impl<'a> Copy for ScriptWithExtensionsBorrowed<'a>
Auto Trait Implementations§
impl<'a> Freeze for ScriptWithExtensionsBorrowed<'a>
impl<'a> RefUnwindSafe for ScriptWithExtensionsBorrowed<'a>
impl<'a> Send for ScriptWithExtensionsBorrowed<'a>
impl<'a> Sync for ScriptWithExtensionsBorrowed<'a>
impl<'a> Unpin for ScriptWithExtensionsBorrowed<'a>
impl<'a> UnwindSafe for ScriptWithExtensionsBorrowed<'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,
impl<T> ErasedDestructor for Twhere
T: 'static,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 8 bytes