pub struct GeneralCategoryGroup(/* private fields */);
Expand description
Groupings of multiple General_Category property values.
Instances of GeneralCategoryGroup
represent the defined multi-category
values that are useful for users in certain contexts, such as regex. In
other words, unlike GeneralCategory
, this supports groups of general
categories: for example, Letter
/// is the union of UppercaseLetter
,
LowercaseLetter
, etc.
See https://www.unicode.org/reports/tr44/ .
The discriminants correspond to the U_GC_XX_MASK
constants in ICU4C.
Unlike GeneralCategory
, this supports groups of general categories: for example, Letter
is the union of UppercaseLetter
, LowercaseLetter
, etc.
See UCharCategory
and U_GET_GC_MASK
in ICU4C.
Implementations§
Source§impl GeneralCategoryGroup
impl GeneralCategoryGroup
Sourcepub const UppercaseLetter: GeneralCategoryGroup = _
pub const UppercaseLetter: GeneralCategoryGroup = _
(Lu
) An uppercase letter
Sourcepub const LowercaseLetter: GeneralCategoryGroup = _
pub const LowercaseLetter: GeneralCategoryGroup = _
(Ll
) A lowercase letter
Sourcepub const TitlecaseLetter: GeneralCategoryGroup = _
pub const TitlecaseLetter: GeneralCategoryGroup = _
(Lt
) A digraphic letter, with first part uppercase
Sourcepub const ModifierLetter: GeneralCategoryGroup = _
pub const ModifierLetter: GeneralCategoryGroup = _
(Lm
) A modifier letter
Sourcepub const OtherLetter: GeneralCategoryGroup = _
pub const OtherLetter: GeneralCategoryGroup = _
(Lo
) Other letters, including syllables and ideographs
Sourcepub const CasedLetter: GeneralCategoryGroup = _
pub const CasedLetter: GeneralCategoryGroup = _
(LC
) The union of UppercaseLetter, LowercaseLetter, and TitlecaseLetter
Sourcepub const Letter: GeneralCategoryGroup = _
pub const Letter: GeneralCategoryGroup = _
(L
) The union of all letter categories
Sourcepub const NonspacingMark: GeneralCategoryGroup = _
pub const NonspacingMark: GeneralCategoryGroup = _
(Mn
) A nonspacing combining mark (zero advance width)
Sourcepub const EnclosingMark: GeneralCategoryGroup = _
pub const EnclosingMark: GeneralCategoryGroup = _
(Mc
) A spacing combining mark (positive advance width)
Sourcepub const SpacingMark: GeneralCategoryGroup = _
pub const SpacingMark: GeneralCategoryGroup = _
(Me
) An enclosing combining mark
Sourcepub const Mark: GeneralCategoryGroup = _
pub const Mark: GeneralCategoryGroup = _
(M
) The union of all mark categories
Sourcepub const DecimalNumber: GeneralCategoryGroup = _
pub const DecimalNumber: GeneralCategoryGroup = _
(Nd
) A decimal digit
Sourcepub const LetterNumber: GeneralCategoryGroup = _
pub const LetterNumber: GeneralCategoryGroup = _
(Nl
) A letterlike numeric character
Sourcepub const OtherNumber: GeneralCategoryGroup = _
pub const OtherNumber: GeneralCategoryGroup = _
(No
) A numeric character of other type
Sourcepub const Number: GeneralCategoryGroup = _
pub const Number: GeneralCategoryGroup = _
(N
) The union of all number categories
Sourcepub const SpaceSeparator: GeneralCategoryGroup = _
pub const SpaceSeparator: GeneralCategoryGroup = _
(Zs
) A space character (of various non-zero widths)
Sourcepub const LineSeparator: GeneralCategoryGroup = _
pub const LineSeparator: GeneralCategoryGroup = _
(Zl
) U+2028 LINE SEPARATOR only
Sourcepub const ParagraphSeparator: GeneralCategoryGroup = _
pub const ParagraphSeparator: GeneralCategoryGroup = _
(Zp
) U+2029 PARAGRAPH SEPARATOR only
Sourcepub const Separator: GeneralCategoryGroup = _
pub const Separator: GeneralCategoryGroup = _
(Z
) The union of all separator categories
Sourcepub const Control: GeneralCategoryGroup = _
pub const Control: GeneralCategoryGroup = _
(Cc
) A C0 or C1 control code
Sourcepub const Format: GeneralCategoryGroup = _
pub const Format: GeneralCategoryGroup = _
(Cf
) A format control character
Sourcepub const PrivateUse: GeneralCategoryGroup = _
pub const PrivateUse: GeneralCategoryGroup = _
(Co
) A private-use character
Sourcepub const Surrogate: GeneralCategoryGroup = _
pub const Surrogate: GeneralCategoryGroup = _
(Cs
) A surrogate code point
Sourcepub const Unassigned: GeneralCategoryGroup = _
pub const Unassigned: GeneralCategoryGroup = _
(Cn
) A reserved unassigned code point or a noncharacter
Sourcepub const Other: GeneralCategoryGroup = _
pub const Other: GeneralCategoryGroup = _
(C
) The union of all control code, reserved, and unassigned categories
Sourcepub const DashPunctuation: GeneralCategoryGroup = _
pub const DashPunctuation: GeneralCategoryGroup = _
(Pd
) A dash or hyphen punctuation mark
Sourcepub const OpenPunctuation: GeneralCategoryGroup = _
pub const OpenPunctuation: GeneralCategoryGroup = _
(Ps
) An opening punctuation mark (of a pair)
Sourcepub const ClosePunctuation: GeneralCategoryGroup = _
pub const ClosePunctuation: GeneralCategoryGroup = _
(Pe
) A closing punctuation mark (of a pair)
Sourcepub const ConnectorPunctuation: GeneralCategoryGroup = _
pub const ConnectorPunctuation: GeneralCategoryGroup = _
(Pc
) A connecting punctuation mark, like a tie
Sourcepub const InitialPunctuation: GeneralCategoryGroup = _
pub const InitialPunctuation: GeneralCategoryGroup = _
(Pi
) An initial quotation mark
Sourcepub const FinalPunctuation: GeneralCategoryGroup = _
pub const FinalPunctuation: GeneralCategoryGroup = _
(Pf
) A final quotation mark
Sourcepub const OtherPunctuation: GeneralCategoryGroup = _
pub const OtherPunctuation: GeneralCategoryGroup = _
(Po
) A punctuation mark of other type
Sourcepub const Punctuation: GeneralCategoryGroup = _
pub const Punctuation: GeneralCategoryGroup = _
(P
) The union of all punctuation categories
Sourcepub const MathSymbol: GeneralCategoryGroup = _
pub const MathSymbol: GeneralCategoryGroup = _
(Sm
) A symbol of mathematical use
Sourcepub const CurrencySymbol: GeneralCategoryGroup = _
pub const CurrencySymbol: GeneralCategoryGroup = _
(Sc
) A currency sign
Sourcepub const ModifierSymbol: GeneralCategoryGroup = _
pub const ModifierSymbol: GeneralCategoryGroup = _
(Sk
) A non-letterlike modifier symbol
Sourcepub const OtherSymbol: GeneralCategoryGroup = _
pub const OtherSymbol: GeneralCategoryGroup = _
(So
) A symbol of other type
Sourcepub const Symbol: GeneralCategoryGroup = _
pub const Symbol: GeneralCategoryGroup = _
(S
) The union of all symbol categories
Sourcepub const fn contains(&self, val: GeneralCategory) -> bool
pub const fn contains(&self, val: GeneralCategory) -> bool
Return whether the code point belongs in the provided multi-value category.
use icu::properties::{maps, GeneralCategory, GeneralCategoryGroup};
let gc = maps::general_category();
assert_eq!(gc.get('A'), GeneralCategory::UppercaseLetter);
assert!(GeneralCategoryGroup::CasedLetter.contains(gc.get('A')));
// U+0B1E ORIYA LETTER NYA
assert_eq!(gc.get('ଞ'), GeneralCategory::OtherLetter);
assert!(GeneralCategoryGroup::Letter.contains(gc.get('ଞ')));
assert!(!GeneralCategoryGroup::CasedLetter.contains(gc.get('ଞ')));
// U+0301 COMBINING ACUTE ACCENT
assert_eq!(gc.get32(0x0301), GeneralCategory::NonspacingMark);
assert!(GeneralCategoryGroup::Mark.contains(gc.get32(0x0301)));
assert!(!GeneralCategoryGroup::Letter.contains(gc.get32(0x0301)));
assert_eq!(gc.get('0'), GeneralCategory::DecimalNumber);
assert!(GeneralCategoryGroup::Number.contains(gc.get('0')));
assert!(!GeneralCategoryGroup::Mark.contains(gc.get('0')));
assert_eq!(gc.get('('), GeneralCategory::OpenPunctuation);
assert!(GeneralCategoryGroup::Punctuation.contains(gc.get('(')));
assert!(!GeneralCategoryGroup::Number.contains(gc.get('(')));
// U+2713 CHECK MARK
assert_eq!(gc.get('✓'), GeneralCategory::OtherSymbol);
assert!(GeneralCategoryGroup::Symbol.contains(gc.get('✓')));
assert!(!GeneralCategoryGroup::Punctuation.contains(gc.get('✓')));
assert_eq!(gc.get(' '), GeneralCategory::SpaceSeparator);
assert!(GeneralCategoryGroup::Separator.contains(gc.get(' ')));
assert!(!GeneralCategoryGroup::Symbol.contains(gc.get(' ')));
// U+E007F CANCEL TAG
assert_eq!(gc.get32(0xE007F), GeneralCategory::Format);
assert!(GeneralCategoryGroup::Other.contains(gc.get32(0xE007F)));
assert!(!GeneralCategoryGroup::Separator.contains(gc.get32(0xE007F)));
Sourcepub const fn complement(self) -> Self
pub const fn complement(self) -> Self
Produce a GeneralCategoryGroup that is the inverse of this one
§Example
use icu::properties::{GeneralCategory, GeneralCategoryGroup};
let letter = GeneralCategoryGroup::Letter;
let not_letter = letter.complement();
assert!(not_letter.contains(GeneralCategory::MathSymbol));
assert!(!letter.contains(GeneralCategory::MathSymbol));
assert!(not_letter.contains(GeneralCategory::OtherPunctuation));
assert!(!letter.contains(GeneralCategory::OtherPunctuation));
assert!(!not_letter.contains(GeneralCategory::UppercaseLetter));
assert!(letter.contains(GeneralCategory::UppercaseLetter));
Sourcepub const fn all() -> Self
pub const fn all() -> Self
Return the group representing all GeneralCategory values
§Example
use icu::properties::{GeneralCategory, GeneralCategoryGroup};
let all = GeneralCategoryGroup::all();
assert!(all.contains(GeneralCategory::MathSymbol));
assert!(all.contains(GeneralCategory::OtherPunctuation));
assert!(all.contains(GeneralCategory::UppercaseLetter));
Sourcepub const fn empty() -> Self
pub const fn empty() -> Self
Return the empty group
§Example
use icu::properties::{GeneralCategory, GeneralCategoryGroup};
let empty = GeneralCategoryGroup::empty();
assert!(!empty.contains(GeneralCategory::MathSymbol));
assert!(!empty.contains(GeneralCategory::OtherPunctuation));
assert!(!empty.contains(GeneralCategory::UppercaseLetter));
Sourcepub const fn union(self, other: Self) -> Self
pub const fn union(self, other: Self) -> Self
Take the union of two groups
§Example
use icu::properties::{GeneralCategory, GeneralCategoryGroup};
let letter = GeneralCategoryGroup::Letter;
let symbol = GeneralCategoryGroup::Symbol;
let union = letter.union(symbol);
assert!(union.contains(GeneralCategory::MathSymbol));
assert!(!union.contains(GeneralCategory::OtherPunctuation));
assert!(union.contains(GeneralCategory::UppercaseLetter));
Sourcepub const fn intersection(self, other: Self) -> Self
pub const fn intersection(self, other: Self) -> Self
Take the intersection of two groups
§Example
use icu::properties::{GeneralCategory, GeneralCategoryGroup};
let letter = GeneralCategoryGroup::Letter;
let lu = GeneralCategoryGroup::UppercaseLetter;
let intersection = letter.intersection(lu);
assert!(!intersection.contains(GeneralCategory::MathSymbol));
assert!(!intersection.contains(GeneralCategory::OtherPunctuation));
assert!(intersection.contains(GeneralCategory::UppercaseLetter));
assert!(!intersection.contains(GeneralCategory::LowercaseLetter));
Source§impl GeneralCategoryGroup
impl GeneralCategoryGroup
Sourcepub const fn name_to_enum_mapper() -> PropertyValueNameToEnumMapperBorrowed<'static, GeneralCategoryGroup>
pub const fn name_to_enum_mapper() -> PropertyValueNameToEnumMapperBorrowed<'static, GeneralCategoryGroup>
Return a PropertyValueNameToEnumMapper
, capable of looking up values
from strings for the General_Category_Mask
mask property.
✨ Enabled with the compiled_data
Cargo feature.
§Example
use icu::properties::GeneralCategoryGroup;
let lookup = GeneralCategoryGroup::name_to_enum_mapper();
// short name for value
assert_eq!(lookup.get_strict("L"), Some(GeneralCategoryGroup::Letter));
assert_eq!(lookup.get_strict("LC"), Some(GeneralCategoryGroup::CasedLetter));
assert_eq!(lookup.get_strict("Lu"), Some(GeneralCategoryGroup::UppercaseLetter));
assert_eq!(lookup.get_strict("Zp"), Some(GeneralCategoryGroup::ParagraphSeparator));
assert_eq!(lookup.get_strict("P"), Some(GeneralCategoryGroup::Punctuation));
// long name for value
assert_eq!(lookup.get_strict("Letter"), Some(GeneralCategoryGroup::Letter));
assert_eq!(lookup.get_strict("Cased_Letter"), Some(GeneralCategoryGroup::CasedLetter));
assert_eq!(lookup.get_strict("Uppercase_Letter"), Some(GeneralCategoryGroup::UppercaseLetter));
// alias name
assert_eq!(lookup.get_strict("punct"), Some(GeneralCategoryGroup::Punctuation));
// name has incorrect casing
assert_eq!(lookup.get_strict("letter"), None);
// loose matching of name
assert_eq!(lookup.get_loose("letter"), Some(GeneralCategoryGroup::Letter));
// fake property
assert_eq!(lookup.get_strict("EverythingLol"), None);
Sourcepub fn get_name_to_enum_mapper(
provider: &(impl DataProvider<GeneralCategoryMaskNameToValueV1Marker> + ?Sized),
) -> Result<PropertyValueNameToEnumMapper<GeneralCategoryGroup>, PropertiesError>
pub fn get_name_to_enum_mapper( provider: &(impl DataProvider<GeneralCategoryMaskNameToValueV1Marker> + ?Sized), ) -> Result<PropertyValueNameToEnumMapper<GeneralCategoryGroup>, PropertiesError>
A version of GeneralCategoryGroup::name_to_enum_mapper()
that uses custom data provided by a DataProvider
.
Trait Implementations§
Source§impl AsULE for GeneralCategoryGroup
impl AsULE for GeneralCategoryGroup
Source§type ULE = RawBytesULE<2>
type ULE = RawBytesULE<2>
Self
. Read moreSource§fn to_unaligned(self) -> Self::ULE
fn to_unaligned(self) -> Self::ULE
Source§fn from_unaligned(ule: Self::ULE) -> Self
fn from_unaligned(ule: Self::ULE) -> Self
Source§impl Clone for GeneralCategoryGroup
impl Clone for GeneralCategoryGroup
Source§fn clone(&self) -> GeneralCategoryGroup
fn clone(&self) -> GeneralCategoryGroup
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for GeneralCategoryGroup
impl Debug for GeneralCategoryGroup
Source§impl From<GeneralCategory> for GeneralCategoryGroup
impl From<GeneralCategory> for GeneralCategoryGroup
Source§fn from(subcategory: GeneralCategory) -> Self
fn from(subcategory: GeneralCategory) -> Self
Source§impl From<GeneralCategoryGroup> for u32
impl From<GeneralCategoryGroup> for u32
Source§fn from(group: GeneralCategoryGroup) -> Self
fn from(group: GeneralCategoryGroup) -> Self
Source§impl From<u32> for GeneralCategoryGroup
impl From<u32> for GeneralCategoryGroup
Source§impl PartialEq for GeneralCategoryGroup
impl PartialEq for GeneralCategoryGroup
Source§impl TrieValue for GeneralCategoryGroup
impl TrieValue for GeneralCategoryGroup
Source§type TryFromU32Error = TryFromIntError
type TryFromU32Error = TryFromIntError
Source§fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error>
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error>
u32
first.