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
An uppercase letter
pub const Lu: GeneralCategoryGroup = Self::UppercaseLetter
pub const LowercaseLetter: GeneralCategoryGroup
Sourcepub const TitlecaseLetter: GeneralCategoryGroup
pub const TitlecaseLetter: GeneralCategoryGroup
A digraphic letter, with first part uppercase
pub const Lt: Self = Self::TitlecaseLetter
Sourcepub const ModifierLetter: GeneralCategoryGroup
pub const ModifierLetter: GeneralCategoryGroup
A modifier letter
pub const Lm: Self = Self::ModifierLetter
Sourcepub const OtherLetter: GeneralCategoryGroup
pub const OtherLetter: GeneralCategoryGroup
Other letters, including syllables and ideographs
pub const Lo: Self = Self::OtherLetter
Sourcepub const CasedLetter: GeneralCategoryGroup
pub const CasedLetter: GeneralCategoryGroup
The union of UppercaseLetter, LowercaseLetter, and TitlecaseLetter
pub const LC: Self = Self::CasedLetter
Sourcepub const Letter: GeneralCategoryGroup
pub const Letter: GeneralCategoryGroup
The union of all letter categories
pub const L: Self = Self::Letter
Sourcepub const NonspacingMark: GeneralCategoryGroup
pub const NonspacingMark: GeneralCategoryGroup
A nonspacing combining mark (zero advance width)
pub const Mn: Self = Self::NonspacingMark
Sourcepub const EnclosingMark: GeneralCategoryGroup
pub const EnclosingMark: GeneralCategoryGroup
An enclosing combining mark
pub const Me: Self = Self::EnclosingMark
Sourcepub const SpacingMark: GeneralCategoryGroup
pub const SpacingMark: GeneralCategoryGroup
A spacing combining mark (positive advance width)
pub const Mc: Self = Self::SpacingMark
Sourcepub const Mark: GeneralCategoryGroup
pub const Mark: GeneralCategoryGroup
The union of all mark categories
pub const M: Self = Self::Mark
Sourcepub const DecimalNumber: GeneralCategoryGroup
pub const DecimalNumber: GeneralCategoryGroup
A decimal digit
pub const Nd: Self = Self::DecimalNumber
Sourcepub const LetterNumber: GeneralCategoryGroup
pub const LetterNumber: GeneralCategoryGroup
A letterlike numeric character
pub const Nl: Self = Self::LetterNumber
Sourcepub const OtherNumber: GeneralCategoryGroup
pub const OtherNumber: GeneralCategoryGroup
A numeric character of other type
pub const No: Self = Self::OtherNumber
Sourcepub const Number: GeneralCategoryGroup
pub const Number: GeneralCategoryGroup
The union of all number categories
pub const N: Self = Self::Number
Sourcepub const SpaceSeparator: GeneralCategoryGroup
pub const SpaceSeparator: GeneralCategoryGroup
A space character (of various non-zero widths)
pub const Zs: Self = Self::SpaceSeparator
Sourcepub const LineSeparator: GeneralCategoryGroup
pub const LineSeparator: GeneralCategoryGroup
U+2028 LINE SEPARATOR only
pub const Zl: Self = Self::LineSeparator
Sourcepub const ParagraphSeparator: GeneralCategoryGroup
pub const ParagraphSeparator: GeneralCategoryGroup
U+2029 PARAGRAPH SEPARATOR only
pub const Zp: Self = Self::ParagraphSeparator
Sourcepub const Separator: GeneralCategoryGroup
pub const Separator: GeneralCategoryGroup
The union of all separator categories
pub const Z: Self = Self::Separator
Sourcepub const Control: GeneralCategoryGroup
pub const Control: GeneralCategoryGroup
A C0 or C1 control code
pub const Cc: Self = Self::Control
Sourcepub const Format: GeneralCategoryGroup
pub const Format: GeneralCategoryGroup
A format control character
pub const Cf: Self = Self::Format
Sourcepub const PrivateUse: GeneralCategoryGroup
pub const PrivateUse: GeneralCategoryGroup
A private-use character
pub const Co: Self = Self::PrivateUse
Sourcepub const Surrogate: GeneralCategoryGroup
pub const Surrogate: GeneralCategoryGroup
A surrogate code point
pub const Cs: Self = Self::Surrogate
Sourcepub const Unassigned: GeneralCategoryGroup
pub const Unassigned: GeneralCategoryGroup
A reserved unassigned code point or a noncharacter
pub const Cn: Self = Self::Unassigned
Sourcepub const Other: GeneralCategoryGroup
pub const Other: GeneralCategoryGroup
The union of all control code, reserved, and unassigned categories
pub const C: Self = Self::Other
Sourcepub const DashPunctuation: GeneralCategoryGroup
pub const DashPunctuation: GeneralCategoryGroup
A dash or hyphen punctuation mark
pub const Pd: Self = Self::DashPunctuation
Sourcepub const OpenPunctuation: GeneralCategoryGroup
pub const OpenPunctuation: GeneralCategoryGroup
An opening punctuation mark (of a pair)
pub const Ps: Self = Self::OpenPunctuation
Sourcepub const ClosePunctuation: GeneralCategoryGroup
pub const ClosePunctuation: GeneralCategoryGroup
A closing punctuation mark (of a pair)
pub const Pe: Self = Self::ClosePunctuation
Sourcepub const ConnectorPunctuation: GeneralCategoryGroup
pub const ConnectorPunctuation: GeneralCategoryGroup
A connecting punctuation mark, like a tie
pub const Pc: Self = Self::ConnectorPunctuation
Sourcepub const InitialPunctuation: GeneralCategoryGroup
pub const InitialPunctuation: GeneralCategoryGroup
An initial quotation mark
pub const Pi: Self = Self::InitialPunctuation
Sourcepub const FinalPunctuation: GeneralCategoryGroup
pub const FinalPunctuation: GeneralCategoryGroup
A final quotation mark
pub const Pf: Self = Self::FinalPunctuation
Sourcepub const OtherPunctuation: GeneralCategoryGroup
pub const OtherPunctuation: GeneralCategoryGroup
A punctuation mark of other type
pub const Po: Self = Self::OtherPunctuation
Sourcepub const Punctuation: GeneralCategoryGroup
pub const Punctuation: GeneralCategoryGroup
The union of all punctuation categories
pub const P: Self = Self::Punctuation
Sourcepub const MathSymbol: GeneralCategoryGroup
pub const MathSymbol: GeneralCategoryGroup
A symbol of mathematical use
pub const Sm: Self = Self::MathSymbol
Sourcepub const CurrencySymbol: GeneralCategoryGroup
pub const CurrencySymbol: GeneralCategoryGroup
A currency sign
pub const Sc: Self = Self::CurrencySymbol
Sourcepub const ModifierSymbol: GeneralCategoryGroup
pub const ModifierSymbol: GeneralCategoryGroup
A non-letterlike modifier symbol
pub const Sk: Self = Self::ModifierSymbol
Sourcepub const OtherSymbol: GeneralCategoryGroup
pub const OtherSymbol: GeneralCategoryGroup
A symbol of other type
pub const So: Self = Self::OtherSymbol
Sourcepub const Symbol: GeneralCategoryGroup
pub const Symbol: GeneralCategoryGroup
The union of all symbol categories
pub const S: Self = Self::Symbol
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::CodePointMapData;
use icu::properties::props::{GeneralCategory, GeneralCategoryGroup};
let gc = CodePointMapData::<GeneralCategory>::new();
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.get('\u{0301}'), GeneralCategory::NonspacingMark);
assert!(GeneralCategoryGroup::Mark.contains(gc.get('\u{0301}')));
assert!(!GeneralCategoryGroup::Letter.contains(gc.get('\u{0301}')));
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.get('\u{E007F}'), GeneralCategory::Format);
assert!(GeneralCategoryGroup::Other.contains(gc.get('\u{E007F}')));
assert!(!GeneralCategoryGroup::Separator.contains(gc.get('\u{E007F}')));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::props::{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::props::{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::props::{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::props::{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::props::{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));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 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for GeneralCategoryGroup
Source§impl Debug for GeneralCategoryGroup
impl Debug for GeneralCategoryGroup
impl Eq 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
impl ParseableEnumeratedProperty for GeneralCategoryGroup
Source§impl PartialEq for GeneralCategoryGroup
impl PartialEq for GeneralCategoryGroup
impl StructuralPartialEq 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.