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::props::{GeneralCategory, GeneralCategoryGroup};
use icu::properties::CodePointMapData;
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§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.impl Copy for GeneralCategoryGroup
impl Eq for GeneralCategoryGroup
impl ParseableEnumeratedProperty for GeneralCategoryGroup
impl StructuralPartialEq for GeneralCategoryGroup
Auto Trait Implementations§
impl Freeze for GeneralCategoryGroup
impl RefUnwindSafe for GeneralCategoryGroup
impl Send for GeneralCategoryGroup
impl Sync for GeneralCategoryGroup
impl Unpin for GeneralCategoryGroup
impl UnwindSafe for GeneralCategoryGroup
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,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more