1pub use crate::names::{NamedEnumeratedProperty, ParseableEnumeratedProperty};
21
22pub use crate::bidi::{BidiMirroringGlyph, BidiPairedBracketType};
23pub use crate::code_point_map::EnumeratedProperty;
24
25macro_rules! make_enumerated_property {
26 (
27 name: $name:literal;
28 short_name: $short_name:literal;
29 ident: $value_ty:path;
30 data_marker: $data_marker:ty;
31 singleton: $singleton:ident;
32 $(ule_ty: $ule_ty:ty;)?
33 ) => {
34 impl crate::private::Sealed for $value_ty {}
35
36 impl EnumeratedProperty for $value_ty {
37 type DataMarker = $data_marker;
38 #[cfg(feature = "compiled_data")]
39 const SINGLETON: &'static crate::provider::PropertyCodePointMap<'static, Self> =
40 crate::provider::Baked::$singleton;
41 const NAME: &'static [u8] = $name.as_bytes();
42 const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
43 }
44
45 $(
46 impl zerovec::ule::AsULE for $value_ty {
47 type ULE = $ule_ty;
48
49 fn to_unaligned(self) -> Self::ULE {
50 self.0.to_unaligned()
51 }
52 fn from_unaligned(unaligned: Self::ULE) -> Self {
53 Self(zerovec::ule::AsULE::from_unaligned(unaligned))
54 }
55 }
56 )?
57 };
58}
59
60#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for BidiClass { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for BidiClass { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for BidiClass {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for BidiClass {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "BidiClass",
&&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for BidiClass {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for BidiClass { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for BidiClass {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for BidiClass {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for BidiClass {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for BidiClass {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
81#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
82#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
84pub struct BidiClass(pub(crate) u8);
85
86impl BidiClass {
87 #[deprecated(
89 since = "2.3.0",
90 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
91 )]
92 pub const fn to_icu4c_value(self) -> u8 {
93 self.0
94 }
95 #[deprecated(
97 since = "2.3.0",
98 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
99 )]
100 pub const fn from_icu4c_value(value: u8) -> Self {
101 Self(value)
102 }
103}
104
105impl Default for BidiClass {
106 fn default() -> Self {
107 Self::LeftToRight
108 }
109}
110
111impl crate::private::Sealed for BidiClass {}
impl EnumeratedProperty for BidiClass {
type DataMarker = crate::provider::PropertyEnumBidiClassV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_BIDI_CLASS_V1;
const NAME: &'static [u8] = "Bidi_Class".as_bytes();
const SHORT_NAME: &'static [u8] = "bc".as_bytes();
}
impl zerovec::ule::AsULE for BidiClass {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
112 name: "Bidi_Class";
113 short_name: "bc";
114 ident: BidiClass;
115 data_marker: crate::provider::PropertyEnumBidiClassV1;
116 singleton: SINGLETON_PROPERTY_ENUM_BIDI_CLASS_V1;
117 ule_ty: u8;
118}
119
120#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for Block { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for Block { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for Block {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u16>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for Block {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "Block",
&&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for Block {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u16>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for Block { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for Block {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for Block {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for Block {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for Block {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
136#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
137#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
139pub struct Block(pub(crate) u16);
140
141impl Default for Block {
142 fn default() -> Self {
143 Self::NoBlock
144 }
145}
146
147impl crate::private::Sealed for Block {}
impl EnumeratedProperty for Block {
type DataMarker = crate::provider::PropertyEnumBlockV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_BLOCK_V1;
const NAME: &'static [u8] = "Block".as_bytes();
const SHORT_NAME: &'static [u8] = "blk".as_bytes();
}
impl zerovec::ule::AsULE for Block {
type ULE = <u16 as zerovec::ule::AsULE>::ULE;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
148 name: "Block";
149 short_name: "blk";
150 ident: Block;
151 data_marker: crate::provider::PropertyEnumBlockV1;
152 singleton: SINGLETON_PROPERTY_ENUM_BLOCK_V1;
153 ule_ty: <u16 as zerovec::ule::AsULE>::ULE;
154}
155
156#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for NumericType { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for NumericType { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for NumericType {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for NumericType {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "NumericType",
&&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for NumericType {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for NumericType { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for NumericType {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for NumericType {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for NumericType {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for NumericType {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
176#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
177#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
179pub struct NumericType(pub(crate) u8);
180
181impl NumericType {
182 #[deprecated(
184 since = "2.3.0",
185 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
186 )]
187 pub const fn to_icu4c_value(self) -> u8 {
188 self.0
189 }
190 #[deprecated(
192 since = "2.3.0",
193 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
194 )]
195 pub const fn from_icu4c_value(value: u8) -> Self {
196 Self(value)
197 }
198}
199
200impl Default for NumericType {
201 fn default() -> Self {
202 Self::None
203 }
204}
205
206impl crate::private::Sealed for NumericType {}
impl EnumeratedProperty for NumericType {
type DataMarker = crate::provider::PropertyEnumNumericTypeV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_NUMERIC_TYPE_V1;
const NAME: &'static [u8] = "Numeric_Type".as_bytes();
const SHORT_NAME: &'static [u8] = "nt".as_bytes();
}
impl zerovec::ule::AsULE for NumericType {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
207 name: "Numeric_Type";
208 short_name: "nt";
209 ident: NumericType;
210 data_marker: crate::provider::PropertyEnumNumericTypeV1;
211 singleton: SINGLETON_PROPERTY_ENUM_NUMERIC_TYPE_V1;
212 ule_ty: u8;
213}
214
215pub use crate::enum_values::GeneralCategory;
239
240#[allow(clippy::derivable_impls)] impl Default for GeneralCategory {
242 fn default() -> Self {
243 Self::Unassigned
244 }
245}
246
247#[derive(#[automatically_derived]impl ::core::marker::Copy for
GeneralCategoryOutOfBoundsError {
}Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for GeneralCategoryOutOfBoundsError {
}
#[automatically_derived]impl ::core::clone::Clone for
GeneralCategoryOutOfBoundsError {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
GeneralCategoryOutOfBoundsError {
}
#[automatically_derived]impl ::core::cmp::PartialEq for
GeneralCategoryOutOfBoundsError {
#[inline]
fn eq(&self, other: &Self) -> bool { true }
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for
GeneralCategoryOutOfBoundsError {
}Eq, #[automatically_derived]impl ::core::cmp::PartialOrd for
GeneralCategoryOutOfBoundsError {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
}
}PartialOrd, #[automatically_derived]impl ::core::cmp::Ord for
GeneralCategoryOutOfBoundsError {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ordering::Equal
}
}Ord, #[automatically_derived]impl ::core::fmt::Debug for
GeneralCategoryOutOfBoundsError {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
"GeneralCategoryOutOfBoundsError")
}
}Debug, #[automatically_derived]impl ::core::hash::Hash for
GeneralCategoryOutOfBoundsError {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {}
}Hash, #[automatically_derived]impl ::core::default::Default for
GeneralCategoryOutOfBoundsError {
#[inline]
fn default() -> Self { GeneralCategoryOutOfBoundsError {} }
}Default)]
248#[non_exhaustive]
250pub struct GeneralCategoryOutOfBoundsError;
251
252impl TryFrom<u8> for GeneralCategory {
253 type Error = GeneralCategoryOutOfBoundsError;
254 fn try_from(val: u8) -> Result<Self, GeneralCategoryOutOfBoundsError> {
257 GeneralCategory::new_from_u8(val).ok_or(GeneralCategoryOutOfBoundsError)
258 }
259}
260
261impl crate::private::Sealed for GeneralCategory {}
impl EnumeratedProperty for GeneralCategory {
type DataMarker = crate::provider::PropertyEnumGeneralCategoryV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_GENERAL_CATEGORY_V1;
const NAME: &'static [u8] = "General_Category".as_bytes();
const SHORT_NAME: &'static [u8] = "gc".as_bytes();
}make_enumerated_property! {
262 name: "General_Category";
263 short_name: "gc";
264 ident: GeneralCategory;
265 data_marker: crate::provider::PropertyEnumGeneralCategoryV1;
266 singleton: SINGLETON_PROPERTY_ENUM_GENERAL_CATEGORY_V1;
267}
268
269#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for GeneralCategoryGroup { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for GeneralCategoryGroup { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for GeneralCategoryGroup {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u32>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for GeneralCategoryGroup { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for GeneralCategoryGroup {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for GeneralCategoryGroup {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f,
"GeneralCategoryGroup", &&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for GeneralCategoryGroup {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u32>;
}
}Eq)]
285#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
287pub struct GeneralCategoryGroup(pub(crate) u32);
288
289impl crate::private::Sealed for GeneralCategoryGroup {}
290
291use GeneralCategory as GC;
292use GeneralCategoryGroup as GCG;
293
294#[allow(non_upper_case_globals, missing_docs)]
295impl GeneralCategoryGroup {
296 pub const UppercaseLetter: GeneralCategoryGroup = GCG(1 << (GC::UppercaseLetter as u32));
298 pub const Lu: GeneralCategoryGroup = Self::UppercaseLetter;
299 pub const Ll: Self = Self::LowercaseLetter;
301 pub const LowercaseLetter: GeneralCategoryGroup = GCG(1 << (GC::LowercaseLetter as u32));
302 pub const TitlecaseLetter: GeneralCategoryGroup = GCG(1 << (GC::TitlecaseLetter as u32));
304 pub const Lt: Self = Self::TitlecaseLetter;
305 pub const ModifierLetter: GeneralCategoryGroup = GCG(1 << (GC::ModifierLetter as u32));
307 pub const Lm: Self = Self::ModifierLetter;
308 pub const OtherLetter: GeneralCategoryGroup = GCG(1 << (GC::OtherLetter as u32));
310 pub const Lo: Self = Self::OtherLetter;
311 pub const CasedLetter: GeneralCategoryGroup = GCG((1 << (GC::UppercaseLetter as u32))
313 | (1 << (GC::LowercaseLetter as u32))
314 | (1 << (GC::TitlecaseLetter as u32)));
315 pub const LC: Self = Self::CasedLetter;
316 pub const Letter: GeneralCategoryGroup = GCG((1 << (GC::UppercaseLetter as u32))
318 | (1 << (GC::LowercaseLetter as u32))
319 | (1 << (GC::TitlecaseLetter as u32))
320 | (1 << (GC::ModifierLetter as u32))
321 | (1 << (GC::OtherLetter as u32)));
322 pub const L: Self = Self::Letter;
323
324 pub const NonspacingMark: GeneralCategoryGroup = GCG(1 << (GC::NonspacingMark as u32));
326 pub const Mn: Self = Self::NonspacingMark;
327 pub const EnclosingMark: GeneralCategoryGroup = GCG(1 << (GC::EnclosingMark as u32));
329 pub const Me: Self = Self::EnclosingMark;
330 pub const SpacingMark: GeneralCategoryGroup = GCG(1 << (GC::SpacingMark as u32));
332 pub const Mc: Self = Self::SpacingMark;
333 pub const Mark: GeneralCategoryGroup = GCG((1 << (GC::NonspacingMark as u32))
335 | (1 << (GC::EnclosingMark as u32))
336 | (1 << (GC::SpacingMark as u32)));
337 pub const M: Self = Self::Mark;
338
339 pub const DecimalNumber: GeneralCategoryGroup = GCG(1 << (GC::DecimalNumber as u32));
341 pub const Nd: Self = Self::DecimalNumber;
342 pub const LetterNumber: GeneralCategoryGroup = GCG(1 << (GC::LetterNumber as u32));
344 pub const Nl: Self = Self::LetterNumber;
345 pub const OtherNumber: GeneralCategoryGroup = GCG(1 << (GC::OtherNumber as u32));
347 pub const No: Self = Self::OtherNumber;
348 pub const Number: GeneralCategoryGroup = GCG((1 << (GC::DecimalNumber as u32))
350 | (1 << (GC::LetterNumber as u32))
351 | (1 << (GC::OtherNumber as u32)));
352 pub const N: Self = Self::Number;
353
354 pub const SpaceSeparator: GeneralCategoryGroup = GCG(1 << (GC::SpaceSeparator as u32));
356 pub const Zs: Self = Self::SpaceSeparator;
357 pub const LineSeparator: GeneralCategoryGroup = GCG(1 << (GC::LineSeparator as u32));
359 pub const Zl: Self = Self::LineSeparator;
360 pub const ParagraphSeparator: GeneralCategoryGroup = GCG(1 << (GC::ParagraphSeparator as u32));
362 pub const Zp: Self = Self::ParagraphSeparator;
363 pub const Separator: GeneralCategoryGroup = GCG((1 << (GC::SpaceSeparator as u32))
365 | (1 << (GC::LineSeparator as u32))
366 | (1 << (GC::ParagraphSeparator as u32)));
367 pub const Z: Self = Self::Separator;
368
369 pub const Control: GeneralCategoryGroup = GCG(1 << (GC::Control as u32));
371 pub const Cc: Self = Self::Control;
372 pub const Format: GeneralCategoryGroup = GCG(1 << (GC::Format as u32));
374 pub const Cf: Self = Self::Format;
375 pub const PrivateUse: GeneralCategoryGroup = GCG(1 << (GC::PrivateUse as u32));
377 pub const Co: Self = Self::PrivateUse;
378 pub const Surrogate: GeneralCategoryGroup = GCG(1 << (GC::Surrogate as u32));
380 pub const Cs: Self = Self::Surrogate;
381 pub const Unassigned: GeneralCategoryGroup = GCG(1 << (GC::Unassigned as u32));
383 pub const Cn: Self = Self::Unassigned;
384 pub const Other: GeneralCategoryGroup = GCG((1 << (GC::Control as u32))
386 | (1 << (GC::Format as u32))
387 | (1 << (GC::PrivateUse as u32))
388 | (1 << (GC::Surrogate as u32))
389 | (1 << (GC::Unassigned as u32)));
390 pub const C: Self = Self::Other;
391
392 pub const DashPunctuation: GeneralCategoryGroup = GCG(1 << (GC::DashPunctuation as u32));
394 pub const Pd: Self = Self::DashPunctuation;
395 pub const OpenPunctuation: GeneralCategoryGroup = GCG(1 << (GC::OpenPunctuation as u32));
397 pub const Ps: Self = Self::OpenPunctuation;
398 pub const ClosePunctuation: GeneralCategoryGroup = GCG(1 << (GC::ClosePunctuation as u32));
400 pub const Pe: Self = Self::ClosePunctuation;
401 pub const ConnectorPunctuation: GeneralCategoryGroup =
403 GCG(1 << (GC::ConnectorPunctuation as u32));
404 pub const Pc: Self = Self::ConnectorPunctuation;
405 pub const InitialPunctuation: GeneralCategoryGroup = GCG(1 << (GC::InitialPunctuation as u32));
407 pub const Pi: Self = Self::InitialPunctuation;
408 pub const FinalPunctuation: GeneralCategoryGroup = GCG(1 << (GC::FinalPunctuation as u32));
410 pub const Pf: Self = Self::FinalPunctuation;
411 pub const OtherPunctuation: GeneralCategoryGroup = GCG(1 << (GC::OtherPunctuation as u32));
413 pub const Po: Self = Self::OtherPunctuation;
414 pub const Punctuation: GeneralCategoryGroup = GCG((1 << (GC::DashPunctuation as u32))
416 | (1 << (GC::OpenPunctuation as u32))
417 | (1 << (GC::ClosePunctuation as u32))
418 | (1 << (GC::ConnectorPunctuation as u32))
419 | (1 << (GC::OtherPunctuation as u32))
420 | (1 << (GC::InitialPunctuation as u32))
421 | (1 << (GC::FinalPunctuation as u32)));
422 pub const P: Self = Self::Punctuation;
423
424 pub const MathSymbol: GeneralCategoryGroup = GCG(1 << (GC::MathSymbol as u32));
426 pub const Sm: Self = Self::MathSymbol;
427 pub const CurrencySymbol: GeneralCategoryGroup = GCG(1 << (GC::CurrencySymbol as u32));
429 pub const Sc: Self = Self::CurrencySymbol;
430 pub const ModifierSymbol: GeneralCategoryGroup = GCG(1 << (GC::ModifierSymbol as u32));
432 pub const Sk: Self = Self::ModifierSymbol;
433 pub const OtherSymbol: GeneralCategoryGroup = GCG(1 << (GC::OtherSymbol as u32));
435 pub const So: Self = Self::OtherSymbol;
436 pub const Symbol: GeneralCategoryGroup = GCG((1 << (GC::MathSymbol as u32))
438 | (1 << (GC::CurrencySymbol as u32))
439 | (1 << (GC::ModifierSymbol as u32))
440 | (1 << (GC::OtherSymbol as u32)));
441 pub const S: Self = Self::Symbol;
442
443 const ALL: u32 = (1 << (GC::FinalPunctuation as u32 + 1)) - 1;
444
445 #[cfg(feature = "datagen")]
446 #[doc(hidden)]
447 pub fn names() -> impl Iterator<Item = (&'static str, Self)> {
448 [
449 ("Lu", Self::UppercaseLetter),
450 ("Ll", Self::LowercaseLetter),
451 ("Lt", Self::TitlecaseLetter),
452 ("Lm", Self::ModifierLetter),
453 ("Lo", Self::OtherLetter),
454 ("LC", Self::CasedLetter),
455 ("L", Self::Letter),
456 ("Mn", Self::NonspacingMark),
457 ("Me", Self::EnclosingMark),
458 ("Mc", Self::SpacingMark),
459 ("M", Self::Mark),
460 ("Nd", Self::DecimalNumber),
461 ("Nl", Self::LetterNumber),
462 ("No", Self::OtherNumber),
463 ("N", Self::Number),
464 ("Zs", Self::SpaceSeparator),
465 ("Zl", Self::LineSeparator),
466 ("Zp", Self::ParagraphSeparator),
467 ("Z", Self::Separator),
468 ("Cc", Self::Control),
469 ("Cf", Self::Format),
470 ("Co", Self::PrivateUse),
471 ("Cs", Self::Surrogate),
472 ("Cn", Self::Unassigned),
473 ("C", Self::Other),
474 ("Pd", Self::DashPunctuation),
475 ("Ps", Self::OpenPunctuation),
476 ("Pe", Self::ClosePunctuation),
477 ("Pc", Self::ConnectorPunctuation),
478 ("Pi", Self::InitialPunctuation),
479 ("Pf", Self::FinalPunctuation),
480 ("Po", Self::OtherPunctuation),
481 ("P", Self::Punctuation),
482 ("Sm", Self::MathSymbol),
483 ("Sc", Self::CurrencySymbol),
484 ("Sk", Self::ModifierSymbol),
485 ("So", Self::OtherSymbol),
486 ("S", Self::Symbol),
487 ]
488 .into_iter()
489 }
490
491 pub const fn contains(self, val: GeneralCategory) -> bool {
535 0 != (1 << (val as u32)) & self.0
536 }
537
538 pub const fn complement(self) -> Self {
556 GeneralCategoryGroup(!self.0 & Self::ALL)
559 }
560
561 pub const fn all() -> Self {
575 Self(Self::ALL)
576 }
577
578 pub const fn empty() -> Self {
592 Self(0)
593 }
594
595 pub const fn union(self, other: Self) -> Self {
611 Self(self.0 | other.0)
612 }
613
614 pub const fn intersection(self, other: Self) -> Self {
631 Self(self.0 & other.0)
632 }
633}
634
635impl From<GeneralCategory> for GeneralCategoryGroup {
636 fn from(subcategory: GeneralCategory) -> Self {
637 GeneralCategoryGroup(1 << (subcategory as u32))
638 }
639}
640impl From<u32> for GeneralCategoryGroup {
641 fn from(mask: u32) -> Self {
642 GeneralCategoryGroup(mask & Self::ALL)
645 }
646}
647impl From<GeneralCategoryGroup> for u32 {
648 fn from(group: GeneralCategoryGroup) -> Self {
649 group.0
650 }
651}
652
653#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for Script { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for Script { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for Script {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u16>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for Script {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "Script",
&&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for Script {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u16>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for Script { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for Script {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for Script {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for Script {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for Script {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
682#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
683#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
685pub struct Script(pub(crate) u16);
686
687impl Script {
688 #[deprecated(
690 since = "2.3.0",
691 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
692 )]
693 pub const fn to_icu4c_value(self) -> u16 {
694 self.0
695 }
696 #[deprecated(
698 since = "2.3.0",
699 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
700 )]
701 pub const fn from_icu4c_value(value: u16) -> Self {
702 Self(value)
703 }
704 #[deprecated(since = "2.3.0", note = "use Script::Ethiopic instead")]
706 #[allow(non_upper_case_globals)]
707 pub const Ethiopian: Self = Self::Ethiopic;
708 #[deprecated(since = "2.3.0", note = "use Script::ArabicNastaliq instead")]
710 #[allow(non_upper_case_globals)]
711 pub const Nastaliq: Self = Self::ArabicNastaliq;
712 #[deprecated(since = "2.4.0", note = "use Script::Blissymbols instead")]
714 #[allow(non_upper_case_globals)]
715 pub const BlisSymbols: Self = Self::Blissymbols;
716}
717
718impl Default for Script {
719 fn default() -> Self {
720 Self::Unknown
721 }
722}
723
724impl Script {
725 #[doc(hidden)]
727 #[allow(non_upper_case_globals)]
728 #[deprecated]
729 pub const Chisoi: Script = Self(60_000);
731}
732
733#[cfg(feature = "compiled_data")]
735impl From<Script> for icu_locale_core::subtags::Script {
736 fn from(value: Script) -> Self {
737 crate::PropertyNamesShort::new()
738 .get_locale_script(value)
739 .unwrap_or(const {
use ::icu_locale_core::subtags::Script;
match Script::try_from_utf8("Zzzz".as_bytes()) {
Ok(r) => r,
_ => {
::core::panicking::panic_fmt(format_args!("Invalid subtags::Script: Zzzz"));
}
}
}icu_locale_core::subtags::script!("Zzzz"))
740 }
741}
742
743#[cfg(feature = "compiled_data")]
745impl From<icu_locale_core::subtags::Script> for Script {
746 fn from(value: icu_locale_core::subtags::Script) -> Self {
747 crate::PropertyParser::new()
748 .get_strict(value.as_str())
749 .unwrap_or(Self::Unknown)
750 }
751}
752
753impl crate::private::Sealed for Script {}
impl EnumeratedProperty for Script {
type DataMarker = crate::provider::PropertyEnumScriptV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_SCRIPT_V1;
const NAME: &'static [u8] = "Script".as_bytes();
const SHORT_NAME: &'static [u8] = "sc".as_bytes();
}
impl zerovec::ule::AsULE for Script {
type ULE = <u16 as zerovec::ule::AsULE>::ULE;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
754 name: "Script";
755 short_name: "sc";
756 ident: Script;
757 data_marker: crate::provider::PropertyEnumScriptV1;
758 singleton: SINGLETON_PROPERTY_ENUM_SCRIPT_V1;
759 ule_ty: <u16 as zerovec::ule::AsULE>::ULE;
760}
761
762#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for HangulSyllableType { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for HangulSyllableType { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for HangulSyllableType {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for HangulSyllableType {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f,
"HangulSyllableType", &&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for HangulSyllableType {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for HangulSyllableType { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for HangulSyllableType {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for HangulSyllableType {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for HangulSyllableType {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for HangulSyllableType {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
784#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
785#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
787pub struct HangulSyllableType(pub(crate) u8);
788
789impl HangulSyllableType {
790 #[deprecated(
792 since = "2.3.0",
793 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
794 )]
795 pub const fn to_icu4c_value(self) -> u8 {
796 self.0
797 }
798 #[deprecated(
800 since = "2.3.0",
801 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
802 )]
803 pub const fn from_icu4c_value(value: u8) -> Self {
804 Self(value)
805 }
806 #[deprecated(since = "2.3.0", note = "use HangulSyllableType::LVSyllable instead")]
808 #[allow(non_upper_case_globals)]
809 pub const LeadingVowelSyllable: Self = Self::LVSyllable;
810 #[deprecated(since = "2.3.0", note = "use HangulSyllableType::LVTSyllable instead")]
812 #[allow(non_upper_case_globals)]
813 pub const LeadingVowelTrailingSyllable: Self = Self::LVTSyllable;
814}
815
816impl Default for HangulSyllableType {
817 fn default() -> Self {
818 Self::NotApplicable
819 }
820}
821
822impl crate::private::Sealed for HangulSyllableType {}
impl EnumeratedProperty for HangulSyllableType {
type DataMarker = crate::provider::PropertyEnumHangulSyllableTypeV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_HANGUL_SYLLABLE_TYPE_V1;
const NAME: &'static [u8] = "Hangul_Syllable_Type".as_bytes();
const SHORT_NAME: &'static [u8] = "hst".as_bytes();
}
impl zerovec::ule::AsULE for HangulSyllableType {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
823 name: "Hangul_Syllable_Type";
824 short_name: "hst";
825 ident: HangulSyllableType;
826 data_marker: crate::provider::PropertyEnumHangulSyllableTypeV1;
827 singleton: SINGLETON_PROPERTY_ENUM_HANGUL_SYLLABLE_TYPE_V1;
828 ule_ty: u8;
829
830}
831
832#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for EastAsianWidth { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for EastAsianWidth { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for EastAsianWidth {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for EastAsianWidth {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f,
"EastAsianWidth", &&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for EastAsianWidth {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for EastAsianWidth { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for EastAsianWidth {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for EastAsianWidth {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for EastAsianWidth {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for EastAsianWidth {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
852#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
853#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
855pub struct EastAsianWidth(pub(crate) u8);
856
857impl EastAsianWidth {
858 #[deprecated(
860 since = "2.3.0",
861 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
862 )]
863 pub const fn to_icu4c_value(self) -> u8 {
864 self.0
865 }
866 #[deprecated(
868 since = "2.3.0",
869 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
870 )]
871 pub const fn from_icu4c_value(value: u8) -> Self {
872 Self(value)
873 }
874}
875
876impl Default for EastAsianWidth {
877 fn default() -> Self {
878 Self::Neutral
879 }
880}
881
882impl crate::private::Sealed for EastAsianWidth {}
impl EnumeratedProperty for EastAsianWidth {
type DataMarker = crate::provider::PropertyEnumEastAsianWidthV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_EAST_ASIAN_WIDTH_V1;
const NAME: &'static [u8] = "East_Asian_Width".as_bytes();
const SHORT_NAME: &'static [u8] = "ea".as_bytes();
}
impl zerovec::ule::AsULE for EastAsianWidth {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
883 name: "East_Asian_Width";
884 short_name: "ea";
885 ident: EastAsianWidth;
886 data_marker: crate::provider::PropertyEnumEastAsianWidthV1;
887 singleton: SINGLETON_PROPERTY_ENUM_EAST_ASIAN_WIDTH_V1;
888 ule_ty: u8;
889}
890
891#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for LineBreak { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for LineBreak { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for LineBreak {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for LineBreak {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "LineBreak",
&&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for LineBreak {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for LineBreak { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for LineBreak {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for LineBreak {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for LineBreak {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for LineBreak {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
915#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
916#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
918pub struct LineBreak(pub(crate) u8);
919
920impl LineBreak {
921 #[deprecated(
923 since = "2.3.0",
924 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
925 )]
926 pub const fn to_icu4c_value(self) -> u8 {
927 self.0
928 }
929 #[deprecated(
931 since = "2.3.0",
932 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
933 )]
934 pub const fn from_icu4c_value(value: u8) -> Self {
935 Self(value)
936 }
937}
938
939impl Default for LineBreak {
940 fn default() -> Self {
941 Self::Unknown
942 }
943}
944
945impl crate::private::Sealed for LineBreak {}
impl EnumeratedProperty for LineBreak {
type DataMarker = crate::provider::PropertyEnumLineBreakV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_LINE_BREAK_V1;
const NAME: &'static [u8] = "Line_Break".as_bytes();
const SHORT_NAME: &'static [u8] = "lb".as_bytes();
}
impl zerovec::ule::AsULE for LineBreak {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
946 name: "Line_Break";
947 short_name: "lb";
948 ident: LineBreak;
949 data_marker: crate::provider::PropertyEnumLineBreakV1;
950 singleton: SINGLETON_PROPERTY_ENUM_LINE_BREAK_V1;
951 ule_ty: u8;
952}
953
954#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for GraphemeClusterBreak { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for GraphemeClusterBreak { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for GraphemeClusterBreak {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for GraphemeClusterBreak {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f,
"GraphemeClusterBreak", &&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for GraphemeClusterBreak {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for GraphemeClusterBreak { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for GraphemeClusterBreak {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for GraphemeClusterBreak {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for GraphemeClusterBreak {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for GraphemeClusterBreak {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
977#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
978#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
980pub struct GraphemeClusterBreak(pub(crate) u8);
981
982impl GraphemeClusterBreak {
983 #[deprecated(
985 since = "2.3.0",
986 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
987 )]
988 pub const fn to_icu4c_value(self) -> u8 {
989 self.0
990 }
991 #[deprecated(
993 since = "2.3.0",
994 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
995 )]
996 pub const fn from_icu4c_value(value: u8) -> Self {
997 Self(value)
998 }
999}
1000
1001impl Default for GraphemeClusterBreak {
1002 fn default() -> Self {
1003 Self::Other
1004 }
1005}
1006
1007impl crate::private::Sealed for GraphemeClusterBreak {}
impl EnumeratedProperty for GraphemeClusterBreak {
type DataMarker = crate::provider::PropertyEnumGraphemeClusterBreakV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_GRAPHEME_CLUSTER_BREAK_V1;
const NAME: &'static [u8] = "Grapheme_Cluster_Break".as_bytes();
const SHORT_NAME: &'static [u8] = "GCB".as_bytes();
}
impl zerovec::ule::AsULE for GraphemeClusterBreak {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1008 name: "Grapheme_Cluster_Break";
1009 short_name: "GCB";
1010 ident: GraphemeClusterBreak;
1011 data_marker: crate::provider::PropertyEnumGraphemeClusterBreakV1;
1012 singleton: SINGLETON_PROPERTY_ENUM_GRAPHEME_CLUSTER_BREAK_V1;
1013 ule_ty: u8;
1014}
1015
1016#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for WordBreak { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for WordBreak { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for WordBreak {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for WordBreak {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "WordBreak",
&&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for WordBreak {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for WordBreak { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for WordBreak {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for WordBreak {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for WordBreak {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for WordBreak {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
1039#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1040#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1042pub struct WordBreak(pub(crate) u8);
1043
1044impl WordBreak {
1045 #[deprecated(
1047 since = "2.3.0",
1048 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1049 )]
1050 pub const fn to_icu4c_value(self) -> u8 {
1051 self.0
1052 }
1053 #[deprecated(
1055 since = "2.3.0",
1056 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1057 )]
1058 pub const fn from_icu4c_value(value: u8) -> Self {
1059 Self(value)
1060 }
1061}
1062
1063impl Default for WordBreak {
1064 fn default() -> Self {
1065 Self::Other
1066 }
1067}
1068
1069impl crate::private::Sealed for WordBreak {}
impl EnumeratedProperty for WordBreak {
type DataMarker = crate::provider::PropertyEnumWordBreakV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_WORD_BREAK_V1;
const NAME: &'static [u8] = "Word_Break".as_bytes();
const SHORT_NAME: &'static [u8] = "WB".as_bytes();
}
impl zerovec::ule::AsULE for WordBreak {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1070 name: "Word_Break";
1071 short_name: "WB";
1072 ident: WordBreak;
1073 data_marker: crate::provider::PropertyEnumWordBreakV1;
1074 singleton: SINGLETON_PROPERTY_ENUM_WORD_BREAK_V1;
1075 ule_ty: u8;
1076}
1077
1078#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for SentenceBreak { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for SentenceBreak { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for SentenceBreak {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for SentenceBreak {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "SentenceBreak",
&&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for SentenceBreak {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for SentenceBreak { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for SentenceBreak {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for SentenceBreak {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for SentenceBreak {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for SentenceBreak {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
1101#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1102#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1104pub struct SentenceBreak(pub(crate) u8);
1105
1106impl SentenceBreak {
1107 #[deprecated(
1109 since = "2.3.0",
1110 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1111 )]
1112 pub const fn to_icu4c_value(self) -> u8 {
1113 self.0
1114 }
1115 #[deprecated(
1117 since = "2.3.0",
1118 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1119 )]
1120 pub const fn from_icu4c_value(value: u8) -> Self {
1121 Self(value)
1122 }
1123}
1124
1125impl Default for SentenceBreak {
1126 fn default() -> Self {
1127 Self::Other
1128 }
1129}
1130
1131impl crate::private::Sealed for SentenceBreak {}
impl EnumeratedProperty for SentenceBreak {
type DataMarker = crate::provider::PropertyEnumSentenceBreakV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_SENTENCE_BREAK_V1;
const NAME: &'static [u8] = "Sentence_Break".as_bytes();
const SHORT_NAME: &'static [u8] = "SB".as_bytes();
}
impl zerovec::ule::AsULE for SentenceBreak {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1132 name: "Sentence_Break";
1133 short_name: "SB";
1134 ident: SentenceBreak;
1135 data_marker: crate::provider::PropertyEnumSentenceBreakV1;
1136 singleton: SINGLETON_PROPERTY_ENUM_SENTENCE_BREAK_V1;
1137 ule_ty: u8;
1138}
1139
1140#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for CanonicalCombiningClass { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for CanonicalCombiningClass { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for CanonicalCombiningClass {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for CanonicalCombiningClass {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f,
"CanonicalCombiningClass", &&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for CanonicalCombiningClass {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for CanonicalCombiningClass { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for CanonicalCombiningClass {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for CanonicalCombiningClass {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for CanonicalCombiningClass {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for CanonicalCombiningClass {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
1167#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1168#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1170pub struct CanonicalCombiningClass(pub u8);
1171
1172impl CanonicalCombiningClass {
1173 #[deprecated(
1175 since = "2.3.0",
1176 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1177 )]
1178 pub const fn to_icu4c_value(self) -> u8 {
1179 self.0
1180 }
1181 #[deprecated(
1183 since = "2.3.0",
1184 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1185 )]
1186 pub const fn from_icu4c_value(value: u8) -> Self {
1187 Self(value)
1188 }
1189}
1190
1191impl Default for CanonicalCombiningClass {
1192 fn default() -> Self {
1193 Self::NotReordered
1194 }
1195}
1196
1197impl crate::private::Sealed for CanonicalCombiningClass {}
impl EnumeratedProperty for CanonicalCombiningClass {
type DataMarker = crate::provider::PropertyEnumCanonicalCombiningClassV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_CANONICAL_COMBINING_CLASS_V1;
const NAME: &'static [u8] = "Canonical_Combining_Class".as_bytes();
const SHORT_NAME: &'static [u8] = "ccc".as_bytes();
}
impl zerovec::ule::AsULE for CanonicalCombiningClass {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1198 name: "Canonical_Combining_Class";
1199 short_name: "ccc";
1200 ident: CanonicalCombiningClass;
1201 data_marker: crate::provider::PropertyEnumCanonicalCombiningClassV1;
1202 singleton: SINGLETON_PROPERTY_ENUM_CANONICAL_COMBINING_CLASS_V1;
1203 ule_ty: u8;
1204}
1205
1206#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for IndicConjunctBreak { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for IndicConjunctBreak { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for IndicConjunctBreak {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for IndicConjunctBreak {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f,
"IndicConjunctBreak", &&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for IndicConjunctBreak {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for IndicConjunctBreak { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for IndicConjunctBreak {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for IndicConjunctBreak {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for IndicConjunctBreak {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for IndicConjunctBreak {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
1233#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1234#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1236pub struct IndicConjunctBreak(pub(crate) u8);
1237
1238impl IndicConjunctBreak {
1239 #[deprecated(
1241 since = "2.3.0",
1242 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1243 )]
1244 pub const fn to_icu4c_value(self) -> u8 {
1245 self.0
1246 }
1247 #[deprecated(
1249 since = "2.3.0",
1250 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1251 )]
1252 pub const fn from_icu4c_value(value: u8) -> Self {
1253 Self(value)
1254 }
1255}
1256
1257impl Default for IndicConjunctBreak {
1258 fn default() -> Self {
1259 Self::None
1260 }
1261}
1262
1263impl crate::private::Sealed for IndicConjunctBreak {}
impl EnumeratedProperty for IndicConjunctBreak {
type DataMarker = crate::provider::PropertyEnumIndicConjunctBreakV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_INDIC_CONJUNCT_BREAK_V1;
const NAME: &'static [u8] = "Indic_Conjunct_Break".as_bytes();
const SHORT_NAME: &'static [u8] = "InCB".as_bytes();
}
impl zerovec::ule::AsULE for IndicConjunctBreak {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1264 name: "Indic_Conjunct_Break";
1265 short_name: "InCB";
1266 ident: IndicConjunctBreak;
1267 data_marker: crate::provider::PropertyEnumIndicConjunctBreakV1;
1268 singleton: SINGLETON_PROPERTY_ENUM_INDIC_CONJUNCT_BREAK_V1;
1269 ule_ty: u8;
1270}
1271
1272#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for IndicSyllabicCategory { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for IndicSyllabicCategory { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for IndicSyllabicCategory {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for IndicSyllabicCategory {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f,
"IndicSyllabicCategory", &&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for IndicSyllabicCategory {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for IndicSyllabicCategory { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for IndicSyllabicCategory {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for IndicSyllabicCategory {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for IndicSyllabicCategory {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for IndicSyllabicCategory {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
1291#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1292#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1294pub struct IndicSyllabicCategory(pub(crate) u8);
1295
1296impl IndicSyllabicCategory {
1297 #[deprecated(
1299 since = "2.3.0",
1300 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1301 )]
1302 pub const fn to_icu4c_value(self) -> u8 {
1303 self.0
1304 }
1305 #[deprecated(
1307 since = "2.3.0",
1308 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1309 )]
1310 pub const fn from_icu4c_value(value: u8) -> Self {
1311 Self(value)
1312 }
1313}
1314
1315impl Default for IndicSyllabicCategory {
1316 fn default() -> Self {
1317 Self::Other
1318 }
1319}
1320
1321impl crate::private::Sealed for IndicSyllabicCategory {}
impl EnumeratedProperty for IndicSyllabicCategory {
type DataMarker = crate::provider::PropertyEnumIndicSyllabicCategoryV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_INDIC_SYLLABIC_CATEGORY_V1;
const NAME: &'static [u8] = "Indic_Syllabic_Category".as_bytes();
const SHORT_NAME: &'static [u8] = "InSC".as_bytes();
}
impl zerovec::ule::AsULE for IndicSyllabicCategory {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1322 name: "Indic_Syllabic_Category";
1323 short_name: "InSC";
1324 ident: IndicSyllabicCategory;
1325 data_marker: crate::provider::PropertyEnumIndicSyllabicCategoryV1;
1326 singleton: SINGLETON_PROPERTY_ENUM_INDIC_SYLLABIC_CATEGORY_V1;
1327 ule_ty: u8;
1328}
1329
1330#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for JoiningGroup { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for JoiningGroup { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for JoiningGroup {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for JoiningGroup {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "JoiningGroup",
&&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for JoiningGroup {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for JoiningGroup { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for JoiningGroup {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for JoiningGroup {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for JoiningGroup {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for JoiningGroup {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
1348#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1349#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1351pub struct JoiningGroup(pub(crate) u8);
1352
1353impl JoiningGroup {
1354 #[deprecated(
1356 since = "2.3.0",
1357 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1358 )]
1359 pub const fn to_icu4c_value(self) -> u8 {
1360 self.0
1361 }
1362 #[deprecated(
1364 since = "2.3.0",
1365 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1366 )]
1367 pub const fn from_icu4c_value(value: u8) -> Self {
1368 Self(value)
1369 }
1370}
1371
1372impl Default for JoiningGroup {
1373 fn default() -> Self {
1374 Self::NoJoiningGroup
1375 }
1376}
1377
1378impl crate::private::Sealed for JoiningGroup {}
impl EnumeratedProperty for JoiningGroup {
type DataMarker = crate::provider::PropertyEnumJoiningGroupV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_JOINING_GROUP_V1;
const NAME: &'static [u8] = "Joining_Group".as_bytes();
const SHORT_NAME: &'static [u8] = "jg".as_bytes();
}
impl zerovec::ule::AsULE for JoiningGroup {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1379 name: "Joining_Group";
1380 short_name: "jg";
1381 ident: JoiningGroup;
1382 data_marker: crate::provider::PropertyEnumJoiningGroupV1;
1383 singleton: SINGLETON_PROPERTY_ENUM_JOINING_GROUP_V1;
1384 ule_ty: u8;
1385}
1386
1387#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for JoiningType { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for JoiningType { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for JoiningType {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for JoiningType {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "JoiningType",
&&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for JoiningType {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for JoiningType { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for JoiningType {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for JoiningType {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for JoiningType {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for JoiningType {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
1407#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1408#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1410pub struct JoiningType(pub(crate) u8);
1411
1412impl JoiningType {
1413 #[deprecated(
1415 since = "2.3.0",
1416 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1417 )]
1418 pub const fn to_icu4c_value(self) -> u8 {
1419 self.0
1420 }
1421 #[deprecated(
1423 since = "2.3.0",
1424 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1425 )]
1426 pub const fn from_icu4c_value(value: u8) -> Self {
1427 Self(value)
1428 }
1429}
1430
1431impl Default for JoiningType {
1432 fn default() -> Self {
1433 Self::NonJoining
1434 }
1435}
1436
1437impl crate::private::Sealed for JoiningType {}
impl EnumeratedProperty for JoiningType {
type DataMarker = crate::provider::PropertyEnumJoiningTypeV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_JOINING_TYPE_V1;
const NAME: &'static [u8] = "Joining_Type".as_bytes();
const SHORT_NAME: &'static [u8] = "jt".as_bytes();
}
impl zerovec::ule::AsULE for JoiningType {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1438 name: "Joining_Type";
1439 short_name: "jt";
1440 ident: JoiningType;
1441 data_marker: crate::provider::PropertyEnumJoiningTypeV1;
1442 singleton: SINGLETON_PROPERTY_ENUM_JOINING_TYPE_V1;
1443 ule_ty: u8;
1444}
1445
1446#[derive(#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for VerticalOrientation { }Copy, #[automatically_derived]#[doc(hidden)]#[allow(clippy::exhaustive_structs)]
unsafe impl ::core::clone::TrivialClone for VerticalOrientation { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for VerticalOrientation {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::fmt::Debug for VerticalOrientation {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f,
"VerticalOrientation", &&self.0)
}
}Debug, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Eq for VerticalOrientation {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::marker::StructuralPartialEq for VerticalOrientation { }
#[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for VerticalOrientation {
#[inline]
fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for VerticalOrientation {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialOrd for VerticalOrientation {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]#[allow(clippy::exhaustive_structs)]
impl ::core::hash::Hash for VerticalOrientation {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
1474#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1475#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1477pub struct VerticalOrientation(pub(crate) u8);
1478
1479impl VerticalOrientation {
1480 #[deprecated(
1482 since = "2.3.0",
1483 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1484 )]
1485 pub const fn to_icu4c_value(self) -> u8 {
1486 self.0
1487 }
1488 #[deprecated(
1490 since = "2.3.0",
1491 note = "please comment on https://github.com/unicode-org/icu4x/issues/6067 if you need this"
1492 )]
1493 pub const fn from_icu4c_value(value: u8) -> Self {
1494 Self(value)
1495 }
1496}
1497
1498impl Default for VerticalOrientation {
1499 fn default() -> Self {
1500 Self::Rotated
1501 }
1502}
1503
1504impl crate::private::Sealed for VerticalOrientation {}
impl EnumeratedProperty for VerticalOrientation {
type DataMarker = crate::provider::PropertyEnumVerticalOrientationV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_VERTICAL_ORIENTATION_V1;
const NAME: &'static [u8] = "Vertical_Orientation".as_bytes();
const SHORT_NAME: &'static [u8] = "vo".as_bytes();
}
impl zerovec::ule::AsULE for VerticalOrientation {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1505 name: "Vertical_Orientation";
1506 short_name: "vo";
1507 ident: VerticalOrientation;
1508 data_marker: crate::provider::PropertyEnumVerticalOrientationV1;
1509 singleton: SINGLETON_PROPERTY_ENUM_VERTICAL_ORIENTATION_V1;
1510 ule_ty: u8;
1511}
1512
1513pub use crate::code_point_set::BinaryProperty;
1514
1515macro_rules! make_binary_property {
1516 (
1517 name: $name:literal;
1518 short_name: $short_name:literal;
1519 ident: $ident:ident;
1520 data_marker: $data_marker:ty;
1521 singleton: $singleton:ident;
1522 $(#[$doc:meta])+
1523 ) => {
1524 $(#[$doc])+
1525 #[derive(Debug)]
1526 #[non_exhaustive]
1527 pub struct $ident;
1528
1529 #[allow(deprecated)]
1530 impl crate::private::Sealed for $ident {}
1531
1532 #[allow(deprecated)]
1533 impl BinaryProperty for $ident {
1534 type DataMarker = $data_marker;
1535 #[cfg(feature = "compiled_data")]
1536 const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
1537 &crate::provider::Baked::$singleton;
1538 const NAME: &'static [u8] = $name.as_bytes();
1539 const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
1540 }
1541 };
1542}
1543
1544#[doc =
r" ASCII characters commonly used for the representation of hexadecimal numbers."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::AsciiHexDigit;"]
#[doc = r""]
#[doc = r" let ascii_hex_digit = CodePointSetData::new::<AsciiHexDigit>();"]
#[doc = r""]
#[doc = r" assert!(ascii_hex_digit.contains('3'));"]
#[doc =
r" assert!(!ascii_hex_digit.contains('੩')); // U+0A69 GURMUKHI DIGIT THREE"]
#[doc = r" assert!(ascii_hex_digit.contains('A'));"]
#[doc =
r" assert!(!ascii_hex_digit.contains('Ä')); // U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct AsciiHexDigit;
#[automatically_derived]impl ::core::fmt::Debug for AsciiHexDigit {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "AsciiHexDigit")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for AsciiHexDigit { }
#[allow(deprecated)]
impl BinaryProperty for AsciiHexDigit {
type DataMarker = crate::provider::PropertyBinaryAsciiHexDigitV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_ASCII_HEX_DIGIT_V1;
const NAME: &'static [u8] = "ASCII_Hex_Digit".as_bytes();
const SHORT_NAME: &'static [u8] = "AHex".as_bytes();
}make_binary_property! {
1545 name: "ASCII_Hex_Digit";
1546 short_name: "AHex";
1547 ident: AsciiHexDigit;
1548 data_marker: crate::provider::PropertyBinaryAsciiHexDigitV1;
1549 singleton: SINGLETON_PROPERTY_BINARY_ASCII_HEX_DIGIT_V1;
1550 }
1566
1567#[doc = r" Characters with the `Alphabetic` or `Decimal_Number` property."]
#[doc = r""]
#[doc = r" This is defined for POSIX compatibility."]
#[non_exhaustive]
pub struct Alnum;
#[automatically_derived]impl ::core::fmt::Debug for Alnum {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Alnum")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Alnum { }
#[allow(deprecated)]
impl BinaryProperty for Alnum {
type DataMarker = crate::provider::PropertyBinaryAlnumV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_ALNUM_V1;
const NAME: &'static [u8] = "alnum".as_bytes();
const SHORT_NAME: &'static [u8] = "alnum".as_bytes();
}make_binary_property! {
1568 name: "alnum";
1569 short_name: "alnum";
1570 ident: Alnum;
1571 data_marker: crate::provider::PropertyBinaryAlnumV1;
1572 singleton: SINGLETON_PROPERTY_BINARY_ALNUM_V1;
1573 }
1577
1578#[doc = r" Alphabetic characters."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Alphabetic;"]
#[doc = r""]
#[doc = r" let alphabetic = CodePointSetData::new::<Alphabetic>();"]
#[doc = r""]
#[doc = r" assert!(!alphabetic.contains('3'));"]
#[doc =
r" assert!(!alphabetic.contains('੩')); // U+0A69 GURMUKHI DIGIT THREE"]
#[doc = r" assert!(alphabetic.contains('A'));"]
#[doc =
r" assert!(alphabetic.contains('Ä')); // U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Alphabetic;
#[automatically_derived]impl ::core::fmt::Debug for Alphabetic {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Alphabetic")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Alphabetic { }
#[allow(deprecated)]
impl BinaryProperty for Alphabetic {
type DataMarker = crate::provider::PropertyBinaryAlphabeticV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_ALPHABETIC_V1;
const NAME: &'static [u8] = "Alphabetic".as_bytes();
const SHORT_NAME: &'static [u8] = "Alpha".as_bytes();
}make_binary_property! {
1579 name: "Alphabetic";
1580 short_name: "Alpha";
1581 ident: Alphabetic;
1582 data_marker: crate::provider::PropertyBinaryAlphabeticV1;
1583 singleton: SINGLETON_PROPERTY_BINARY_ALPHABETIC_V1;
1584 }
1601
1602#[doc =
r" Format control characters which have specific functions in the Unicode Bidirectional"]
#[doc = r" Algorithm."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::BidiControl;"]
#[doc = r""]
#[doc = r" let bidi_control = CodePointSetData::new::<BidiControl>();"]
#[doc = r""]
#[doc =
r" assert!(bidi_control.contains('\u{200F}')); // RIGHT-TO-LEFT MARK"]
#[doc =
r" assert!(!bidi_control.contains('ش')); // U+0634 ARABIC LETTER SHEEN"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct BidiControl;
#[automatically_derived]impl ::core::fmt::Debug for BidiControl {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "BidiControl")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for BidiControl { }
#[allow(deprecated)]
impl BinaryProperty for BidiControl {
type DataMarker = crate::provider::PropertyBinaryBidiControlV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_BIDI_CONTROL_V1;
const NAME: &'static [u8] = "Bidi_Control".as_bytes();
const SHORT_NAME: &'static [u8] = "Bidi_C".as_bytes();
}make_binary_property! {
1603 name: "Bidi_Control";
1604 short_name: "Bidi_C";
1605 ident: BidiControl;
1606 data_marker: crate::provider::PropertyBinaryBidiControlV1;
1607 singleton: SINGLETON_PROPERTY_BINARY_BIDI_CONTROL_V1;
1608 }
1624
1625#[doc = r" Characters that are mirrored in bidirectional text."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::BidiMirrored;"]
#[doc = r""]
#[doc = r" let bidi_mirrored = CodePointSetData::new::<BidiMirrored>();"]
#[doc = r""]
#[doc = r" assert!(bidi_mirrored.contains('['));"]
#[doc = r" assert!(bidi_mirrored.contains(']'));"]
#[doc =
r" assert!(bidi_mirrored.contains('∑')); // U+2211 N-ARY SUMMATION"]
#[doc =
r" assert!(!bidi_mirrored.contains('ཉ')); // U+0F49 TIBETAN LETTER NYA"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct BidiMirrored;
#[automatically_derived]impl ::core::fmt::Debug for BidiMirrored {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "BidiMirrored")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for BidiMirrored { }
#[allow(deprecated)]
impl BinaryProperty for BidiMirrored {
type DataMarker = crate::provider::PropertyBinaryBidiMirroredV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_BIDI_MIRRORED_V1;
const NAME: &'static [u8] = "Bidi_Mirrored".as_bytes();
const SHORT_NAME: &'static [u8] = "Bidi_M".as_bytes();
}make_binary_property! {
1626 name: "Bidi_Mirrored";
1627 short_name: "Bidi_M";
1628 ident: BidiMirrored;
1629 data_marker: crate::provider::PropertyBinaryBidiMirroredV1;
1630 singleton: SINGLETON_PROPERTY_BINARY_BIDI_MIRRORED_V1;
1631 }
1648
1649#[doc = r" Horizontal whitespace characters"]
#[non_exhaustive]
pub struct Blank;
#[automatically_derived]impl ::core::fmt::Debug for Blank {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Blank")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Blank { }
#[allow(deprecated)]
impl BinaryProperty for Blank {
type DataMarker = crate::provider::PropertyBinaryBlankV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_BLANK_V1;
const NAME: &'static [u8] = "blank".as_bytes();
const SHORT_NAME: &'static [u8] = "blank".as_bytes();
}make_binary_property! {
1650 name: "blank";
1651 short_name: "blank";
1652 ident: Blank;
1653 data_marker: crate::provider::PropertyBinaryBlankV1;
1654 singleton: SINGLETON_PROPERTY_BINARY_BLANK_V1;
1655 }
1658
1659#[doc = r" Uppercase, lowercase, and titlecase characters."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Cased;"]
#[doc = r""]
#[doc = r" let cased = CodePointSetData::new::<Cased>();"]
#[doc = r""]
#[doc =
r" assert!(cased.contains('Ꙡ')); // U+A660 CYRILLIC CAPITAL LETTER REVERSED TSE"]
#[doc = r" assert!(!cased.contains('ދ')); // U+078B THAANA LETTER DHAALU"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Cased;
#[automatically_derived]impl ::core::fmt::Debug for Cased {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Cased")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Cased { }
#[allow(deprecated)]
impl BinaryProperty for Cased {
type DataMarker = crate::provider::PropertyBinaryCasedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CASED_V1;
const NAME: &'static [u8] = "Cased".as_bytes();
const SHORT_NAME: &'static [u8] = "Cased".as_bytes();
}make_binary_property! {
1660 name: "Cased";
1661 short_name: "Cased";
1662 ident: Cased;
1663 data_marker: crate::provider::PropertyBinaryCasedV1;
1664 singleton: SINGLETON_PROPERTY_BINARY_CASED_V1;
1665 }
1680
1681#[doc = r" Characters which are ignored for casing purposes."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::CaseIgnorable;"]
#[doc = r""]
#[doc = r" let case_ignorable = CodePointSetData::new::<CaseIgnorable>();"]
#[doc = r""]
#[doc = r" assert!(case_ignorable.contains(':'));"]
#[doc =
r" assert!(!case_ignorable.contains('λ')); // U+03BB GREEK SMALL LETTER LAMBDA"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct CaseIgnorable;
#[automatically_derived]impl ::core::fmt::Debug for CaseIgnorable {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "CaseIgnorable")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for CaseIgnorable { }
#[allow(deprecated)]
impl BinaryProperty for CaseIgnorable {
type DataMarker = crate::provider::PropertyBinaryCaseIgnorableV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CASE_IGNORABLE_V1;
const NAME: &'static [u8] = "Case_Ignorable".as_bytes();
const SHORT_NAME: &'static [u8] = "CI".as_bytes();
}make_binary_property! {
1682 name: "Case_Ignorable";
1683 short_name: "CI";
1684 ident: CaseIgnorable;
1685 data_marker: crate::provider::PropertyBinaryCaseIgnorableV1;
1686 singleton: SINGLETON_PROPERTY_BINARY_CASE_IGNORABLE_V1;
1687 }
1702
1703#[doc = r" Characters that are excluded from composition."]
#[doc = r""]
#[doc =
r" See <https://unicode.org/Public/UNIDATA/CompositionExclusions.txt>"]
#[non_exhaustive]
pub struct FullCompositionExclusion;
#[automatically_derived]impl ::core::fmt::Debug for FullCompositionExclusion {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "FullCompositionExclusion")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for FullCompositionExclusion { }
#[allow(deprecated)]
impl BinaryProperty for FullCompositionExclusion {
type DataMarker =
crate::provider::PropertyBinaryFullCompositionExclusionV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_FULL_COMPOSITION_EXCLUSION_V1;
const NAME: &'static [u8] = "Full_Composition_Exclusion".as_bytes();
const SHORT_NAME: &'static [u8] = "Comp_Ex".as_bytes();
}make_binary_property! {
1704 name: "Full_Composition_Exclusion";
1705 short_name: "Comp_Ex";
1706 ident: FullCompositionExclusion;
1707 data_marker: crate::provider::PropertyBinaryFullCompositionExclusionV1;
1708 singleton: SINGLETON_PROPERTY_BINARY_FULL_COMPOSITION_EXCLUSION_V1;
1709 }
1714
1715#[doc =
r" Characters whose normalized forms are not stable under case folding."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::ChangesWhenCasefolded;"]
#[doc = r""]
#[doc =
r" let changes_when_casefolded = CodePointSetData::new::<ChangesWhenCasefolded>();"]
#[doc = r""]
#[doc =
r" assert!(changes_when_casefolded.contains('ß')); // U+00DF LATIN SMALL LETTER SHARP S"]
#[doc =
r" assert!(!changes_when_casefolded.contains('ᜉ')); // U+1709 TAGALOG LETTER PA"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct ChangesWhenCasefolded;
#[automatically_derived]impl ::core::fmt::Debug for ChangesWhenCasefolded {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ChangesWhenCasefolded")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for ChangesWhenCasefolded { }
#[allow(deprecated)]
impl BinaryProperty for ChangesWhenCasefolded {
type DataMarker = crate::provider::PropertyBinaryChangesWhenCasefoldedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEFOLDED_V1;
const NAME: &'static [u8] = "Changes_When_Casefolded".as_bytes();
const SHORT_NAME: &'static [u8] = "CWCF".as_bytes();
}make_binary_property! {
1716 name: "Changes_When_Casefolded";
1717 short_name: "CWCF";
1718 ident: ChangesWhenCasefolded;
1719 data_marker: crate::provider::PropertyBinaryChangesWhenCasefoldedV1;
1720 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEFOLDED_V1;
1721 }
1736
1737#[doc = r" Characters which may change when they undergo case mapping."]
#[non_exhaustive]
pub struct ChangesWhenCasemapped;
#[automatically_derived]impl ::core::fmt::Debug for ChangesWhenCasemapped {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ChangesWhenCasemapped")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for ChangesWhenCasemapped { }
#[allow(deprecated)]
impl BinaryProperty for ChangesWhenCasemapped {
type DataMarker = crate::provider::PropertyBinaryChangesWhenCasemappedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEMAPPED_V1;
const NAME: &'static [u8] = "Changes_When_Casemapped".as_bytes();
const SHORT_NAME: &'static [u8] = "CWCM".as_bytes();
}make_binary_property! {
1738 name: "Changes_When_Casemapped";
1739 short_name: "CWCM";
1740 ident: ChangesWhenCasemapped;
1741 data_marker: crate::provider::PropertyBinaryChangesWhenCasemappedV1;
1742 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEMAPPED_V1;
1743 }
1746
1747#[doc =
r" Characters which are not identical to their `NFKC_Casefold` mapping."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::ChangesWhenNfkcCasefolded;"]
#[doc = r""]
#[doc =
r" let changes_when_nfkc_casefolded = CodePointSetData::new::<ChangesWhenNfkcCasefolded>();"]
#[doc = r""]
#[doc =
r" assert!(changes_when_nfkc_casefolded.contains('🄵')); // U+1F135 SQUARED LATIN CAPITAL LETTER F"]
#[doc = r" assert!(!changes_when_nfkc_casefolded.contains('f'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct ChangesWhenNfkcCasefolded;
#[automatically_derived]impl ::core::fmt::Debug for ChangesWhenNfkcCasefolded
{
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ChangesWhenNfkcCasefolded")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for ChangesWhenNfkcCasefolded { }
#[allow(deprecated)]
impl BinaryProperty for ChangesWhenNfkcCasefolded {
type DataMarker =
crate::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_NFKC_CASEFOLDED_V1;
const NAME: &'static [u8] = "Changes_When_NFKC_Casefolded".as_bytes();
const SHORT_NAME: &'static [u8] = "CWKCF".as_bytes();
}make_binary_property! {
1748 name: "Changes_When_NFKC_Casefolded";
1749 short_name: "CWKCF";
1750 ident: ChangesWhenNfkcCasefolded;
1751 data_marker: crate::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1;
1752 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_NFKC_CASEFOLDED_V1;
1753 }
1768
1769#[doc =
r" Characters whose normalized forms are not stable under a `toLowercase` mapping."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::ChangesWhenLowercased;"]
#[doc = r""]
#[doc =
r" let changes_when_lowercased = CodePointSetData::new::<ChangesWhenLowercased>();"]
#[doc = r""]
#[doc =
r" assert!(changes_when_lowercased.contains('Ⴔ')); // U+10B4 GEORGIAN CAPITAL LETTER PHAR"]
#[doc =
r" assert!(!changes_when_lowercased.contains('ფ')); // U+10E4 GEORGIAN LETTER PHAR"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct ChangesWhenLowercased;
#[automatically_derived]impl ::core::fmt::Debug for ChangesWhenLowercased {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ChangesWhenLowercased")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for ChangesWhenLowercased { }
#[allow(deprecated)]
impl BinaryProperty for ChangesWhenLowercased {
type DataMarker = crate::provider::PropertyBinaryChangesWhenLowercasedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_LOWERCASED_V1;
const NAME: &'static [u8] = "Changes_When_Lowercased".as_bytes();
const SHORT_NAME: &'static [u8] = "CWL".as_bytes();
}make_binary_property! {
1770 name: "Changes_When_Lowercased";
1771 short_name: "CWL";
1772 ident: ChangesWhenLowercased;
1773 data_marker: crate::provider::PropertyBinaryChangesWhenLowercasedV1;
1774 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_LOWERCASED_V1;
1775 }
1790
1791#[doc =
r" Characters whose normalized forms are not stable under a `toTitlecase` mapping."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::ChangesWhenTitlecased;"]
#[doc = r""]
#[doc =
r" let changes_when_titlecased = CodePointSetData::new::<ChangesWhenTitlecased>();"]
#[doc = r""]
#[doc =
r" assert!(changes_when_titlecased.contains('æ')); // U+00E6 LATIN SMALL LETTER AE"]
#[doc =
r" assert!(!changes_when_titlecased.contains('Æ')); // U+00E6 LATIN CAPITAL LETTER AE"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct ChangesWhenTitlecased;
#[automatically_derived]impl ::core::fmt::Debug for ChangesWhenTitlecased {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ChangesWhenTitlecased")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for ChangesWhenTitlecased { }
#[allow(deprecated)]
impl BinaryProperty for ChangesWhenTitlecased {
type DataMarker = crate::provider::PropertyBinaryChangesWhenTitlecasedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_TITLECASED_V1;
const NAME: &'static [u8] = "Changes_When_Titlecased".as_bytes();
const SHORT_NAME: &'static [u8] = "CWT".as_bytes();
}make_binary_property! {
1792 name: "Changes_When_Titlecased";
1793 short_name: "CWT";
1794 ident: ChangesWhenTitlecased;
1795 data_marker: crate::provider::PropertyBinaryChangesWhenTitlecasedV1;
1796 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_TITLECASED_V1;
1797 }
1812
1813#[doc =
r" Characters whose normalized forms are not stable under a `toUppercase` mapping."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::ChangesWhenUppercased;"]
#[doc = r""]
#[doc =
r" let changes_when_uppercased = CodePointSetData::new::<ChangesWhenUppercased>();"]
#[doc = r""]
#[doc =
r" assert!(changes_when_uppercased.contains('ւ')); // U+0582 ARMENIAN SMALL LETTER YIWN"]
#[doc =
r" assert!(!changes_when_uppercased.contains('Ւ')); // U+0552 ARMENIAN CAPITAL LETTER YIWN"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct ChangesWhenUppercased;
#[automatically_derived]impl ::core::fmt::Debug for ChangesWhenUppercased {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ChangesWhenUppercased")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for ChangesWhenUppercased { }
#[allow(deprecated)]
impl BinaryProperty for ChangesWhenUppercased {
type DataMarker = crate::provider::PropertyBinaryChangesWhenUppercasedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_UPPERCASED_V1;
const NAME: &'static [u8] = "Changes_When_Uppercased".as_bytes();
const SHORT_NAME: &'static [u8] = "CWU".as_bytes();
}make_binary_property! {
1814 name: "Changes_When_Uppercased";
1815 short_name: "CWU";
1816 ident: ChangesWhenUppercased;
1817 data_marker: crate::provider::PropertyBinaryChangesWhenUppercasedV1;
1818 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_UPPERCASED_V1;
1819 }
1834
1835#[doc =
r" Punctuation characters explicitly called out as dashes in the Unicode Standard, plus"]
#[doc = r" their compatibility equivalents."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Dash;"]
#[doc = r""]
#[doc = r" let dash = CodePointSetData::new::<Dash>();"]
#[doc = r""]
#[doc = r" assert!(dash.contains('⸺')); // U+2E3A TWO-EM DASH"]
#[doc = r" assert!(dash.contains('-')); // U+002D"]
#[doc = r" assert!(!dash.contains('=')); // U+003D"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Dash;
#[automatically_derived]impl ::core::fmt::Debug for Dash {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Dash")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Dash { }
#[allow(deprecated)]
impl BinaryProperty for Dash {
type DataMarker = crate::provider::PropertyBinaryDashV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_DASH_V1;
const NAME: &'static [u8] = "Dash".as_bytes();
const SHORT_NAME: &'static [u8] = "Dash".as_bytes();
}make_binary_property! {
1836 name: "Dash";
1837 short_name: "Dash";
1838 ident: Dash;
1839 data_marker: crate::provider::PropertyBinaryDashV1;
1840 singleton: SINGLETON_PROPERTY_BINARY_DASH_V1;
1841 }
1858
1859#[doc = r" Deprecated characters."]
#[doc = r""]
#[doc = r" No characters will ever be removed from the standard, but the"]
#[doc = r" usage of deprecated characters is strongly discouraged."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Deprecated;"]
#[doc = r""]
#[doc = r" let deprecated = CodePointSetData::new::<Deprecated>();"]
#[doc = r""]
#[doc =
r" assert!(deprecated.contains('ឣ')); // U+17A3 KHMER INDEPENDENT VOWEL QAQ"]
#[doc = r" assert!(!deprecated.contains('A'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Deprecated;
#[automatically_derived]impl ::core::fmt::Debug for Deprecated {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Deprecated")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Deprecated { }
#[allow(deprecated)]
impl BinaryProperty for Deprecated {
type DataMarker = crate::provider::PropertyBinaryDeprecatedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_DEPRECATED_V1;
const NAME: &'static [u8] = "Deprecated".as_bytes();
const SHORT_NAME: &'static [u8] = "Dep".as_bytes();
}make_binary_property! {
1860 name: "Deprecated";
1861 short_name: "Dep";
1862 ident: Deprecated;
1863 data_marker: crate::provider::PropertyBinaryDeprecatedV1;
1864 singleton: SINGLETON_PROPERTY_BINARY_DEPRECATED_V1;
1865 }
1883
1884#[doc = r" For programmatic determination of default ignorable code points."]
#[doc = r""]
#[doc = r" New characters that"]
#[doc =
r" should be ignored in rendering (unless explicitly supported) will be assigned in these"]
#[doc =
r" ranges, permitting programs to correctly handle the default rendering of such"]
#[doc = r" characters when not otherwise supported."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::DefaultIgnorableCodePoint;"]
#[doc = r""]
#[doc =
r" let default_ignorable_code_point = CodePointSetData::new::<DefaultIgnorableCodePoint>();"]
#[doc = r""]
#[doc =
r" assert!(default_ignorable_code_point.contains('\u{180B}')); // MONGOLIAN FREE VARIATION SELECTOR ONE"]
#[doc = r" assert!(!default_ignorable_code_point.contains('E'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct DefaultIgnorableCodePoint;
#[automatically_derived]impl ::core::fmt::Debug for DefaultIgnorableCodePoint
{
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "DefaultIgnorableCodePoint")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for DefaultIgnorableCodePoint { }
#[allow(deprecated)]
impl BinaryProperty for DefaultIgnorableCodePoint {
type DataMarker =
crate::provider::PropertyBinaryDefaultIgnorableCodePointV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_DEFAULT_IGNORABLE_CODE_POINT_V1;
const NAME: &'static [u8] = "Default_Ignorable_Code_Point".as_bytes();
const SHORT_NAME: &'static [u8] = "DI".as_bytes();
}make_binary_property! {
1885 name: "Default_Ignorable_Code_Point";
1886 short_name: "DI";
1887 ident: DefaultIgnorableCodePoint;
1888 data_marker: crate::provider::PropertyBinaryDefaultIgnorableCodePointV1;
1889 singleton: SINGLETON_PROPERTY_BINARY_DEFAULT_IGNORABLE_CODE_POINT_V1;
1890 }
1910
1911#[doc =
r" Characters that linguistically modify the meaning of another character to which they apply."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Diacritic;"]
#[doc = r""]
#[doc = r" let diacritic = CodePointSetData::new::<Diacritic>();"]
#[doc = r""]
#[doc =
r" assert!(diacritic.contains('\u{05B3}')); // HEBREW POINT HATAF QAMATS"]
#[doc = r" assert!(!diacritic.contains('א')); // U+05D0 HEBREW LETTER ALEF"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Diacritic;
#[automatically_derived]impl ::core::fmt::Debug for Diacritic {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Diacritic")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Diacritic { }
#[allow(deprecated)]
impl BinaryProperty for Diacritic {
type DataMarker = crate::provider::PropertyBinaryDiacriticV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_DIACRITIC_V1;
const NAME: &'static [u8] = "Diacritic".as_bytes();
const SHORT_NAME: &'static [u8] = "Dia".as_bytes();
}make_binary_property! {
1912 name: "Diacritic";
1913 short_name: "Dia";
1914 ident: Diacritic;
1915 data_marker: crate::provider::PropertyBinaryDiacriticV1;
1916 singleton: SINGLETON_PROPERTY_BINARY_DIACRITIC_V1;
1917 }
1932
1933#[doc = r" Characters that can serve as a base for emoji modifiers."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::EmojiModifierBase;"]
#[doc = r""]
#[doc =
r" let emoji_modifier_base = CodePointSetData::new::<EmojiModifierBase>();"]
#[doc = r""]
#[doc =
r" assert!(emoji_modifier_base.contains('✊')); // U+270A RAISED FIST"]
#[doc =
r" assert!(!emoji_modifier_base.contains('⛰')); // U+26F0 MOUNTAIN"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct EmojiModifierBase;
#[automatically_derived]impl ::core::fmt::Debug for EmojiModifierBase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "EmojiModifierBase")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for EmojiModifierBase { }
#[allow(deprecated)]
impl BinaryProperty for EmojiModifierBase {
type DataMarker = crate::provider::PropertyBinaryEmojiModifierBaseV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_BASE_V1;
const NAME: &'static [u8] = "Emoji_Modifier_Base".as_bytes();
const SHORT_NAME: &'static [u8] = "EBase".as_bytes();
}make_binary_property! {
1934 name: "Emoji_Modifier_Base";
1935 short_name: "EBase";
1936 ident: EmojiModifierBase;
1937 data_marker: crate::provider::PropertyBinaryEmojiModifierBaseV1;
1938 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_BASE_V1;
1939 }
1954
1955#[doc =
r" Characters used in emoji sequences that normally do not appear on emoji keyboards as"]
#[doc = r" separate choices, such as base characters for emoji keycaps."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::EmojiComponent;"]
#[doc = r""]
#[doc = r" let emoji_component = CodePointSetData::new::<EmojiComponent>();"]
#[doc = r""]
#[doc =
r" assert!(emoji_component.contains('🇹')); // U+1F1F9 REGIONAL INDICATOR SYMBOL LETTER T"]
#[doc =
r" assert!(emoji_component.contains('\u{20E3}')); // COMBINING ENCLOSING KEYCAP"]
#[doc = r" assert!(emoji_component.contains('7'));"]
#[doc = r" assert!(!emoji_component.contains('T'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct EmojiComponent;
#[automatically_derived]impl ::core::fmt::Debug for EmojiComponent {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "EmojiComponent")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for EmojiComponent { }
#[allow(deprecated)]
impl BinaryProperty for EmojiComponent {
type DataMarker = crate::provider::PropertyBinaryEmojiComponentV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EMOJI_COMPONENT_V1;
const NAME: &'static [u8] = "Emoji_Component".as_bytes();
const SHORT_NAME: &'static [u8] = "EComp".as_bytes();
}make_binary_property! {
1956 name: "Emoji_Component";
1957 short_name: "EComp";
1958 ident: EmojiComponent;
1959 data_marker: crate::provider::PropertyBinaryEmojiComponentV1;
1960 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_COMPONENT_V1;
1961 }
1979
1980#[doc = r" Characters that are emoji modifiers."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::EmojiModifier;"]
#[doc = r""]
#[doc = r" let emoji_modifier = CodePointSetData::new::<EmojiModifier>();"]
#[doc = r""]
#[doc =
r" assert!(emoji_modifier.contains('\u{1F3FD}')); // EMOJI MODIFIER FITZPATRICK TYPE-4"]
#[doc =
r" assert!(!emoji_modifier.contains('\u{200C}')); // ZERO WIDTH NON-JOINER"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct EmojiModifier;
#[automatically_derived]impl ::core::fmt::Debug for EmojiModifier {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "EmojiModifier")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for EmojiModifier { }
#[allow(deprecated)]
impl BinaryProperty for EmojiModifier {
type DataMarker = crate::provider::PropertyBinaryEmojiModifierV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_V1;
const NAME: &'static [u8] = "Emoji_Modifier".as_bytes();
const SHORT_NAME: &'static [u8] = "EMod".as_bytes();
}make_binary_property! {
1981 name: "Emoji_Modifier";
1982 short_name: "EMod";
1983 ident: EmojiModifier;
1984 data_marker: crate::provider::PropertyBinaryEmojiModifierV1;
1985 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_V1;
1986 }
2001
2002#[doc = r" Characters that are emoji."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Emoji;"]
#[doc = r""]
#[doc = r" let emoji = CodePointSetData::new::<Emoji>();"]
#[doc = r""]
#[doc = r" assert!(emoji.contains('🔥')); // U+1F525 FIRE"]
#[doc = r" assert!(!emoji.contains('V'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Emoji;
#[automatically_derived]impl ::core::fmt::Debug for Emoji {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Emoji")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Emoji { }
#[allow(deprecated)]
impl BinaryProperty for Emoji {
type DataMarker = crate::provider::PropertyBinaryEmojiV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EMOJI_V1;
const NAME: &'static [u8] = "Emoji".as_bytes();
const SHORT_NAME: &'static [u8] = "Emoji".as_bytes();
}make_binary_property! {
2003 name: "Emoji";
2004 short_name: "Emoji";
2005 ident: Emoji;
2006 data_marker: crate::provider::PropertyBinaryEmojiV1;
2007 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_V1;
2008 }
2023
2024#[doc = r" Characters that have emoji presentation by default."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::EmojiPresentation;"]
#[doc = r""]
#[doc =
r" let emoji_presentation = CodePointSetData::new::<EmojiPresentation>();"]
#[doc = r""]
#[doc = r" assert!(emoji_presentation.contains('🦬')); // U+1F9AC BISON"]
#[doc =
r" assert!(!emoji_presentation.contains('♻')); // U+267B BLACK UNIVERSAL RECYCLING SYMBOL"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct EmojiPresentation;
#[automatically_derived]impl ::core::fmt::Debug for EmojiPresentation {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "EmojiPresentation")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for EmojiPresentation { }
#[allow(deprecated)]
impl BinaryProperty for EmojiPresentation {
type DataMarker = crate::provider::PropertyBinaryEmojiPresentationV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EMOJI_PRESENTATION_V1;
const NAME: &'static [u8] = "Emoji_Presentation".as_bytes();
const SHORT_NAME: &'static [u8] = "EPres".as_bytes();
}make_binary_property! {
2025 name: "Emoji_Presentation";
2026 short_name: "EPres";
2027 ident: EmojiPresentation;
2028 data_marker: crate::provider::PropertyBinaryEmojiPresentationV1;
2029 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_PRESENTATION_V1;
2030 }
2045
2046#[doc =
r" Characters whose principal function is to extend the value of a preceding alphabetic"]
#[doc = r" character or to extend the shape of adjacent characters."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Extender;"]
#[doc = r""]
#[doc = r" let extender = CodePointSetData::new::<Extender>();"]
#[doc = r""]
#[doc =
r" assert!(extender.contains('ヾ')); // U+30FE KATAKANA VOICED ITERATION MARK"]
#[doc =
r" assert!(extender.contains('ー')); // U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK"]
#[doc =
r" assert!(!extender.contains('・')); // U+30FB KATAKANA MIDDLE DOT"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Extender;
#[automatically_derived]impl ::core::fmt::Debug for Extender {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Extender")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Extender { }
#[allow(deprecated)]
impl BinaryProperty for Extender {
type DataMarker = crate::provider::PropertyBinaryExtenderV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EXTENDER_V1;
const NAME: &'static [u8] = "Extender".as_bytes();
const SHORT_NAME: &'static [u8] = "Ext".as_bytes();
}make_binary_property! {
2047 name: "Extender";
2048 short_name: "Ext";
2049 ident: Extender;
2050 data_marker: crate::provider::PropertyBinaryExtenderV1;
2051 singleton: SINGLETON_PROPERTY_BINARY_EXTENDER_V1;
2052 }
2069
2070#[doc =
r" Pictographic symbols, as well as reserved ranges in blocks largely associated with"]
#[doc = r" emoji characters"]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::ExtendedPictographic;"]
#[doc = r""]
#[doc =
r" let extended_pictographic = CodePointSetData::new::<ExtendedPictographic>();"]
#[doc = r""]
#[doc =
r" assert!(extended_pictographic.contains('🥳')); // U+1F973 FACE WITH PARTY HORN AND PARTY HAT"]
#[doc =
r" assert!(!extended_pictographic.contains('🇪')); // U+1F1EA REGIONAL INDICATOR SYMBOL LETTER E"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct ExtendedPictographic;
#[automatically_derived]impl ::core::fmt::Debug for ExtendedPictographic {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ExtendedPictographic")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for ExtendedPictographic { }
#[allow(deprecated)]
impl BinaryProperty for ExtendedPictographic {
type DataMarker = crate::provider::PropertyBinaryExtendedPictographicV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EXTENDED_PICTOGRAPHIC_V1;
const NAME: &'static [u8] = "Extended_Pictographic".as_bytes();
const SHORT_NAME: &'static [u8] = "ExtPict".as_bytes();
}make_binary_property! {
2071 name: "Extended_Pictographic";
2072 short_name: "ExtPict";
2073 ident: ExtendedPictographic;
2074 data_marker: crate::provider::PropertyBinaryExtendedPictographicV1;
2075 singleton: SINGLETON_PROPERTY_BINARY_EXTENDED_PICTOGRAPHIC_V1;
2076 }
2092
2093#[doc = r" Invisible characters."]
#[doc = r""]
#[doc = r" This is defined for POSIX compatibility."]
#[non_exhaustive]
pub struct Graph;
#[automatically_derived]impl ::core::fmt::Debug for Graph {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Graph")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Graph { }
#[allow(deprecated)]
impl BinaryProperty for Graph {
type DataMarker = crate::provider::PropertyBinaryGraphV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_GRAPH_V1;
const NAME: &'static [u8] = "graph".as_bytes();
const SHORT_NAME: &'static [u8] = "graph".as_bytes();
}make_binary_property! {
2094 name: "graph";
2095 short_name: "graph";
2096 ident: Graph;
2097 data_marker: crate::provider::PropertyBinaryGraphV1;
2098 singleton: SINGLETON_PROPERTY_BINARY_GRAPH_V1;
2099 }
2104
2105#[doc =
r" Property used together with the definition of Standard Korean Syllable Block to define"]
#[doc = r#" "Grapheme base"."#]
#[doc = r""]
#[doc = r" See D58 in Chapter 3, Conformance in the Unicode Standard."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::GraphemeBase;"]
#[doc = r""]
#[doc = r" let grapheme_base = CodePointSetData::new::<GraphemeBase>();"]
#[doc = r""]
#[doc =
r" assert!(grapheme_base.contains('ക')); // U+0D15 MALAYALAM LETTER KA"]
#[doc =
r" assert!(grapheme_base.contains('\u{0D3F}')); // U+0D3F MALAYALAM VOWEL SIGN I"]
#[doc =
r" assert!(!grapheme_base.contains('\u{0D3E}')); // U+0D3E MALAYALAM VOWEL SIGN AA"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct GraphemeBase;
#[automatically_derived]impl ::core::fmt::Debug for GraphemeBase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "GraphemeBase")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for GraphemeBase { }
#[allow(deprecated)]
impl BinaryProperty for GraphemeBase {
type DataMarker = crate::provider::PropertyBinaryGraphemeBaseV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_GRAPHEME_BASE_V1;
const NAME: &'static [u8] = "Grapheme_Base".as_bytes();
const SHORT_NAME: &'static [u8] = "Gr_Base".as_bytes();
}make_binary_property! {
2106 name: "Grapheme_Base";
2107 short_name: "Gr_Base";
2108 ident: GraphemeBase;
2109 data_marker: crate::provider::PropertyBinaryGraphemeBaseV1;
2110 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_BASE_V1;
2111 }
2130
2131#[doc = r#" Property used to define "Grapheme extender"."#]
#[doc = r""]
#[doc = r" See D59 in Chapter 3, Conformance in the"]
#[doc = r" Unicode Standard."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::GraphemeExtend;"]
#[doc = r""]
#[doc = r" let grapheme_extend = CodePointSetData::new::<GraphemeExtend>();"]
#[doc = r""]
#[doc =
r" assert!(!grapheme_extend.contains('ക')); // U+0D15 MALAYALAM LETTER KA"]
#[doc =
r" assert!(!grapheme_extend.contains('\u{0D3F}')); // U+0D3F MALAYALAM VOWEL SIGN I"]
#[doc =
r" assert!(grapheme_extend.contains('\u{0D3E}')); // U+0D3E MALAYALAM VOWEL SIGN AA"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct GraphemeExtend;
#[automatically_derived]impl ::core::fmt::Debug for GraphemeExtend {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "GraphemeExtend")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for GraphemeExtend { }
#[allow(deprecated)]
impl BinaryProperty for GraphemeExtend {
type DataMarker = crate::provider::PropertyBinaryGraphemeExtendV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_GRAPHEME_EXTEND_V1;
const NAME: &'static [u8] = "Grapheme_Extend".as_bytes();
const SHORT_NAME: &'static [u8] = "Gr_Ext".as_bytes();
}make_binary_property! {
2132 name: "Grapheme_Extend";
2133 short_name: "Gr_Ext";
2134 ident: GraphemeExtend;
2135 data_marker: crate::provider::PropertyBinaryGraphemeExtendV1;
2136 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_EXTEND_V1;
2137 }
2156
2157#[doc = r" Deprecated property."]
#[doc = r""]
#[doc = r" Formerly proposed for programmatic determination of grapheme"]
#[doc = r" cluster boundaries."]
#[non_exhaustive]
pub struct GraphemeLink;
#[automatically_derived]impl ::core::fmt::Debug for GraphemeLink {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "GraphemeLink")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for GraphemeLink { }
#[allow(deprecated)]
impl BinaryProperty for GraphemeLink {
type DataMarker = crate::provider::PropertyBinaryGraphemeLinkV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_GRAPHEME_LINK_V1;
const NAME: &'static [u8] = "Grapheme_Link".as_bytes();
const SHORT_NAME: &'static [u8] = "Gr_Link".as_bytes();
}make_binary_property! {
2158 name: "Grapheme_Link";
2159 short_name: "Gr_Link";
2160 ident: GraphemeLink;
2161 data_marker: crate::provider::PropertyBinaryGraphemeLinkV1;
2162 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_LINK_V1;
2163 }
2168
2169#[doc =
r" Characters commonly used for the representation of hexadecimal numbers, plus their"]
#[doc = r" compatibility equivalents."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::HexDigit;"]
#[doc = r""]
#[doc = r" let hex_digit = CodePointSetData::new::<HexDigit>();"]
#[doc = r""]
#[doc = r" assert!(hex_digit.contains('0'));"]
#[doc =
r" assert!(!hex_digit.contains('੩')); // U+0A69 GURMUKHI DIGIT THREE"]
#[doc = r" assert!(hex_digit.contains('f'));"]
#[doc =
r" assert!(hex_digit.contains('f')); // U+FF46 FULLWIDTH LATIN SMALL LETTER F"]
#[doc =
r" assert!(hex_digit.contains('F')); // U+FF26 FULLWIDTH LATIN CAPITAL LETTER F"]
#[doc =
r" assert!(!hex_digit.contains('Ä')); // U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct HexDigit;
#[automatically_derived]impl ::core::fmt::Debug for HexDigit {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "HexDigit")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for HexDigit { }
#[allow(deprecated)]
impl BinaryProperty for HexDigit {
type DataMarker = crate::provider::PropertyBinaryHexDigitV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_HEX_DIGIT_V1;
const NAME: &'static [u8] = "Hex_Digit".as_bytes();
const SHORT_NAME: &'static [u8] = "Hex".as_bytes();
}make_binary_property! {
2170 name: "Hex_Digit";
2171 short_name: "Hex";
2172 ident: HexDigit;
2173 data_marker: crate::provider::PropertyBinaryHexDigitV1;
2174 singleton: SINGLETON_PROPERTY_BINARY_HEX_DIGIT_V1;
2175 }
2194
2195#[doc = r" Deprecated property."]
#[doc = r""]
#[doc = r" Dashes which are used to mark connections between pieces of"]
#[doc = r" words, plus the Katakana middle dot."]
#[non_exhaustive]
pub struct Hyphen;
#[automatically_derived]impl ::core::fmt::Debug for Hyphen {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Hyphen")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Hyphen { }
#[allow(deprecated)]
impl BinaryProperty for Hyphen {
type DataMarker = crate::provider::PropertyBinaryHyphenV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_HYPHEN_V1;
const NAME: &'static [u8] = "Hyphen".as_bytes();
const SHORT_NAME: &'static [u8] = "Hyphen".as_bytes();
}make_binary_property! {
2196 name: "Hyphen";
2197 short_name: "Hyphen";
2198 ident: Hyphen;
2199 data_marker: crate::provider::PropertyBinaryHyphenV1;
2200 singleton: SINGLETON_PROPERTY_BINARY_HYPHEN_V1;
2201 }
2206
2207#[doc = r" `ID_Compat_Math_Continue` Property"]
#[non_exhaustive]
pub struct IdCompatMathContinue;
#[automatically_derived]impl ::core::fmt::Debug for IdCompatMathContinue {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "IdCompatMathContinue")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for IdCompatMathContinue { }
#[allow(deprecated)]
impl BinaryProperty for IdCompatMathContinue {
type DataMarker = crate::provider::PropertyBinaryIdCompatMathContinueV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_ID_COMPAT_MATH_CONTINUE_V1;
const NAME: &'static [u8] = "ID_Compat_Math_Continue".as_bytes();
const SHORT_NAME: &'static [u8] = "ID_Compat_Math_Continue".as_bytes();
}make_binary_property! {
2208 name: "ID_Compat_Math_Continue";
2209 short_name: "ID_Compat_Math_Continue";
2210 ident: IdCompatMathContinue;
2211 data_marker: crate::provider::PropertyBinaryIdCompatMathContinueV1;
2212 singleton: SINGLETON_PROPERTY_BINARY_ID_COMPAT_MATH_CONTINUE_V1;
2213 }
2215
2216#[doc = r" `ID_Compat_Math_Start` Property"]
#[non_exhaustive]
pub struct IdCompatMathStart;
#[automatically_derived]impl ::core::fmt::Debug for IdCompatMathStart {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "IdCompatMathStart")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for IdCompatMathStart { }
#[allow(deprecated)]
impl BinaryProperty for IdCompatMathStart {
type DataMarker = crate::provider::PropertyBinaryIdCompatMathStartV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_ID_COMPAT_MATH_START_V1;
const NAME: &'static [u8] = "ID_Compat_Math_Start".as_bytes();
const SHORT_NAME: &'static [u8] = "ID_Compat_Math_Start".as_bytes();
}make_binary_property! {
2217 name: "ID_Compat_Math_Start";
2218 short_name: "ID_Compat_Math_Start";
2219 ident: IdCompatMathStart;
2220 data_marker: crate::provider::PropertyBinaryIdCompatMathStartV1;
2221 singleton: SINGLETON_PROPERTY_BINARY_ID_COMPAT_MATH_START_V1;
2222 }
2224
2225#[doc =
r" Characters that can come after the first character in an identifier."]
#[doc = r""]
#[doc = r" If using NFKC to"]
#[doc =
r" fold differences between characters, use [`XidContinue`] instead. See"]
#[doc =
r" [`Unicode Standard Annex #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for"]
#[doc = r" more details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::IdContinue;"]
#[doc = r""]
#[doc = r" let id_continue = CodePointSetData::new::<IdContinue>();"]
#[doc = r""]
#[doc = r" assert!(id_continue.contains('x'));"]
#[doc = r" assert!(id_continue.contains('1'));"]
#[doc = r" assert!(id_continue.contains('_'));"]
#[doc = r" assert!(id_continue.contains('ߝ')); // U+07DD NKO LETTER FA"]
#[doc =
r" assert!(!id_continue.contains('ⓧ')); // U+24E7 CIRCLED LATIN SMALL LETTER X"]
#[doc =
r" assert!(id_continue.contains('\u{FC5E}')); // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct IdContinue;
#[automatically_derived]impl ::core::fmt::Debug for IdContinue {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "IdContinue")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for IdContinue { }
#[allow(deprecated)]
impl BinaryProperty for IdContinue {
type DataMarker = crate::provider::PropertyBinaryIdContinueV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_ID_CONTINUE_V1;
const NAME: &'static [u8] = "ID_Continue".as_bytes();
const SHORT_NAME: &'static [u8] = "IDC".as_bytes();
}make_binary_property! {
2226 name: "ID_Continue";
2227 short_name: "IDC";
2228 ident: IdContinue;
2229 data_marker: crate::provider::PropertyBinaryIdContinueV1;
2230 singleton: SINGLETON_PROPERTY_BINARY_ID_CONTINUE_V1;
2231 }
2254
2255#[doc =
r" Characters considered to be CJKV (Chinese, Japanese, Korean, and Vietnamese)"]
#[doc = r" ideographs, or related siniform ideographs"]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Ideographic;"]
#[doc = r""]
#[doc = r" let ideographic = CodePointSetData::new::<Ideographic>();"]
#[doc = r""]
#[doc =
r" assert!(ideographic.contains('川')); // U+5DDD CJK UNIFIED IDEOGRAPH-5DDD"]
#[doc =
r" assert!(!ideographic.contains('밥')); // U+BC25 HANGUL SYLLABLE BAB"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Ideographic;
#[automatically_derived]impl ::core::fmt::Debug for Ideographic {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Ideographic")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Ideographic { }
#[allow(deprecated)]
impl BinaryProperty for Ideographic {
type DataMarker = crate::provider::PropertyBinaryIdeographicV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_IDEOGRAPHIC_V1;
const NAME: &'static [u8] = "Ideographic".as_bytes();
const SHORT_NAME: &'static [u8] = "Ideo".as_bytes();
}make_binary_property! {
2256 name: "Ideographic";
2257 short_name: "Ideo";
2258 ident: Ideographic;
2259 data_marker: crate::provider::PropertyBinaryIdeographicV1;
2260 singleton: SINGLETON_PROPERTY_BINARY_IDEOGRAPHIC_V1;
2261 }
2276
2277#[doc = r" Characters that can begin an identifier."]
#[doc = r""]
#[doc = r" If using NFKC to fold differences between"]
#[doc =
r" characters, use [`XidStart`] instead. See [`Unicode Standard Annex"]
#[doc =
r" #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for more details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::IdStart;"]
#[doc = r""]
#[doc = r" let id_start = CodePointSetData::new::<IdStart>();"]
#[doc = r""]
#[doc = r" assert!(id_start.contains('x'));"]
#[doc = r" assert!(!id_start.contains('1'));"]
#[doc = r" assert!(!id_start.contains('_'));"]
#[doc = r" assert!(id_start.contains('ߝ')); // U+07DD NKO LETTER FA"]
#[doc =
r" assert!(!id_start.contains('ⓧ')); // U+24E7 CIRCLED LATIN SMALL LETTER X"]
#[doc =
r" assert!(id_start.contains('\u{FC5E}')); // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct IdStart;
#[automatically_derived]impl ::core::fmt::Debug for IdStart {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "IdStart")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for IdStart { }
#[allow(deprecated)]
impl BinaryProperty for IdStart {
type DataMarker = crate::provider::PropertyBinaryIdStartV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_ID_START_V1;
const NAME: &'static [u8] = "ID_Start".as_bytes();
const SHORT_NAME: &'static [u8] = "IDS".as_bytes();
}make_binary_property! {
2278 name: "ID_Start";
2279 short_name: "IDS";
2280 ident: IdStart;
2281 data_marker: crate::provider::PropertyBinaryIdStartV1;
2282 singleton: SINGLETON_PROPERTY_BINARY_ID_START_V1;
2283 }
2305
2306#[doc = r" Characters used in Ideographic Description Sequences."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::IdsBinaryOperator;"]
#[doc = r""]
#[doc =
r" let ids_binary_operator = CodePointSetData::new::<IdsBinaryOperator>();"]
#[doc = r""]
#[doc =
r" assert!(ids_binary_operator.contains('\u{2FF5}')); // IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE"]
#[doc =
r" assert!(!ids_binary_operator.contains('\u{3006}')); // IDEOGRAPHIC CLOSING MARK"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct IdsBinaryOperator;
#[automatically_derived]impl ::core::fmt::Debug for IdsBinaryOperator {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "IdsBinaryOperator")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for IdsBinaryOperator { }
#[allow(deprecated)]
impl BinaryProperty for IdsBinaryOperator {
type DataMarker = crate::provider::PropertyBinaryIdsBinaryOperatorV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_IDS_BINARY_OPERATOR_V1;
const NAME: &'static [u8] = "IDS_Binary_Operator".as_bytes();
const SHORT_NAME: &'static [u8] = "IDSB".as_bytes();
}make_binary_property! {
2307 name: "IDS_Binary_Operator";
2308 short_name: "IDSB";
2309 ident: IdsBinaryOperator;
2310 data_marker: crate::provider::PropertyBinaryIdsBinaryOperatorV1;
2311 singleton: SINGLETON_PROPERTY_BINARY_IDS_BINARY_OPERATOR_V1;
2312 }
2326
2327#[doc = r" Characters used in Ideographic Description Sequences."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::IdsTrinaryOperator;"]
#[doc = r""]
#[doc =
r" let ids_trinary_operator = CodePointSetData::new::<IdsTrinaryOperator>();"]
#[doc = r""]
#[doc =
r" assert!(ids_trinary_operator.contains('\u{2FF2}')); // IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT"]
#[doc =
r" assert!(ids_trinary_operator.contains('\u{2FF3}')); // IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW"]
#[doc = r" assert!(!ids_trinary_operator.contains('\u{2FF4}'));"]
#[doc =
r" assert!(!ids_trinary_operator.contains('\u{2FF5}')); // IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE"]
#[doc =
r" assert!(!ids_trinary_operator.contains('\u{3006}')); // IDEOGRAPHIC CLOSING MARK"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct IdsTrinaryOperator;
#[automatically_derived]impl ::core::fmt::Debug for IdsTrinaryOperator {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "IdsTrinaryOperator")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for IdsTrinaryOperator { }
#[allow(deprecated)]
impl BinaryProperty for IdsTrinaryOperator {
type DataMarker = crate::provider::PropertyBinaryIdsTrinaryOperatorV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_IDS_TRINARY_OPERATOR_V1;
const NAME: &'static [u8] = "IDS_Trinary_Operator".as_bytes();
const SHORT_NAME: &'static [u8] = "IDST".as_bytes();
}make_binary_property! {
2328 name: "IDS_Trinary_Operator";
2329 short_name: "IDST";
2330 ident: IdsTrinaryOperator;
2331 data_marker: crate::provider::PropertyBinaryIdsTrinaryOperatorV1;
2332 singleton: SINGLETON_PROPERTY_BINARY_IDS_TRINARY_OPERATOR_V1;
2333 }
2350
2351#[doc = r" `IDS_Unary_Operator` Property"]
#[non_exhaustive]
pub struct IdsUnaryOperator;
#[automatically_derived]impl ::core::fmt::Debug for IdsUnaryOperator {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "IdsUnaryOperator")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for IdsUnaryOperator { }
#[allow(deprecated)]
impl BinaryProperty for IdsUnaryOperator {
type DataMarker = crate::provider::PropertyBinaryIdsUnaryOperatorV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_IDS_UNARY_OPERATOR_V1;
const NAME: &'static [u8] = "IDS_Unary_Operator".as_bytes();
const SHORT_NAME: &'static [u8] = "IDSU".as_bytes();
}make_binary_property! {
2352 name: "IDS_Unary_Operator";
2353 short_name: "IDSU";
2354 ident: IdsUnaryOperator;
2355 data_marker: crate::provider::PropertyBinaryIdsUnaryOperatorV1;
2356 singleton: SINGLETON_PROPERTY_BINARY_IDS_UNARY_OPERATOR_V1;
2357 }
2359
2360#[doc =
r" Format control characters which have specific functions for control of cursive joining"]
#[doc = r" and ligation."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::JoinControl;"]
#[doc = r""]
#[doc = r" let join_control = CodePointSetData::new::<JoinControl>();"]
#[doc = r""]
#[doc =
r" assert!(join_control.contains('\u{200C}')); // ZERO WIDTH NON-JOINER"]
#[doc = r" assert!(join_control.contains('\u{200D}')); // ZERO WIDTH JOINER"]
#[doc = r" assert!(!join_control.contains('\u{200E}'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct JoinControl;
#[automatically_derived]impl ::core::fmt::Debug for JoinControl {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "JoinControl")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for JoinControl { }
#[allow(deprecated)]
impl BinaryProperty for JoinControl {
type DataMarker = crate::provider::PropertyBinaryJoinControlV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_JOIN_CONTROL_V1;
const NAME: &'static [u8] = "Join_Control".as_bytes();
const SHORT_NAME: &'static [u8] = "Join_C".as_bytes();
}make_binary_property! {
2361 name: "Join_Control";
2362 short_name: "Join_C";
2363 ident: JoinControl;
2364 data_marker: crate::provider::PropertyBinaryJoinControlV1;
2365 singleton: SINGLETON_PROPERTY_BINARY_JOIN_CONTROL_V1;
2366 }
2382
2383#[doc =
r" A small number of spacing vowel letters occurring in certain Southeast Asian scripts such as Thai and Lao."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::LogicalOrderException;"]
#[doc = r""]
#[doc =
r" let logical_order_exception = CodePointSetData::new::<LogicalOrderException>();"]
#[doc = r""]
#[doc =
r" assert!(logical_order_exception.contains('ແ')); // U+0EC1 LAO VOWEL SIGN EI"]
#[doc =
r" assert!(!logical_order_exception.contains('ະ')); // U+0EB0 LAO VOWEL SIGN A"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct LogicalOrderException;
#[automatically_derived]impl ::core::fmt::Debug for LogicalOrderException {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "LogicalOrderException")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for LogicalOrderException { }
#[allow(deprecated)]
impl BinaryProperty for LogicalOrderException {
type DataMarker = crate::provider::PropertyBinaryLogicalOrderExceptionV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_LOGICAL_ORDER_EXCEPTION_V1;
const NAME: &'static [u8] = "Logical_Order_Exception".as_bytes();
const SHORT_NAME: &'static [u8] = "LOE".as_bytes();
}make_binary_property! {
2384 name: "Logical_Order_Exception";
2385 short_name: "LOE";
2386 ident: LogicalOrderException;
2387 data_marker: crate::provider::PropertyBinaryLogicalOrderExceptionV1;
2388 singleton: SINGLETON_PROPERTY_BINARY_LOGICAL_ORDER_EXCEPTION_V1;
2389 }
2403
2404#[doc = r" Lowercase characters."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Lowercase;"]
#[doc = r""]
#[doc = r" let lowercase = CodePointSetData::new::<Lowercase>();"]
#[doc = r""]
#[doc = r" assert!(lowercase.contains('a'));"]
#[doc = r" assert!(!lowercase.contains('A'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Lowercase;
#[automatically_derived]impl ::core::fmt::Debug for Lowercase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Lowercase")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Lowercase { }
#[allow(deprecated)]
impl BinaryProperty for Lowercase {
type DataMarker = crate::provider::PropertyBinaryLowercaseV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_LOWERCASE_V1;
const NAME: &'static [u8] = "Lowercase".as_bytes();
const SHORT_NAME: &'static [u8] = "Lower".as_bytes();
}make_binary_property! {
2405 name: "Lowercase";
2406 short_name: "Lower";
2407 ident: Lowercase;
2408 data_marker: crate::provider::PropertyBinaryLowercaseV1;
2409 singleton: SINGLETON_PROPERTY_BINARY_LOWERCASE_V1;
2410 }
2424
2425#[doc = r" Characters used in mathematical notation."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Math;"]
#[doc = r""]
#[doc = r" let math = CodePointSetData::new::<Math>();"]
#[doc = r""]
#[doc = r" assert!(math.contains('='));"]
#[doc = r" assert!(math.contains('+'));"]
#[doc = r" assert!(!math.contains('-'));"]
#[doc = r" assert!(math.contains('−')); // U+2212 MINUS SIGN"]
#[doc = r" assert!(!math.contains('/'));"]
#[doc = r" assert!(math.contains('∕')); // U+2215 DIVISION SLASH"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Math;
#[automatically_derived]impl ::core::fmt::Debug for Math {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Math")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Math { }
#[allow(deprecated)]
impl BinaryProperty for Math {
type DataMarker = crate::provider::PropertyBinaryMathV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_MATH_V1;
const NAME: &'static [u8] = "Math".as_bytes();
const SHORT_NAME: &'static [u8] = "Math".as_bytes();
}make_binary_property! {
2426 name: "Math";
2427 short_name: "Math";
2428 ident: Math;
2429 data_marker: crate::provider::PropertyBinaryMathV1;
2430 singleton: SINGLETON_PROPERTY_BINARY_MATH_V1;
2431 }
2449
2450#[doc = r" `Modifier_Combining_Mark` Property"]
#[non_exhaustive]
pub struct ModifierCombiningMark;
#[automatically_derived]impl ::core::fmt::Debug for ModifierCombiningMark {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ModifierCombiningMark")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for ModifierCombiningMark { }
#[allow(deprecated)]
impl BinaryProperty for ModifierCombiningMark {
type DataMarker = crate::provider::PropertyBinaryModifierCombiningMarkV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_MODIFIER_COMBINING_MARK_V1;
const NAME: &'static [u8] = "Modifier_Combining_Mark".as_bytes();
const SHORT_NAME: &'static [u8] = "MCM".as_bytes();
}make_binary_property! {
2451 name: "Modifier_Combining_Mark";
2452 short_name: "MCM";
2453 ident: ModifierCombiningMark;
2454 data_marker: crate::provider::PropertyBinaryModifierCombiningMarkV1;
2455 singleton: SINGLETON_PROPERTY_BINARY_MODIFIER_COMBINING_MARK_V1;
2456 }
2458
2459#[doc = r" Code points permanently reserved for internal use."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::NoncharacterCodePoint;"]
#[doc = r""]
#[doc =
r" let noncharacter_code_point = CodePointSetData::new::<NoncharacterCodePoint>();"]
#[doc = r""]
#[doc = r" assert!(noncharacter_code_point.contains('\u{FDD0}'));"]
#[doc = r" assert!(noncharacter_code_point.contains('\u{FFFF}'));"]
#[doc = r" assert!(!noncharacter_code_point.contains('\u{10000}'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct NoncharacterCodePoint;
#[automatically_derived]impl ::core::fmt::Debug for NoncharacterCodePoint {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NoncharacterCodePoint")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for NoncharacterCodePoint { }
#[allow(deprecated)]
impl BinaryProperty for NoncharacterCodePoint {
type DataMarker = crate::provider::PropertyBinaryNoncharacterCodePointV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NONCHARACTER_CODE_POINT_V1;
const NAME: &'static [u8] = "Noncharacter_Code_Point".as_bytes();
const SHORT_NAME: &'static [u8] = "NChar".as_bytes();
}make_binary_property! {
2460 name: "Noncharacter_Code_Point";
2461 short_name: "NChar";
2462 ident: NoncharacterCodePoint;
2463 data_marker: crate::provider::PropertyBinaryNoncharacterCodePointV1;
2464 singleton: SINGLETON_PROPERTY_BINARY_NONCHARACTER_CODE_POINT_V1;
2465 }
2480
2481#[doc =
r" Characters that are inert under NFC, i.e., they do not interact with adjacent characters."]
#[deprecated(since = "2.3.0", note = "not a UCD property")]
#[non_exhaustive]
pub struct NfcInert;
#[automatically_derived]impl ::core::fmt::Debug for NfcInert {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NfcInert")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for NfcInert { }
#[allow(deprecated)]
impl BinaryProperty for NfcInert {
type DataMarker = crate::provider::PropertyBinaryNfcInertV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NFC_INERT_V1;
const NAME: &'static [u8] = "NFC_Inert".as_bytes();
const SHORT_NAME: &'static [u8] = "nfcinert".as_bytes();
}make_binary_property! {
2482 name: "NFC_Inert";
2483 short_name: "nfcinert";
2484 ident: NfcInert;
2485 data_marker: crate::provider::PropertyBinaryNfcInertV1;
2486 singleton: SINGLETON_PROPERTY_BINARY_NFC_INERT_V1;
2487 #[deprecated(since = "2.3.0", note = "not a UCD property")]
2489}
2490
2491#[doc =
r" Characters that are inert under NFD, i.e., they do not interact with adjacent characters."]
#[deprecated(since = "2.3.0", note = "not a UCD property")]
#[non_exhaustive]
pub struct NfdInert;
#[automatically_derived]impl ::core::fmt::Debug for NfdInert {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NfdInert")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for NfdInert { }
#[allow(deprecated)]
impl BinaryProperty for NfdInert {
type DataMarker = crate::provider::PropertyBinaryNfdInertV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NFD_INERT_V1;
const NAME: &'static [u8] = "NFD_Inert".as_bytes();
const SHORT_NAME: &'static [u8] = "nfdinert".as_bytes();
}make_binary_property! {
2492 name: "NFD_Inert";
2493 short_name: "nfdinert";
2494 ident: NfdInert;
2495 data_marker: crate::provider::PropertyBinaryNfdInertV1;
2496 singleton: SINGLETON_PROPERTY_BINARY_NFD_INERT_V1;
2497 #[deprecated(since = "2.3.0", note = "not a UCD property")]
2499}
2500
2501#[doc =
r" Characters that are inert under NFKC, i.e., they do not interact with adjacent characters."]
#[deprecated(since = "2.3.0", note = "not a UCD property")]
#[non_exhaustive]
pub struct NfkcInert;
#[automatically_derived]impl ::core::fmt::Debug for NfkcInert {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NfkcInert")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for NfkcInert { }
#[allow(deprecated)]
impl BinaryProperty for NfkcInert {
type DataMarker = crate::provider::PropertyBinaryNfkcInertV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NFKC_INERT_V1;
const NAME: &'static [u8] = "NFKC_Inert".as_bytes();
const SHORT_NAME: &'static [u8] = "nfkcinert".as_bytes();
}make_binary_property! {
2502 name: "NFKC_Inert";
2503 short_name: "nfkcinert";
2504 ident: NfkcInert;
2505 data_marker: crate::provider::PropertyBinaryNfkcInertV1;
2506 singleton: SINGLETON_PROPERTY_BINARY_NFKC_INERT_V1;
2507 #[deprecated(since = "2.3.0", note = "not a UCD property")]
2509}
2510
2511#[doc =
r" Characters that are inert under NFKD, i.e., they do not interact with adjacent characters."]
#[deprecated(since = "2.3.0", note = "not a UCD property")]
#[non_exhaustive]
pub struct NfkdInert;
#[automatically_derived]impl ::core::fmt::Debug for NfkdInert {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NfkdInert")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for NfkdInert { }
#[allow(deprecated)]
impl BinaryProperty for NfkdInert {
type DataMarker = crate::provider::PropertyBinaryNfkdInertV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NFKD_INERT_V1;
const NAME: &'static [u8] = "NFKD_Inert".as_bytes();
const SHORT_NAME: &'static [u8] = "nfkdinert".as_bytes();
}make_binary_property! {
2512 name: "NFKD_Inert";
2513 short_name: "nfkdinert";
2514 ident: NfkdInert;
2515 data_marker: crate::provider::PropertyBinaryNfkdInertV1;
2516 singleton: SINGLETON_PROPERTY_BINARY_NFKD_INERT_V1;
2517 #[deprecated(since = "2.3.0", note = "not a UCD property")]
2519}
2520
2521#[doc =
r" Characters used as syntax in patterns (such as regular expressions)."]
#[doc = r""]
#[doc = r" See [`Unicode"]
#[doc =
r" Standard Annex #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for more"]
#[doc = r" details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::PatternSyntax;"]
#[doc = r""]
#[doc = r" let pattern_syntax = CodePointSetData::new::<PatternSyntax>();"]
#[doc = r""]
#[doc = r" assert!(pattern_syntax.contains('{'));"]
#[doc =
r" assert!(pattern_syntax.contains('⇒')); // U+21D2 RIGHTWARDS DOUBLE ARROW"]
#[doc = r" assert!(!pattern_syntax.contains('0'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct PatternSyntax;
#[automatically_derived]impl ::core::fmt::Debug for PatternSyntax {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "PatternSyntax")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for PatternSyntax { }
#[allow(deprecated)]
impl BinaryProperty for PatternSyntax {
type DataMarker = crate::provider::PropertyBinaryPatternSyntaxV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_PATTERN_SYNTAX_V1;
const NAME: &'static [u8] = "Pattern_Syntax".as_bytes();
const SHORT_NAME: &'static [u8] = "Pat_Syn".as_bytes();
}make_binary_property! {
2522 name: "Pattern_Syntax";
2523 short_name: "Pat_Syn";
2524 ident: PatternSyntax;
2525 data_marker: crate::provider::PropertyBinaryPatternSyntaxV1;
2526 singleton: SINGLETON_PROPERTY_BINARY_PATTERN_SYNTAX_V1;
2527 }
2546
2547#[doc =
r" Characters used as whitespace in patterns (such as regular expressions)."]
#[doc = r""]
#[doc = r" See"]
#[doc =
r" [`Unicode Standard Annex #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for"]
#[doc = r" more details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::PatternWhiteSpace;"]
#[doc = r""]
#[doc =
r" let pattern_white_space = CodePointSetData::new::<PatternWhiteSpace>();"]
#[doc = r""]
#[doc = r" assert!(pattern_white_space.contains(' '));"]
#[doc =
r" assert!(pattern_white_space.contains('\u{2029}')); // PARAGRAPH SEPARATOR"]
#[doc = r" assert!(pattern_white_space.contains('\u{000A}')); // NEW LINE"]
#[doc =
r" assert!(!pattern_white_space.contains('\u{00A0}')); // NO-BREAK SPACE"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct PatternWhiteSpace;
#[automatically_derived]impl ::core::fmt::Debug for PatternWhiteSpace {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "PatternWhiteSpace")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for PatternWhiteSpace { }
#[allow(deprecated)]
impl BinaryProperty for PatternWhiteSpace {
type DataMarker = crate::provider::PropertyBinaryPatternWhiteSpaceV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_PATTERN_WHITE_SPACE_V1;
const NAME: &'static [u8] = "Pattern_White_Space".as_bytes();
const SHORT_NAME: &'static [u8] = "Pat_WS".as_bytes();
}make_binary_property! {
2548 name: "Pattern_White_Space";
2549 short_name: "Pat_WS";
2550 ident: PatternWhiteSpace;
2551 data_marker: crate::provider::PropertyBinaryPatternWhiteSpaceV1;
2552 singleton: SINGLETON_PROPERTY_BINARY_PATTERN_WHITE_SPACE_V1;
2553 }
2573
2574#[doc =
r" A small class of visible format controls, which precede and then span a sequence of"]
#[doc = r" other characters, usually digits."]
#[non_exhaustive]
pub struct PrependedConcatenationMark;
#[automatically_derived]impl ::core::fmt::Debug for PrependedConcatenationMark
{
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "PrependedConcatenationMark")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for PrependedConcatenationMark { }
#[allow(deprecated)]
impl BinaryProperty for PrependedConcatenationMark {
type DataMarker =
crate::provider::PropertyBinaryPrependedConcatenationMarkV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_PREPENDED_CONCATENATION_MARK_V1;
const NAME: &'static [u8] = "Prepended_Concatenation_Mark".as_bytes();
const SHORT_NAME: &'static [u8] = "PCM".as_bytes();
}make_binary_property! {
2575 name: "Prepended_Concatenation_Mark";
2576 short_name: "PCM";
2577 ident: PrependedConcatenationMark;
2578 data_marker: crate::provider::PropertyBinaryPrependedConcatenationMarkV1;
2579 singleton: SINGLETON_PROPERTY_BINARY_PREPENDED_CONCATENATION_MARK_V1;
2580 }
2583
2584#[doc = r" Printable characters (visible characters and whitespace)."]
#[doc = r""]
#[doc = r" This is defined for POSIX compatibility."]
#[non_exhaustive]
pub struct Print;
#[automatically_derived]impl ::core::fmt::Debug for Print {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Print")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Print { }
#[allow(deprecated)]
impl BinaryProperty for Print {
type DataMarker = crate::provider::PropertyBinaryPrintV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_PRINT_V1;
const NAME: &'static [u8] = "print".as_bytes();
const SHORT_NAME: &'static [u8] = "print".as_bytes();
}make_binary_property! {
2585 name: "print";
2586 short_name: "print";
2587 ident: Print;
2588 data_marker: crate::provider::PropertyBinaryPrintV1;
2589 singleton: SINGLETON_PROPERTY_BINARY_PRINT_V1;
2590 }
2594
2595#[doc = r" Punctuation characters that function as quotation marks."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::QuotationMark;"]
#[doc = r""]
#[doc = r" let quotation_mark = CodePointSetData::new::<QuotationMark>();"]
#[doc = r""]
#[doc = r" assert!(quotation_mark.contains('\''));"]
#[doc =
r" assert!(quotation_mark.contains('„')); // U+201E DOUBLE LOW-9 QUOTATION MARK"]
#[doc = r" assert!(!quotation_mark.contains('<'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct QuotationMark;
#[automatically_derived]impl ::core::fmt::Debug for QuotationMark {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "QuotationMark")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for QuotationMark { }
#[allow(deprecated)]
impl BinaryProperty for QuotationMark {
type DataMarker = crate::provider::PropertyBinaryQuotationMarkV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_QUOTATION_MARK_V1;
const NAME: &'static [u8] = "Quotation_Mark".as_bytes();
const SHORT_NAME: &'static [u8] = "QMark".as_bytes();
}make_binary_property! {
2596 name: "Quotation_Mark";
2597 short_name: "QMark";
2598 ident: QuotationMark;
2599 data_marker: crate::provider::PropertyBinaryQuotationMarkV1;
2600 singleton: SINGLETON_PROPERTY_BINARY_QUOTATION_MARK_V1;
2601 }
2616
2617#[doc =
r" Characters used in the definition of Ideographic Description Sequences."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Radical;"]
#[doc = r""]
#[doc = r" let radical = CodePointSetData::new::<Radical>();"]
#[doc = r""]
#[doc = r" assert!(radical.contains('⺆')); // U+2E86 CJK RADICAL BOX"]
#[doc =
r" assert!(!radical.contains('丹')); // U+F95E CJK COMPATIBILITY IDEOGRAPH-F95E"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Radical;
#[automatically_derived]impl ::core::fmt::Debug for Radical {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Radical")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Radical { }
#[allow(deprecated)]
impl BinaryProperty for Radical {
type DataMarker = crate::provider::PropertyBinaryRadicalV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_RADICAL_V1;
const NAME: &'static [u8] = "Radical".as_bytes();
const SHORT_NAME: &'static [u8] = "Radical".as_bytes();
}make_binary_property! {
2618 name: "Radical";
2619 short_name: "Radical";
2620 ident: Radical;
2621 data_marker: crate::provider::PropertyBinaryRadicalV1;
2622 singleton: SINGLETON_PROPERTY_BINARY_RADICAL_V1;
2623 }
2637
2638#[doc = r" Regional indicator characters, `U+1F1E6..U+1F1FF`."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::RegionalIndicator;"]
#[doc = r""]
#[doc =
r" let regional_indicator = CodePointSetData::new::<RegionalIndicator>();"]
#[doc = r""]
#[doc =
r" assert!(regional_indicator.contains('🇹')); // U+1F1F9 REGIONAL INDICATOR SYMBOL LETTER T"]
#[doc =
r" assert!(!regional_indicator.contains('Ⓣ')); // U+24C9 CIRCLED LATIN CAPITAL LETTER T"]
#[doc = r" assert!(!regional_indicator.contains('T'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct RegionalIndicator;
#[automatically_derived]impl ::core::fmt::Debug for RegionalIndicator {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "RegionalIndicator")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for RegionalIndicator { }
#[allow(deprecated)]
impl BinaryProperty for RegionalIndicator {
type DataMarker = crate::provider::PropertyBinaryRegionalIndicatorV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_REGIONAL_INDICATOR_V1;
const NAME: &'static [u8] = "Regional_Indicator".as_bytes();
const SHORT_NAME: &'static [u8] = "RI".as_bytes();
}make_binary_property! {
2639 name: "Regional_Indicator";
2640 short_name: "RI";
2641 ident: RegionalIndicator;
2642 data_marker: crate::provider::PropertyBinaryRegionalIndicatorV1;
2643 singleton: SINGLETON_PROPERTY_BINARY_REGIONAL_INDICATOR_V1;
2644 }
2659
2660#[doc = r#" Characters with a "soft dot", like i or j."#]
#[doc = r""]
#[doc = r" An accent placed on these characters causes"]
#[doc = r" the dot to disappear."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::SoftDotted;"]
#[doc = r""]
#[doc = r" let soft_dotted = CodePointSetData::new::<SoftDotted>();"]
#[doc = r""]
#[doc =
r" assert!(soft_dotted.contains('і')); //U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I"]
#[doc =
r" assert!(!soft_dotted.contains('ı')); // U+0131 LATIN SMALL LETTER DOTLESS I"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct SoftDotted;
#[automatically_derived]impl ::core::fmt::Debug for SoftDotted {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "SoftDotted")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for SoftDotted { }
#[allow(deprecated)]
impl BinaryProperty for SoftDotted {
type DataMarker = crate::provider::PropertyBinarySoftDottedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_SOFT_DOTTED_V1;
const NAME: &'static [u8] = "Soft_Dotted".as_bytes();
const SHORT_NAME: &'static [u8] = "SD".as_bytes();
}make_binary_property! {
2661 name: "Soft_Dotted";
2662 short_name: "SD";
2663 ident: SoftDotted;
2664 data_marker: crate::provider::PropertyBinarySoftDottedV1;
2665 singleton: SINGLETON_PROPERTY_BINARY_SOFT_DOTTED_V1;
2666 }
2683
2684#[doc =
r" Characters that are starters in terms of Unicode normalization and combining character"]
#[doc = r" sequences."]
#[deprecated(since = "2.3.0", note = "not a UCD property")]
#[non_exhaustive]
pub struct SegmentStarter;
#[automatically_derived]impl ::core::fmt::Debug for SegmentStarter {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "SegmentStarter")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for SegmentStarter { }
#[allow(deprecated)]
impl BinaryProperty for SegmentStarter {
type DataMarker = crate::provider::PropertyBinarySegmentStarterV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_SEGMENT_STARTER_V1;
const NAME: &'static [u8] = "Segment_Starter".as_bytes();
const SHORT_NAME: &'static [u8] = "segstart".as_bytes();
}make_binary_property! {
2685 name: "Segment_Starter";
2686 short_name: "segstart";
2687 ident: SegmentStarter;
2688 data_marker: crate::provider::PropertyBinarySegmentStarterV1;
2689 singleton: SINGLETON_PROPERTY_BINARY_SEGMENT_STARTER_V1;
2690 #[deprecated(since = "2.3.0", note = "not a UCD property")]
2693}
2694
2695#[doc =
r" Characters that are either the source of a case mapping or in the target of a case"]
#[doc = r" mapping."]
#[deprecated(since = "2.3.0", note = "not a UCD property")]
#[non_exhaustive]
pub struct CaseSensitive;
#[automatically_derived]impl ::core::fmt::Debug for CaseSensitive {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "CaseSensitive")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for CaseSensitive { }
#[allow(deprecated)]
impl BinaryProperty for CaseSensitive {
type DataMarker = crate::provider::PropertyBinaryCaseSensitiveV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CASE_SENSITIVE_V1;
const NAME: &'static [u8] = "Case_Sensitive".as_bytes();
const SHORT_NAME: &'static [u8] = "Sensitive".as_bytes();
}make_binary_property! {
2696 name: "Case_Sensitive";
2697 short_name: "Sensitive";
2698 ident: CaseSensitive;
2699 data_marker: crate::provider::PropertyBinaryCaseSensitiveV1;
2700 singleton: SINGLETON_PROPERTY_BINARY_CASE_SENSITIVE_V1;
2701 #[deprecated(since = "2.3.0", note = "not a UCD property")]
2704}
2705
2706#[doc = r" Punctuation characters that generally mark the end of sentences."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::SentenceTerminal;"]
#[doc = r""]
#[doc =
r" let sentence_terminal = CodePointSetData::new::<SentenceTerminal>();"]
#[doc = r""]
#[doc = r" assert!(sentence_terminal.contains('.'));"]
#[doc = r" assert!(sentence_terminal.contains('?'));"]
#[doc =
r" assert!(sentence_terminal.contains('᪨')); // U+1AA8 TAI THAM SIGN KAAN"]
#[doc = r" assert!(!sentence_terminal.contains(','));"]
#[doc =
r" assert!(!sentence_terminal.contains('¿')); // U+00BF INVERTED QUESTION MARK"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct SentenceTerminal;
#[automatically_derived]impl ::core::fmt::Debug for SentenceTerminal {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "SentenceTerminal")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for SentenceTerminal { }
#[allow(deprecated)]
impl BinaryProperty for SentenceTerminal {
type DataMarker = crate::provider::PropertyBinarySentenceTerminalV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_SENTENCE_TERMINAL_V1;
const NAME: &'static [u8] = "Sentence_Terminal".as_bytes();
const SHORT_NAME: &'static [u8] = "STerm".as_bytes();
}make_binary_property! {
2707 name: "Sentence_Terminal";
2708 short_name: "STerm";
2709 ident: SentenceTerminal;
2710 data_marker: crate::provider::PropertyBinarySentenceTerminalV1;
2711 singleton: SINGLETON_PROPERTY_BINARY_SENTENCE_TERMINAL_V1;
2712 }
2729
2730#[doc =
r" Punctuation characters that generally mark the end of textual units."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::TerminalPunctuation;"]
#[doc = r""]
#[doc =
r" let terminal_punctuation = CodePointSetData::new::<TerminalPunctuation>();"]
#[doc = r""]
#[doc = r" assert!(terminal_punctuation.contains('.'));"]
#[doc = r" assert!(terminal_punctuation.contains('?'));"]
#[doc =
r" assert!(terminal_punctuation.contains('᪨')); // U+1AA8 TAI THAM SIGN KAAN"]
#[doc = r" assert!(terminal_punctuation.contains(','));"]
#[doc =
r" assert!(!terminal_punctuation.contains('¿')); // U+00BF INVERTED QUESTION MARK"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct TerminalPunctuation;
#[automatically_derived]impl ::core::fmt::Debug for TerminalPunctuation {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "TerminalPunctuation")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for TerminalPunctuation { }
#[allow(deprecated)]
impl BinaryProperty for TerminalPunctuation {
type DataMarker = crate::provider::PropertyBinaryTerminalPunctuationV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_TERMINAL_PUNCTUATION_V1;
const NAME: &'static [u8] = "Terminal_Punctuation".as_bytes();
const SHORT_NAME: &'static [u8] = "Term".as_bytes();
}make_binary_property! {
2731 name: "Terminal_Punctuation";
2732 short_name: "Term";
2733 ident: TerminalPunctuation;
2734 data_marker: crate::provider::PropertyBinaryTerminalPunctuationV1;
2735 singleton: SINGLETON_PROPERTY_BINARY_TERMINAL_PUNCTUATION_V1;
2736 }
2753
2754#[doc =
r" A property which specifies the exact set of Unified CJK Ideographs in the standard."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::UnifiedIdeograph;"]
#[doc = r""]
#[doc =
r" let unified_ideograph = CodePointSetData::new::<UnifiedIdeograph>();"]
#[doc = r""]
#[doc =
r" assert!(unified_ideograph.contains('川')); // U+5DDD CJK UNIFIED IDEOGRAPH-5DDD"]
#[doc =
r" assert!(unified_ideograph.contains('木')); // U+6728 CJK UNIFIED IDEOGRAPH-6728"]
#[doc =
r" assert!(!unified_ideograph.contains('𛅸')); // U+1B178 NUSHU CHARACTER-1B178"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct UnifiedIdeograph;
#[automatically_derived]impl ::core::fmt::Debug for UnifiedIdeograph {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "UnifiedIdeograph")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for UnifiedIdeograph { }
#[allow(deprecated)]
impl BinaryProperty for UnifiedIdeograph {
type DataMarker = crate::provider::PropertyBinaryUnifiedIdeographV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_UNIFIED_IDEOGRAPH_V1;
const NAME: &'static [u8] = "Unified_Ideograph".as_bytes();
const SHORT_NAME: &'static [u8] = "UIdeo".as_bytes();
}make_binary_property! {
2755 name: "Unified_Ideograph";
2756 short_name: "UIdeo";
2757 ident: UnifiedIdeograph;
2758 data_marker: crate::provider::PropertyBinaryUnifiedIdeographV1;
2759 singleton: SINGLETON_PROPERTY_BINARY_UNIFIED_IDEOGRAPH_V1;
2760 }
2775
2776#[doc = r" Uppercase characters."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Uppercase;"]
#[doc = r""]
#[doc = r" let uppercase = CodePointSetData::new::<Uppercase>();"]
#[doc = r""]
#[doc = r" assert!(uppercase.contains('U'));"]
#[doc = r" assert!(!uppercase.contains('u'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Uppercase;
#[automatically_derived]impl ::core::fmt::Debug for Uppercase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Uppercase")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Uppercase { }
#[allow(deprecated)]
impl BinaryProperty for Uppercase {
type DataMarker = crate::provider::PropertyBinaryUppercaseV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_UPPERCASE_V1;
const NAME: &'static [u8] = "Uppercase".as_bytes();
const SHORT_NAME: &'static [u8] = "Upper".as_bytes();
}make_binary_property! {
2777 name: "Uppercase";
2778 short_name: "Upper";
2779 ident: Uppercase;
2780 data_marker: crate::provider::PropertyBinaryUppercaseV1;
2781 singleton: SINGLETON_PROPERTY_BINARY_UPPERCASE_V1;
2782 }
2796
2797#[doc = r" Characters that are Variation Selectors."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::VariationSelector;"]
#[doc = r""]
#[doc =
r" let variation_selector = CodePointSetData::new::<VariationSelector>();"]
#[doc = r""]
#[doc =
r" assert!(variation_selector.contains('\u{180D}')); // MONGOLIAN FREE VARIATION SELECTOR THREE"]
#[doc =
r" assert!(!variation_selector.contains('\u{303E}')); // IDEOGRAPHIC VARIATION INDICATOR"]
#[doc =
r" assert!(variation_selector.contains('\u{FE0F}')); // VARIATION SELECTOR-16"]
#[doc =
r" assert!(!variation_selector.contains('\u{FE10}')); // PRESENTATION FORM FOR VERTICAL COMMA"]
#[doc =
r" assert!(variation_selector.contains('\u{E01EF}')); // VARIATION SELECTOR-256"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct VariationSelector;
#[automatically_derived]impl ::core::fmt::Debug for VariationSelector {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "VariationSelector")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for VariationSelector { }
#[allow(deprecated)]
impl BinaryProperty for VariationSelector {
type DataMarker = crate::provider::PropertyBinaryVariationSelectorV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_VARIATION_SELECTOR_V1;
const NAME: &'static [u8] = "Variation_Selector".as_bytes();
const SHORT_NAME: &'static [u8] = "VS".as_bytes();
}make_binary_property! {
2798 name: "Variation_Selector";
2799 short_name: "VS";
2800 ident: VariationSelector;
2801 data_marker: crate::provider::PropertyBinaryVariationSelectorV1;
2802 singleton: SINGLETON_PROPERTY_BINARY_VARIATION_SELECTOR_V1;
2803 }
2820
2821#[doc =
r" Spaces, separator characters and other control characters which should be treated by"]
#[doc =
r#" programming languages as "white space" for the purpose of parsing elements."#]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::WhiteSpace;"]
#[doc = r""]
#[doc = r" let white_space = CodePointSetData::new::<WhiteSpace>();"]
#[doc = r""]
#[doc = r" assert!(white_space.contains(' '));"]
#[doc = r" assert!(white_space.contains('\u{000A}')); // NEW LINE"]
#[doc = r" assert!(white_space.contains('\u{00A0}')); // NO-BREAK SPACE"]
#[doc = r" assert!(!white_space.contains('\u{200B}')); // ZERO WIDTH SPACE"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct WhiteSpace;
#[automatically_derived]impl ::core::fmt::Debug for WhiteSpace {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "WhiteSpace")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for WhiteSpace { }
#[allow(deprecated)]
impl BinaryProperty for WhiteSpace {
type DataMarker = crate::provider::PropertyBinaryWhiteSpaceV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_WHITE_SPACE_V1;
const NAME: &'static [u8] = "White_Space".as_bytes();
const SHORT_NAME: &'static [u8] = "WSpace".as_bytes();
}make_binary_property! {
2822 name: "White_Space";
2823 short_name: "WSpace";
2824 ident: WhiteSpace;
2825 data_marker: crate::provider::PropertyBinaryWhiteSpaceV1;
2826 singleton: SINGLETON_PROPERTY_BINARY_WHITE_SPACE_V1;
2827 }
2844
2845#[doc = r" Hexadecimal digits"]
#[doc = r""]
#[doc = r" This is defined for POSIX compatibility."]
#[non_exhaustive]
pub struct Xdigit;
#[automatically_derived]impl ::core::fmt::Debug for Xdigit {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Xdigit")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for Xdigit { }
#[allow(deprecated)]
impl BinaryProperty for Xdigit {
type DataMarker = crate::provider::PropertyBinaryXdigitV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_XDIGIT_V1;
const NAME: &'static [u8] = "xdigit".as_bytes();
const SHORT_NAME: &'static [u8] = "xdigit".as_bytes();
}make_binary_property! {
2846 name: "xdigit";
2847 short_name: "xdigit";
2848 ident: Xdigit;
2849 data_marker: crate::provider::PropertyBinaryXdigitV1;
2850 singleton: SINGLETON_PROPERTY_BINARY_XDIGIT_V1;
2851 }
2855
2856#[doc =
r" Characters that can come after the first character in an identifier."]
#[doc = r""]
#[doc = r" See [`Unicode Standard Annex"]
#[doc =
r" #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for more details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::XidContinue;"]
#[doc = r""]
#[doc = r" let xid_continue = CodePointSetData::new::<XidContinue>();"]
#[doc = r""]
#[doc = r" assert!(xid_continue.contains('x'));"]
#[doc = r" assert!(xid_continue.contains('1'));"]
#[doc = r" assert!(xid_continue.contains('_'));"]
#[doc = r" assert!(xid_continue.contains('ߝ')); // U+07DD NKO LETTER FA"]
#[doc =
r" assert!(!xid_continue.contains('ⓧ')); // U+24E7 CIRCLED LATIN SMALL LETTER X"]
#[doc =
r" assert!(!xid_continue.contains('\u{FC5E}')); // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct XidContinue;
#[automatically_derived]impl ::core::fmt::Debug for XidContinue {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "XidContinue")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for XidContinue { }
#[allow(deprecated)]
impl BinaryProperty for XidContinue {
type DataMarker = crate::provider::PropertyBinaryXidContinueV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_XID_CONTINUE_V1;
const NAME: &'static [u8] = "XID_Continue".as_bytes();
const SHORT_NAME: &'static [u8] = "XIDC".as_bytes();
}make_binary_property! {
2857 name: "XID_Continue";
2858 short_name: "XIDC";
2859 ident: XidContinue;
2860 data_marker: crate::provider::PropertyBinaryXidContinueV1;
2861 singleton: SINGLETON_PROPERTY_BINARY_XID_CONTINUE_V1;
2862 }
2883
2884#[doc = r" Characters that can begin an identifier."]
#[doc = r""]
#[doc = r" See [`Unicode"]
#[doc =
r" Standard Annex #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for more"]
#[doc = r" details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::XidStart;"]
#[doc = r""]
#[doc = r" let xid_start = CodePointSetData::new::<XidStart>();"]
#[doc = r""]
#[doc = r" assert!(xid_start.contains('x'));"]
#[doc = r" assert!(!xid_start.contains('1'));"]
#[doc = r" assert!(!xid_start.contains('_'));"]
#[doc = r" assert!(xid_start.contains('ߝ')); // U+07DD NKO LETTER FA"]
#[doc =
r" assert!(!xid_start.contains('ⓧ')); // U+24E7 CIRCLED LATIN SMALL LETTER X"]
#[doc =
r" assert!(!xid_start.contains('\u{FC5E}')); // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct XidStart;
#[automatically_derived]impl ::core::fmt::Debug for XidStart {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "XidStart")
}
}
#[allow(deprecated)]
impl crate::private::Sealed for XidStart { }
#[allow(deprecated)]
impl BinaryProperty for XidStart {
type DataMarker = crate::provider::PropertyBinaryXidStartV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_XID_START_V1;
const NAME: &'static [u8] = "XID_Start".as_bytes();
const SHORT_NAME: &'static [u8] = "XIDS".as_bytes();
}make_binary_property! {
2885 name: "XID_Start";
2886 short_name: "XIDS";
2887 ident: XidStart;
2888 data_marker: crate::provider::PropertyBinaryXidStartV1;
2889 singleton: SINGLETON_PROPERTY_BINARY_XID_START_V1;
2890 }
2912
2913pub use crate::emoji::EmojiSet;
2914
2915macro_rules! make_emoji_set {
2916 (
2917 name: $name:literal;
2918 short_name: $short_name:literal;
2919 ident: $ident:ident;
2920 data_marker: $data_marker:ty;
2921 singleton: $singleton:ident;
2922 $(#[$doc:meta])+
2923 ) => {
2924 $(#[$doc])+
2925 #[derive(Debug)]
2926 #[non_exhaustive]
2927 pub struct $ident;
2928
2929 impl crate::private::Sealed for $ident {}
2930
2931 impl EmojiSet for $ident {
2932 type DataMarker = $data_marker;
2933 #[cfg(feature = "compiled_data")]
2934 const SINGLETON: &'static crate::provider::PropertyUnicodeSet<'static> =
2935 &crate::provider::Baked::$singleton;
2936 const NAME: &'static [u8] = $name.as_bytes();
2937 const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
2938 }
2939 }
2940}
2941
2942#[doc =
r" Characters and character sequences intended for general-purpose, independent, direct input."]
#[doc = r""]
#[doc =
r" See [`Unicode Technical Standard #51`](https://unicode.org/reports/tr51/) for more"]
#[doc = r" details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::EmojiSetData;"]
#[doc = r" use icu::properties::props::BasicEmoji;"]
#[doc = r""]
#[doc = r" let basic_emoji = EmojiSetData::new::<BasicEmoji>();"]
#[doc = r""]
#[doc = r" assert!(!basic_emoji.contains('\u{0020}'));"]
#[doc = r" assert!(!basic_emoji.contains('\n'));"]
#[doc = r" assert!(basic_emoji.contains('🦃')); // U+1F983 TURKEY"]
#[doc = r#" assert!(basic_emoji.contains_str("\u{1F983}"));"#]
#[doc =
r#" assert!(basic_emoji.contains_str("\u{1F6E4}\u{FE0F}")); // railway track"#]
#[doc =
r#" assert!(!basic_emoji.contains_str("\u{0033}\u{FE0F}\u{20E3}")); // Emoji_Keycap_Sequence, keycap 3"#]
#[doc = r" ```"]
#[non_exhaustive]
pub struct BasicEmoji;
#[automatically_derived]impl ::core::fmt::Debug for BasicEmoji {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "BasicEmoji")
}
}
impl crate::private::Sealed for BasicEmoji {}
impl EmojiSet for BasicEmoji {
type DataMarker = crate::provider::PropertyBinaryBasicEmojiV1;
const SINGLETON: &'static crate::provider::PropertyUnicodeSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_BASIC_EMOJI_V1;
const NAME: &'static [u8] = "Basic_Emoji".as_bytes();
const SHORT_NAME: &'static [u8] = "Basic_Emoji".as_bytes();
}make_emoji_set! {
2943 name: "Basic_Emoji";
2944 short_name: "Basic_Emoji";
2945 ident: BasicEmoji;
2946 data_marker: crate::provider::PropertyBinaryBasicEmojiV1;
2947 singleton: SINGLETON_PROPERTY_BINARY_BASIC_EMOJI_V1;
2948 }