1pub use crate::names::{NamedEnumeratedProperty, ParseableEnumeratedProperty};
21
22pub use crate::bidi::{BidiMirroringGlyph, BidiPairedBracketType};
23
24macro_rules! create_const_array {
36 (
37 $ ( #[$meta:meta] )*
38 impl $enum_ty:ident {
39 $( $(#[$const_meta:meta])* $v:vis const $i:ident: $t:ty = $e:expr; )*
40 }
41 #[test]
42 fn $consts_test:ident();
43 ) => {
44 $( #[$meta] )*
45 impl $enum_ty {
46 $(
47 $(#[$const_meta])*
48 $v const $i: $t = $e;
49 )*
50
51 pub const ALL_VALUES: &'static [$enum_ty] = &[
54 $($enum_ty::$i),*
55 ];
56 }
57
58 #[cfg(feature = "datagen")]
59 impl databake::Bake for $enum_ty {
60 fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
61 env.insert("icu_properties");
62 match *self {
63 $(
64 Self::$i => databake::quote!(icu_properties::props::$enum_ty::$i),
65 )*
66 Self(v) => databake::quote!(icu_properties::props::$enum_ty::from_icu4c_value(#v)),
67 }
68 }
69 }
70
71
72 impl From<$enum_ty> for u16 {
73 #[allow(trivial_numeric_casts)]
74 fn from(other: $enum_ty) -> Self {
75 other.0 as u16
76 }
77 }
78
79 #[test]
80 fn $consts_test() {
81 $(
82 assert_eq!(
83 crate::names::PropertyNamesLong::<$enum_ty>::new().get($enum_ty::$i).unwrap()
84 .replace('_', "")
86 .replace("Ethiopic", "Ethiopian")
88 .replace("Aran", "Nastaliq")
90 .replace("LVSyllable", "LeadingVowelSyllable")
92 .replace("LVTSyllable", "LeadingVowelTrailingSyllable"),
93 stringify!($i)
94 );
95 )*
96 }
97 }
98}
99
100pub use crate::code_point_map::EnumeratedProperty;
101
102macro_rules! make_enumerated_property {
103 (
104 name: $name:literal;
105 short_name: $short_name:literal;
106 ident: $value_ty:path;
107 data_marker: $data_marker:ty;
108 singleton: $singleton:ident;
109 $(ule_ty: $ule_ty:ty;)?
110 ) => {
111 impl crate::private::Sealed for $value_ty {}
112
113 impl EnumeratedProperty for $value_ty {
114 type DataMarker = $data_marker;
115 #[cfg(feature = "compiled_data")]
116 const SINGLETON: &'static crate::provider::PropertyCodePointMap<'static, Self> =
117 crate::provider::Baked::$singleton;
118 const NAME: &'static [u8] = $name.as_bytes();
119 const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
120 }
121
122 $(
123 impl zerovec::ule::AsULE for $value_ty {
124 type ULE = $ule_ty;
125
126 fn to_unaligned(self) -> Self::ULE {
127 self.0.to_unaligned()
128 }
129 fn from_unaligned(unaligned: Self::ULE) -> Self {
130 Self(zerovec::ule::AsULE::from_unaligned(unaligned))
131 }
132 }
133 )?
134 };
135}
136
137#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for BidiClass { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for BidiClass {
#[inline]
fn clone(&self) -> BidiClass {
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_tuple_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::cmp::PartialEq for BidiClass {
#[inline]
fn eq(&self, other: &BidiClass) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for BidiClass {
#[inline]
fn cmp(&self, other: &BidiClass) -> ::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: &BidiClass)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
158#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
159#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
161pub struct BidiClass(pub(crate) u8);
162
163impl BidiClass {
164 pub const fn to_icu4c_value(self) -> u8 {
166 self.0
167 }
168 pub const fn from_icu4c_value(value: u8) -> Self {
170 Self(value)
171 }
172}
173
174#[allow(non_upper_case_globals)]
impl BidiClass {
#[doc = r" (`L`) any strong left-to-right character"]
pub const LeftToRight: BidiClass = BidiClass(0);
#[doc = r" (`R`) any strong right-to-left (non-Arabic-type) character"]
pub const RightToLeft: BidiClass = BidiClass(1);
#[doc = r" (`EN`) any ASCII digit or Eastern Arabic-Indic digit"]
pub const EuropeanNumber: BidiClass = BidiClass(2);
#[doc = r" (`ES`) plus and minus signs"]
pub const EuropeanSeparator: BidiClass = BidiClass(3);
#[doc =
r" (`ET`) a terminator in a numeric format context, includes currency signs"]
pub const EuropeanTerminator: BidiClass = BidiClass(4);
#[doc = r" (`AN`) any Arabic-Indic digit"]
pub const ArabicNumber: BidiClass = BidiClass(5);
#[doc = r" (`CS`) commas, colons, and slashes"]
pub const CommonSeparator: BidiClass = BidiClass(6);
#[doc = r" (`B`) various newline characters"]
pub const ParagraphSeparator: BidiClass = BidiClass(7);
#[doc = r" (`S`) various segment-related control codes"]
pub const SegmentSeparator: BidiClass = BidiClass(8);
#[doc = r" (`WS`) spaces"]
pub const WhiteSpace: BidiClass = BidiClass(9);
#[doc = r" (`ON`) most other symbols and punctuation marks"]
pub const OtherNeutral: BidiClass = BidiClass(10);
#[doc = r" (`LRE`) U+202A: the LR embedding control"]
pub const LeftToRightEmbedding: BidiClass = BidiClass(11);
#[doc = r" (`LRO`) U+202D: the LR override control"]
pub const LeftToRightOverride: BidiClass = BidiClass(12);
#[doc = r" (`AL`) any strong right-to-left (Arabic-type) character"]
pub const ArabicLetter: BidiClass = BidiClass(13);
#[doc = r" (`RLE`) U+202B: the RL embedding control"]
pub const RightToLeftEmbedding: BidiClass = BidiClass(14);
#[doc = r" (`RLO`) U+202E: the RL override control"]
pub const RightToLeftOverride: BidiClass = BidiClass(15);
#[doc = r" (`PDF`) U+202C: terminates an embedding or override control"]
pub const PopDirectionalFormat: BidiClass = BidiClass(16);
#[doc = r" (`NSM`) any nonspacing mark"]
pub const NonspacingMark: BidiClass = BidiClass(17);
#[doc =
r" (`BN`) most format characters, control codes, or noncharacters"]
pub const BoundaryNeutral: BidiClass = BidiClass(18);
#[doc = r" (`FSI`) U+2068: the first strong isolate control"]
pub const FirstStrongIsolate: BidiClass = BidiClass(19);
#[doc = r" (`LRI`) U+2066: the LR isolate control"]
pub const LeftToRightIsolate: BidiClass = BidiClass(20);
#[doc = r" (`RLI`) U+2067: the RL isolate control"]
pub const RightToLeftIsolate: BidiClass = BidiClass(21);
#[doc = r" (`PDI`) U+2069: terminates an isolate control"]
pub const PopDirectionalIsolate: BidiClass = BidiClass(22);
pub const ALL_VALUES: &'static [BidiClass] =
&[BidiClass::LeftToRight, BidiClass::RightToLeft,
BidiClass::EuropeanNumber, BidiClass::EuropeanSeparator,
BidiClass::EuropeanTerminator, BidiClass::ArabicNumber,
BidiClass::CommonSeparator, BidiClass::ParagraphSeparator,
BidiClass::SegmentSeparator, BidiClass::WhiteSpace,
BidiClass::OtherNeutral, BidiClass::LeftToRightEmbedding,
BidiClass::LeftToRightOverride, BidiClass::ArabicLetter,
BidiClass::RightToLeftEmbedding,
BidiClass::RightToLeftOverride,
BidiClass::PopDirectionalFormat, BidiClass::NonspacingMark,
BidiClass::BoundaryNeutral, BidiClass::FirstStrongIsolate,
BidiClass::LeftToRightIsolate,
BidiClass::RightToLeftIsolate,
BidiClass::PopDirectionalIsolate];
}
impl From<BidiClass> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: BidiClass) -> Self { other.0 as u16 }
}create_const_array! {
175#[allow(non_upper_case_globals)]
176impl BidiClass {
177 pub const LeftToRight: BidiClass = BidiClass(0);
179 pub const RightToLeft: BidiClass = BidiClass(1);
181 pub const EuropeanNumber: BidiClass = BidiClass(2);
183 pub const EuropeanSeparator: BidiClass = BidiClass(3);
185 pub const EuropeanTerminator: BidiClass = BidiClass(4);
187 pub const ArabicNumber: BidiClass = BidiClass(5);
189 pub const CommonSeparator: BidiClass = BidiClass(6);
191 pub const ParagraphSeparator: BidiClass = BidiClass(7);
193 pub const SegmentSeparator: BidiClass = BidiClass(8);
195 pub const WhiteSpace: BidiClass = BidiClass(9);
197 pub const OtherNeutral: BidiClass = BidiClass(10);
199 pub const LeftToRightEmbedding: BidiClass = BidiClass(11);
201 pub const LeftToRightOverride: BidiClass = BidiClass(12);
203 pub const ArabicLetter: BidiClass = BidiClass(13);
205 pub const RightToLeftEmbedding: BidiClass = BidiClass(14);
207 pub const RightToLeftOverride: BidiClass = BidiClass(15);
209 pub const PopDirectionalFormat: BidiClass = BidiClass(16);
211 pub const NonspacingMark: BidiClass = BidiClass(17);
213 pub const BoundaryNeutral: BidiClass = BidiClass(18);
215 pub const FirstStrongIsolate: BidiClass = BidiClass(19);
217 pub const LeftToRightIsolate: BidiClass = BidiClass(20);
219 pub const RightToLeftIsolate: BidiClass = BidiClass(21);
221 pub const PopDirectionalIsolate: BidiClass = BidiClass(22);
223}
224#[test]
225fn bidi_props_consts();
226}
227
228impl 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! {
229 name: "Bidi_Class";
230 short_name: "bc";
231 ident: BidiClass;
232 data_marker: crate::provider::PropertyEnumBidiClassV1;
233 singleton: SINGLETON_PROPERTY_ENUM_BIDI_CLASS_V1;
234 ule_ty: u8;
235}
236
237#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for NumericType { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for NumericType {
#[inline]
fn clone(&self) -> NumericType {
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_tuple_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::cmp::PartialEq for NumericType {
#[inline]
fn eq(&self, other: &NumericType) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for NumericType {
#[inline]
fn cmp(&self, other: &NumericType) -> ::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: &NumericType)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
257#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
258#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
260pub struct NumericType(pub(crate) u8);
261
262impl NumericType {
263 pub const fn to_icu4c_value(self) -> u8 {
265 self.0
266 }
267 pub const fn from_icu4c_value(value: u8) -> Self {
269 Self(value)
270 }
271}
272
273#[allow(non_upper_case_globals)]
impl NumericType {
#[doc = r" Characters without numeric value"]
pub const None: NumericType = NumericType(0);
#[doc = r" (`De`) Characters of positional decimal systems"]
#[doc = r""]
#[doc =
r" These are coextensive with [`GeneralCategory::DecimalNumber`]."]
pub const Decimal: NumericType = NumericType(1);
#[doc = r" (`Di`) Variants of positional or sequences thereof."]
#[doc = r""]
#[doc =
r" The distinction between [`NumericType::Digit`] and [`NumericType::Numeric`]"]
#[doc =
r" has not proven to be useful, so no further characters will be added to"]
#[doc = r" this type."]
pub const Digit: NumericType = NumericType(2);
#[doc = r" (`Nu`) Other characters with numeric value"]
pub const Numeric: NumericType = NumericType(3);
pub const ALL_VALUES: &'static [NumericType] =
&[NumericType::None, NumericType::Decimal, NumericType::Digit,
NumericType::Numeric];
}
impl From<NumericType> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: NumericType) -> Self { other.0 as u16 }
}create_const_array! {
274#[allow(non_upper_case_globals)]
275impl NumericType {
276 pub const None: NumericType = NumericType(0);
278 pub const Decimal: NumericType = NumericType(1);
282 pub const Digit: NumericType = NumericType(2);
288 pub const Numeric: NumericType = NumericType(3);
290}
291#[test]
292fn numeric_type_consts();
293}
294
295impl 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! {
296 name: "Numeric_Type";
297 short_name: "nt";
298 ident: NumericType;
299 data_marker: crate::provider::PropertyEnumNumericTypeV1;
300 singleton: SINGLETON_PROPERTY_ENUM_NUMERIC_TYPE_V1;
301 ule_ty: u8;
302}
303
304pub(crate) mod gc {
306 #[derive(#[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::marker::Copy for GeneralCategory { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::clone::Clone for GeneralCategory {
#[inline]
fn clone(&self) -> GeneralCategory { *self }
}Clone, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::cmp::PartialEq for GeneralCategory {
#[inline]
fn eq(&self, other: &GeneralCategory) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::cmp::Eq for GeneralCategory {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::fmt::Debug for GeneralCategory {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
GeneralCategory::Unassigned => "Unassigned",
GeneralCategory::UppercaseLetter => "UppercaseLetter",
GeneralCategory::LowercaseLetter => "LowercaseLetter",
GeneralCategory::TitlecaseLetter => "TitlecaseLetter",
GeneralCategory::ModifierLetter => "ModifierLetter",
GeneralCategory::OtherLetter => "OtherLetter",
GeneralCategory::NonspacingMark => "NonspacingMark",
GeneralCategory::SpacingMark => "SpacingMark",
GeneralCategory::EnclosingMark => "EnclosingMark",
GeneralCategory::DecimalNumber => "DecimalNumber",
GeneralCategory::LetterNumber => "LetterNumber",
GeneralCategory::OtherNumber => "OtherNumber",
GeneralCategory::SpaceSeparator => "SpaceSeparator",
GeneralCategory::LineSeparator => "LineSeparator",
GeneralCategory::ParagraphSeparator => "ParagraphSeparator",
GeneralCategory::Control => "Control",
GeneralCategory::Format => "Format",
GeneralCategory::PrivateUse => "PrivateUse",
GeneralCategory::Surrogate => "Surrogate",
GeneralCategory::DashPunctuation => "DashPunctuation",
GeneralCategory::OpenPunctuation => "OpenPunctuation",
GeneralCategory::ClosePunctuation => "ClosePunctuation",
GeneralCategory::ConnectorPunctuation =>
"ConnectorPunctuation",
GeneralCategory::InitialPunctuation => "InitialPunctuation",
GeneralCategory::FinalPunctuation => "FinalPunctuation",
GeneralCategory::OtherPunctuation => "OtherPunctuation",
GeneralCategory::MathSymbol => "MathSymbol",
GeneralCategory::CurrencySymbol => "CurrencySymbol",
GeneralCategory::ModifierSymbol => "ModifierSymbol",
GeneralCategory::OtherSymbol => "OtherSymbol",
})
}
}Debug, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::cmp::Ord for GeneralCategory {
#[inline]
fn cmp(&self, other: &GeneralCategory) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::cmp::PartialOrd for GeneralCategory {
#[inline]
fn partial_cmp(&self, other: &GeneralCategory)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::hash::Hash for GeneralCategory {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
331 #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
332 #[cfg_attr(feature = "datagen", derive(databake::Bake))]
333 #[cfg_attr(feature = "datagen", databake(path = icu_properties::props))]
334 #[allow(clippy::exhaustive_enums)] impl GeneralCategory {
#[doc =
r" Attempt to construct the value from its corresponding integer,"]
#[doc = r" returning `None` if not possible"]
pub(crate) fn new_from_u8(value: u8) -> Option<Self> {
if value <= 29u8 {
Some(zerovec::ule::AsULE::from_unaligned(GeneralCategoryULE(value)))
} else { None }
}
}#[zerovec::make_ule(GeneralCategoryULE)]
336 #[cfg_attr(not(feature = "alloc"), zerovec::skip_derive(ZeroMapKV))]
337 #[repr(u8)]
338 pub enum GeneralCategory {
339 Unassigned = 0,
341
342 UppercaseLetter = 1,
344 LowercaseLetter = 2,
346 TitlecaseLetter = 3,
348 ModifierLetter = 4,
350 OtherLetter = 5,
352
353 NonspacingMark = 6,
355 SpacingMark = 8,
357 EnclosingMark = 7,
359
360 DecimalNumber = 9,
362 LetterNumber = 10,
364 OtherNumber = 11,
366
367 SpaceSeparator = 12,
369 LineSeparator = 13,
371 ParagraphSeparator = 14,
373
374 Control = 15,
376 Format = 16,
378 PrivateUse = 17,
380 Surrogate = 18,
382
383 DashPunctuation = 19,
385 OpenPunctuation = 20,
387 ClosePunctuation = 21,
389 ConnectorPunctuation = 22,
391 InitialPunctuation = 28,
393 FinalPunctuation = 29,
395 OtherPunctuation = 23,
397
398 MathSymbol = 24,
400 CurrencySymbol = 25,
402 ModifierSymbol = 26,
404 OtherSymbol = 27,
406 }
407}
408
409pub use gc::GeneralCategory;
410
411impl GeneralCategory {
412 pub const ALL_VALUES: &'static [GeneralCategory] = &[
414 GeneralCategory::Unassigned,
415 GeneralCategory::UppercaseLetter,
416 GeneralCategory::LowercaseLetter,
417 GeneralCategory::TitlecaseLetter,
418 GeneralCategory::ModifierLetter,
419 GeneralCategory::OtherLetter,
420 GeneralCategory::NonspacingMark,
421 GeneralCategory::SpacingMark,
422 GeneralCategory::EnclosingMark,
423 GeneralCategory::DecimalNumber,
424 GeneralCategory::LetterNumber,
425 GeneralCategory::OtherNumber,
426 GeneralCategory::SpaceSeparator,
427 GeneralCategory::LineSeparator,
428 GeneralCategory::ParagraphSeparator,
429 GeneralCategory::Control,
430 GeneralCategory::Format,
431 GeneralCategory::PrivateUse,
432 GeneralCategory::Surrogate,
433 GeneralCategory::DashPunctuation,
434 GeneralCategory::OpenPunctuation,
435 GeneralCategory::ClosePunctuation,
436 GeneralCategory::ConnectorPunctuation,
437 GeneralCategory::InitialPunctuation,
438 GeneralCategory::FinalPunctuation,
439 GeneralCategory::OtherPunctuation,
440 GeneralCategory::MathSymbol,
441 GeneralCategory::CurrencySymbol,
442 GeneralCategory::ModifierSymbol,
443 GeneralCategory::OtherSymbol,
444 ];
445}
446
447#[test]
448fn gc_variants() {
449 for &variant in GeneralCategory::ALL_VALUES {
450 assert_eq!(
451 crate::names::PropertyNamesLong::<GeneralCategory>::new()
452 .get(variant)
453 .unwrap()
454 .replace('_', ""),
456 format!("{variant:?}")
457 );
458 }
459}
460
461#[derive(#[automatically_derived]
impl ::core::marker::Copy for GeneralCategoryOutOfBoundsError { }Copy, #[automatically_derived]
impl ::core::clone::Clone for GeneralCategoryOutOfBoundsError {
#[inline]
fn clone(&self) -> GeneralCategoryOutOfBoundsError { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for GeneralCategoryOutOfBoundsError {
#[inline]
fn eq(&self, other: &GeneralCategoryOutOfBoundsError) -> bool { true }
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for GeneralCategoryOutOfBoundsError {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for GeneralCategoryOutOfBoundsError {
#[inline]
fn partial_cmp(&self, other: &GeneralCategoryOutOfBoundsError)
-> ::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: &GeneralCategoryOutOfBoundsError)
-> ::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() -> GeneralCategoryOutOfBoundsError {
GeneralCategoryOutOfBoundsError {}
}
}Default)]
462#[non_exhaustive]
464pub struct GeneralCategoryOutOfBoundsError;
465
466impl TryFrom<u8> for GeneralCategory {
467 type Error = GeneralCategoryOutOfBoundsError;
468 fn try_from(val: u8) -> Result<Self, GeneralCategoryOutOfBoundsError> {
471 GeneralCategory::new_from_u8(val).ok_or(GeneralCategoryOutOfBoundsError)
472 }
473}
474
475impl 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! {
476 name: "General_Category";
477 short_name: "gc";
478 ident: GeneralCategory;
479 data_marker: crate::provider::PropertyEnumGeneralCategoryV1;
480 singleton: SINGLETON_PROPERTY_ENUM_GENERAL_CATEGORY_V1;
481}
482
483#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for GeneralCategoryGroup { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for GeneralCategoryGroup {
#[inline]
fn clone(&self) -> GeneralCategoryGroup {
let _: ::core::clone::AssertParamIsClone<u32>;
*self
}
}Clone, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::PartialEq for GeneralCategoryGroup {
#[inline]
fn eq(&self, other: &GeneralCategoryGroup) -> 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_tuple_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)]
499#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
501pub struct GeneralCategoryGroup(pub(crate) u32);
502
503impl crate::private::Sealed for GeneralCategoryGroup {}
504
505use GeneralCategory as GC;
506use GeneralCategoryGroup as GCG;
507
508#[allow(non_upper_case_globals)]
509impl GeneralCategoryGroup {
510 pub const UppercaseLetter: GeneralCategoryGroup = GCG(1 << (GC::UppercaseLetter as u32));
512 pub const LowercaseLetter: GeneralCategoryGroup = GCG(1 << (GC::LowercaseLetter as u32));
514 pub const TitlecaseLetter: GeneralCategoryGroup = GCG(1 << (GC::TitlecaseLetter as u32));
516 pub const ModifierLetter: GeneralCategoryGroup = GCG(1 << (GC::ModifierLetter as u32));
518 pub const OtherLetter: GeneralCategoryGroup = GCG(1 << (GC::OtherLetter as u32));
520 pub const CasedLetter: GeneralCategoryGroup = GCG((1 << (GC::UppercaseLetter as u32))
522 | (1 << (GC::LowercaseLetter as u32))
523 | (1 << (GC::TitlecaseLetter as u32)));
524 pub const Letter: GeneralCategoryGroup = GCG((1 << (GC::UppercaseLetter as u32))
526 | (1 << (GC::LowercaseLetter as u32))
527 | (1 << (GC::TitlecaseLetter as u32))
528 | (1 << (GC::ModifierLetter as u32))
529 | (1 << (GC::OtherLetter as u32)));
530
531 pub const NonspacingMark: GeneralCategoryGroup = GCG(1 << (GC::NonspacingMark as u32));
533 pub const EnclosingMark: GeneralCategoryGroup = GCG(1 << (GC::EnclosingMark as u32));
535 pub const SpacingMark: GeneralCategoryGroup = GCG(1 << (GC::SpacingMark as u32));
537 pub const Mark: GeneralCategoryGroup = GCG((1 << (GC::NonspacingMark as u32))
539 | (1 << (GC::EnclosingMark as u32))
540 | (1 << (GC::SpacingMark as u32)));
541
542 pub const DecimalNumber: GeneralCategoryGroup = GCG(1 << (GC::DecimalNumber as u32));
544 pub const LetterNumber: GeneralCategoryGroup = GCG(1 << (GC::LetterNumber as u32));
546 pub const OtherNumber: GeneralCategoryGroup = GCG(1 << (GC::OtherNumber as u32));
548 pub const Number: GeneralCategoryGroup = GCG((1 << (GC::DecimalNumber as u32))
550 | (1 << (GC::LetterNumber as u32))
551 | (1 << (GC::OtherNumber as u32)));
552
553 pub const SpaceSeparator: GeneralCategoryGroup = GCG(1 << (GC::SpaceSeparator as u32));
555 pub const LineSeparator: GeneralCategoryGroup = GCG(1 << (GC::LineSeparator as u32));
557 pub const ParagraphSeparator: GeneralCategoryGroup = GCG(1 << (GC::ParagraphSeparator as u32));
559 pub const Separator: GeneralCategoryGroup = GCG((1 << (GC::SpaceSeparator as u32))
561 | (1 << (GC::LineSeparator as u32))
562 | (1 << (GC::ParagraphSeparator as u32)));
563
564 pub const Control: GeneralCategoryGroup = GCG(1 << (GC::Control as u32));
566 pub const Format: GeneralCategoryGroup = GCG(1 << (GC::Format as u32));
568 pub const PrivateUse: GeneralCategoryGroup = GCG(1 << (GC::PrivateUse as u32));
570 pub const Surrogate: GeneralCategoryGroup = GCG(1 << (GC::Surrogate as u32));
572 pub const Unassigned: GeneralCategoryGroup = GCG(1 << (GC::Unassigned as u32));
574 pub const Other: GeneralCategoryGroup = GCG((1 << (GC::Control as u32))
576 | (1 << (GC::Format as u32))
577 | (1 << (GC::PrivateUse as u32))
578 | (1 << (GC::Surrogate as u32))
579 | (1 << (GC::Unassigned as u32)));
580
581 pub const DashPunctuation: GeneralCategoryGroup = GCG(1 << (GC::DashPunctuation as u32));
583 pub const OpenPunctuation: GeneralCategoryGroup = GCG(1 << (GC::OpenPunctuation as u32));
585 pub const ClosePunctuation: GeneralCategoryGroup = GCG(1 << (GC::ClosePunctuation as u32));
587 pub const ConnectorPunctuation: GeneralCategoryGroup =
589 GCG(1 << (GC::ConnectorPunctuation as u32));
590 pub const InitialPunctuation: GeneralCategoryGroup = GCG(1 << (GC::InitialPunctuation as u32));
592 pub const FinalPunctuation: GeneralCategoryGroup = GCG(1 << (GC::FinalPunctuation as u32));
594 pub const OtherPunctuation: GeneralCategoryGroup = GCG(1 << (GC::OtherPunctuation as u32));
596 pub const Punctuation: GeneralCategoryGroup = GCG((1 << (GC::DashPunctuation as u32))
598 | (1 << (GC::OpenPunctuation as u32))
599 | (1 << (GC::ClosePunctuation as u32))
600 | (1 << (GC::ConnectorPunctuation as u32))
601 | (1 << (GC::OtherPunctuation as u32))
602 | (1 << (GC::InitialPunctuation as u32))
603 | (1 << (GC::FinalPunctuation as u32)));
604
605 pub const MathSymbol: GeneralCategoryGroup = GCG(1 << (GC::MathSymbol as u32));
607 pub const CurrencySymbol: GeneralCategoryGroup = GCG(1 << (GC::CurrencySymbol as u32));
609 pub const ModifierSymbol: GeneralCategoryGroup = GCG(1 << (GC::ModifierSymbol as u32));
611 pub const OtherSymbol: GeneralCategoryGroup = GCG(1 << (GC::OtherSymbol as u32));
613 pub const Symbol: GeneralCategoryGroup = GCG((1 << (GC::MathSymbol as u32))
615 | (1 << (GC::CurrencySymbol as u32))
616 | (1 << (GC::ModifierSymbol as u32))
617 | (1 << (GC::OtherSymbol as u32)));
618
619 const ALL: u32 = (1 << (GC::FinalPunctuation as u32 + 1)) - 1;
620
621 pub const fn contains(self, val: GeneralCategory) -> bool {
665 0 != (1 << (val as u32)) & self.0
666 }
667
668 pub const fn complement(self) -> Self {
686 GeneralCategoryGroup(!self.0 & Self::ALL)
689 }
690
691 pub const fn all() -> Self {
705 Self(Self::ALL)
706 }
707
708 pub const fn empty() -> Self {
722 Self(0)
723 }
724
725 pub const fn union(self, other: Self) -> Self {
741 Self(self.0 | other.0)
742 }
743
744 pub const fn intersection(self, other: Self) -> Self {
761 Self(self.0 & other.0)
762 }
763}
764
765impl From<GeneralCategory> for GeneralCategoryGroup {
766 fn from(subcategory: GeneralCategory) -> Self {
767 GeneralCategoryGroup(1 << (subcategory as u32))
768 }
769}
770impl From<u32> for GeneralCategoryGroup {
771 fn from(mask: u32) -> Self {
772 GeneralCategoryGroup(mask & Self::ALL)
775 }
776}
777impl From<GeneralCategoryGroup> for u32 {
778 fn from(group: GeneralCategoryGroup) -> Self {
779 group.0
780 }
781}
782
783#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for Script { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for Script {
#[inline]
fn clone(&self) -> Script {
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_tuple_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::cmp::PartialEq for Script {
#[inline]
fn eq(&self, other: &Script) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for Script {
#[inline]
fn cmp(&self, other: &Script) -> ::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: &Script)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
806#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
807#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
809pub struct Script(pub(crate) u16);
810
811impl Script {
812 pub const fn to_icu4c_value(self) -> u16 {
814 self.0
815 }
816 pub const fn from_icu4c_value(value: u16) -> Self {
818 Self(value)
819 }
820}
821
822#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl Script {
pub const Adlam: Script = Script(167);
pub const Ahom: Script = Script(161);
pub const AnatolianHieroglyphs: Script = Script(156);
pub const Arabic: Script = Script(2);
pub const Armenian: Script = Script(3);
pub const Avestan: Script = Script(117);
pub const Balinese: Script = Script(62);
pub const Bamum: Script = Script(130);
pub const BassaVah: Script = Script(134);
pub const Batak: Script = Script(63);
pub const Bengali: Script = Script(4);
pub const BeriaErfe: Script = Script(208);
pub const Bhaiksuki: Script = Script(168);
pub const Bopomofo: Script = Script(5);
pub const Brahmi: Script = Script(65);
pub const Braille: Script = Script(46);
pub const Buginese: Script = Script(55);
pub const Buhid: Script = Script(44);
pub const CanadianAboriginal: Script = Script(40);
pub const Carian: Script = Script(104);
pub const CaucasianAlbanian: Script = Script(159);
pub const Chakma: Script = Script(118);
pub const Cham: Script = Script(66);
pub const Cherokee: Script = Script(6);
pub const Chorasmian: Script = Script(189);
pub const Common: Script = Script(0);
pub const Coptic: Script = Script(7);
pub const Cuneiform: Script = Script(101);
pub const Cypriot: Script = Script(47);
pub const CyproMinoan: Script = Script(193);
pub const Cyrillic: Script = Script(8);
pub const Deseret: Script = Script(9);
pub const Devanagari: Script = Script(10);
pub const DivesAkuru: Script = Script(190);
pub const Dogra: Script = Script(178);
pub const Duployan: Script = Script(135);
pub const EgyptianHieroglyphs: Script = Script(71);
pub const Elbasan: Script = Script(136);
pub const Elymaic: Script = Script(185);
pub const Ethiopian: Script = Script(11);
pub const Garay: Script = Script(201);
pub const Georgian: Script = Script(12);
pub const Glagolitic: Script = Script(56);
pub const Gothic: Script = Script(13);
pub const Grantha: Script = Script(137);
pub const Greek: Script = Script(14);
pub const Gujarati: Script = Script(15);
pub const GunjalaGondi: Script = Script(179);
pub const Gurmukhi: Script = Script(16);
pub const GurungKhema: Script = Script(202);
pub const Han: Script = Script(17);
pub const Hangul: Script = Script(18);
pub const HanifiRohingya: Script = Script(182);
pub const Hanunoo: Script = Script(43);
pub const Hatran: Script = Script(162);
pub const Hebrew: Script = Script(19);
pub const Hiragana: Script = Script(20);
pub const ImperialAramaic: Script = Script(116);
pub const Inherited: Script = Script(1);
pub const InscriptionalPahlavi: Script = Script(122);
pub const InscriptionalParthian: Script = Script(125);
pub const Javanese: Script = Script(78);
pub const Kaithi: Script = Script(120);
pub const Kannada: Script = Script(21);
pub const Katakana: Script = Script(22);
pub const Kawi: Script = Script(198);
pub const KayahLi: Script = Script(79);
pub const Kharoshthi: Script = Script(57);
pub const KhitanSmallScript: Script = Script(191);
pub const Khmer: Script = Script(23);
pub const Khojki: Script = Script(157);
pub const Khudawadi: Script = Script(145);
pub const KiratRai: Script = Script(203);
pub const Lao: Script = Script(24);
pub const Latin: Script = Script(25);
pub const Lepcha: Script = Script(82);
pub const Limbu: Script = Script(48);
pub const LinearA: Script = Script(83);
pub const LinearB: Script = Script(49);
pub const Lisu: Script = Script(131);
pub const Lycian: Script = Script(107);
pub const Lydian: Script = Script(108);
pub const Mahajani: Script = Script(160);
pub const Makasar: Script = Script(180);
pub const Malayalam: Script = Script(26);
pub const Mandaic: Script = Script(84);
pub const Manichaean: Script = Script(121);
pub const Marchen: Script = Script(169);
pub const MasaramGondi: Script = Script(175);
pub const Medefaidrin: Script = Script(181);
pub const MeeteiMayek: Script = Script(115);
pub const MendeKikakui: Script = Script(140);
pub const MeroiticCursive: Script = Script(141);
pub const MeroiticHieroglyphs: Script = Script(86);
pub const Miao: Script = Script(92);
pub const Modi: Script = Script(163);
pub const Mongolian: Script = Script(27);
pub const Mro: Script = Script(149);
pub const Multani: Script = Script(164);
pub const Myanmar: Script = Script(28);
pub const Nabataean: Script = Script(143);
pub const NagMundari: Script = Script(199);
pub const Nandinagari: Script = Script(187);
pub const Nastaliq: Script = Script(200);
pub const Newa: Script = Script(170);
pub const NewTaiLue: Script = Script(59);
pub const Nko: Script = Script(87);
pub const Nushu: Script = Script(150);
pub const NyiakengPuachueHmong: Script = Script(186);
pub const Ogham: Script = Script(29);
pub const OlChiki: Script = Script(109);
pub const OldHungarian: Script = Script(76);
pub const OldItalic: Script = Script(30);
pub const OldNorthArabian: Script = Script(142);
pub const OldPermic: Script = Script(89);
pub const OldPersian: Script = Script(61);
pub const OldSogdian: Script = Script(184);
pub const OldSouthArabian: Script = Script(133);
pub const OldTurkic: Script = Script(88);
pub const OldUyghur: Script = Script(194);
pub const OlOnal: Script = Script(204);
pub const Oriya: Script = Script(31);
pub const Osage: Script = Script(171);
pub const Osmanya: Script = Script(50);
pub const PahawhHmong: Script = Script(75);
pub const Palmyrene: Script = Script(144);
pub const PauCinHau: Script = Script(165);
pub const PhagsPa: Script = Script(90);
pub const Phoenician: Script = Script(91);
pub const PsalterPahlavi: Script = Script(123);
pub const Rejang: Script = Script(110);
pub const Runic: Script = Script(32);
pub const Samaritan: Script = Script(126);
pub const Saurashtra: Script = Script(111);
pub const Sharada: Script = Script(151);
pub const Shavian: Script = Script(51);
pub const Siddham: Script = Script(166);
pub const Sidetic: Script = Script(209);
pub const SignWriting: Script = Script(112);
pub const Sinhala: Script = Script(33);
pub const Sogdian: Script = Script(183);
pub const SoraSompeng: Script = Script(152);
pub const Soyombo: Script = Script(176);
pub const Sundanese: Script = Script(113);
pub const Sunuwar: Script = Script(205);
pub const SylotiNagri: Script = Script(58);
pub const Syriac: Script = Script(34);
pub const Tagalog: Script = Script(42);
pub const Tagbanwa: Script = Script(45);
pub const TaiLe: Script = Script(52);
pub const TaiTham: Script = Script(106);
pub const TaiViet: Script = Script(127);
pub const TaiYo: Script = Script(210);
pub const Takri: Script = Script(153);
pub const Tamil: Script = Script(35);
pub const Tangsa: Script = Script(195);
pub const Tangut: Script = Script(154);
pub const Telugu: Script = Script(36);
pub const Thaana: Script = Script(37);
pub const Thai: Script = Script(38);
pub const Tibetan: Script = Script(39);
pub const Tifinagh: Script = Script(60);
pub const Tirhuta: Script = Script(158);
pub const Todhri: Script = Script(206);
pub const TolongSiki: Script = Script(211);
pub const Toto: Script = Script(196);
pub const TuluTigalari: Script = Script(207);
pub const Ugaritic: Script = Script(53);
pub const Unknown: Script = Script(103);
pub const Vai: Script = Script(99);
pub const Vithkuqi: Script = Script(197);
pub const Wancho: Script = Script(188);
pub const WarangCiti: Script = Script(146);
pub const Yezidi: Script = Script(192);
pub const Yi: Script = Script(41);
pub const ZanabazarSquare: Script = Script(177);
pub const ALL_VALUES: &'static [Script] =
&[Script::Adlam, Script::Ahom, Script::AnatolianHieroglyphs,
Script::Arabic, Script::Armenian, Script::Avestan,
Script::Balinese, Script::Bamum, Script::BassaVah,
Script::Batak, Script::Bengali, Script::BeriaErfe,
Script::Bhaiksuki, Script::Bopomofo, Script::Brahmi,
Script::Braille, Script::Buginese, Script::Buhid,
Script::CanadianAboriginal, Script::Carian,
Script::CaucasianAlbanian, Script::Chakma, Script::Cham,
Script::Cherokee, Script::Chorasmian, Script::Common,
Script::Coptic, Script::Cuneiform, Script::Cypriot,
Script::CyproMinoan, Script::Cyrillic, Script::Deseret,
Script::Devanagari, Script::DivesAkuru, Script::Dogra,
Script::Duployan, Script::EgyptianHieroglyphs,
Script::Elbasan, Script::Elymaic, Script::Ethiopian,
Script::Garay, Script::Georgian, Script::Glagolitic,
Script::Gothic, Script::Grantha, Script::Greek,
Script::Gujarati, Script::GunjalaGondi, Script::Gurmukhi,
Script::GurungKhema, Script::Han, Script::Hangul,
Script::HanifiRohingya, Script::Hanunoo, Script::Hatran,
Script::Hebrew, Script::Hiragana, Script::ImperialAramaic,
Script::Inherited, Script::InscriptionalPahlavi,
Script::InscriptionalParthian, Script::Javanese,
Script::Kaithi, Script::Kannada, Script::Katakana,
Script::Kawi, Script::KayahLi, Script::Kharoshthi,
Script::KhitanSmallScript, Script::Khmer, Script::Khojki,
Script::Khudawadi, Script::KiratRai, Script::Lao,
Script::Latin, Script::Lepcha, Script::Limbu,
Script::LinearA, Script::LinearB, Script::Lisu,
Script::Lycian, Script::Lydian, Script::Mahajani,
Script::Makasar, Script::Malayalam, Script::Mandaic,
Script::Manichaean, Script::Marchen, Script::MasaramGondi,
Script::Medefaidrin, Script::MeeteiMayek,
Script::MendeKikakui, Script::MeroiticCursive,
Script::MeroiticHieroglyphs, Script::Miao, Script::Modi,
Script::Mongolian, Script::Mro, Script::Multani,
Script::Myanmar, Script::Nabataean, Script::NagMundari,
Script::Nandinagari, Script::Nastaliq, Script::Newa,
Script::NewTaiLue, Script::Nko, Script::Nushu,
Script::NyiakengPuachueHmong, Script::Ogham,
Script::OlChiki, Script::OldHungarian, Script::OldItalic,
Script::OldNorthArabian, Script::OldPermic,
Script::OldPersian, Script::OldSogdian,
Script::OldSouthArabian, Script::OldTurkic,
Script::OldUyghur, Script::OlOnal, Script::Oriya,
Script::Osage, Script::Osmanya, Script::PahawhHmong,
Script::Palmyrene, Script::PauCinHau, Script::PhagsPa,
Script::Phoenician, Script::PsalterPahlavi, Script::Rejang,
Script::Runic, Script::Samaritan, Script::Saurashtra,
Script::Sharada, Script::Shavian, Script::Siddham,
Script::Sidetic, Script::SignWriting, Script::Sinhala,
Script::Sogdian, Script::SoraSompeng, Script::Soyombo,
Script::Sundanese, Script::Sunuwar, Script::SylotiNagri,
Script::Syriac, Script::Tagalog, Script::Tagbanwa,
Script::TaiLe, Script::TaiTham, Script::TaiViet,
Script::TaiYo, Script::Takri, Script::Tamil, Script::Tangsa,
Script::Tangut, Script::Telugu, Script::Thaana,
Script::Thai, Script::Tibetan, Script::Tifinagh,
Script::Tirhuta, Script::Todhri, Script::TolongSiki,
Script::Toto, Script::TuluTigalari, Script::Ugaritic,
Script::Unknown, Script::Vai, Script::Vithkuqi,
Script::Wancho, Script::WarangCiti, Script::Yezidi,
Script::Yi, Script::ZanabazarSquare];
}
impl From<Script> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: Script) -> Self { other.0 as u16 }
}create_const_array! {
823#[allow(missing_docs)] #[allow(non_upper_case_globals)]
825impl Script {
826 pub const Adlam: Script = Script(167);
827 pub const Ahom: Script = Script(161);
828 pub const AnatolianHieroglyphs: Script = Script(156);
829 pub const Arabic: Script = Script(2);
830 pub const Armenian: Script = Script(3);
831 pub const Avestan: Script = Script(117);
832 pub const Balinese: Script = Script(62);
833 pub const Bamum: Script = Script(130);
834 pub const BassaVah: Script = Script(134);
835 pub const Batak: Script = Script(63);
836 pub const Bengali: Script = Script(4);
837 pub const BeriaErfe: Script = Script(208);
838 pub const Bhaiksuki: Script = Script(168);
839 pub const Bopomofo: Script = Script(5);
840 pub const Brahmi: Script = Script(65);
841 pub const Braille: Script = Script(46);
842 pub const Buginese: Script = Script(55);
843 pub const Buhid: Script = Script(44);
844 pub const CanadianAboriginal: Script = Script(40);
845 pub const Carian: Script = Script(104);
846 pub const CaucasianAlbanian: Script = Script(159);
847 pub const Chakma: Script = Script(118);
848 pub const Cham: Script = Script(66);
849 pub const Cherokee: Script = Script(6);
850 pub const Chorasmian: Script = Script(189);
851 pub const Common: Script = Script(0);
852 pub const Coptic: Script = Script(7);
853 pub const Cuneiform: Script = Script(101);
854 pub const Cypriot: Script = Script(47);
855 pub const CyproMinoan: Script = Script(193);
856 pub const Cyrillic: Script = Script(8);
857 pub const Deseret: Script = Script(9);
858 pub const Devanagari: Script = Script(10);
859 pub const DivesAkuru: Script = Script(190);
860 pub const Dogra: Script = Script(178);
861 pub const Duployan: Script = Script(135);
862 pub const EgyptianHieroglyphs: Script = Script(71);
863 pub const Elbasan: Script = Script(136);
864 pub const Elymaic: Script = Script(185);
865 pub const Ethiopian: Script = Script(11);
866 pub const Garay: Script = Script(201);
867 pub const Georgian: Script = Script(12);
868 pub const Glagolitic: Script = Script(56);
869 pub const Gothic: Script = Script(13);
870 pub const Grantha: Script = Script(137);
871 pub const Greek: Script = Script(14);
872 pub const Gujarati: Script = Script(15);
873 pub const GunjalaGondi: Script = Script(179);
874 pub const Gurmukhi: Script = Script(16);
875 pub const GurungKhema: Script = Script(202);
876 pub const Han: Script = Script(17);
877 pub const Hangul: Script = Script(18);
878 pub const HanifiRohingya: Script = Script(182);
879 pub const Hanunoo: Script = Script(43);
880 pub const Hatran: Script = Script(162);
881 pub const Hebrew: Script = Script(19);
882 pub const Hiragana: Script = Script(20);
883 pub const ImperialAramaic: Script = Script(116);
884 pub const Inherited: Script = Script(1);
885 pub const InscriptionalPahlavi: Script = Script(122);
886 pub const InscriptionalParthian: Script = Script(125);
887 pub const Javanese: Script = Script(78);
888 pub const Kaithi: Script = Script(120);
889 pub const Kannada: Script = Script(21);
890 pub const Katakana: Script = Script(22);
891 pub const Kawi: Script = Script(198);
892 pub const KayahLi: Script = Script(79);
893 pub const Kharoshthi: Script = Script(57);
894 pub const KhitanSmallScript: Script = Script(191);
895 pub const Khmer: Script = Script(23);
896 pub const Khojki: Script = Script(157);
897 pub const Khudawadi: Script = Script(145);
898 pub const KiratRai: Script = Script(203);
899 pub const Lao: Script = Script(24);
900 pub const Latin: Script = Script(25);
901 pub const Lepcha: Script = Script(82);
902 pub const Limbu: Script = Script(48);
903 pub const LinearA: Script = Script(83);
904 pub const LinearB: Script = Script(49);
905 pub const Lisu: Script = Script(131);
906 pub const Lycian: Script = Script(107);
907 pub const Lydian: Script = Script(108);
908 pub const Mahajani: Script = Script(160);
909 pub const Makasar: Script = Script(180);
910 pub const Malayalam: Script = Script(26);
911 pub const Mandaic: Script = Script(84);
912 pub const Manichaean: Script = Script(121);
913 pub const Marchen: Script = Script(169);
914 pub const MasaramGondi: Script = Script(175);
915 pub const Medefaidrin: Script = Script(181);
916 pub const MeeteiMayek: Script = Script(115);
917 pub const MendeKikakui: Script = Script(140);
918 pub const MeroiticCursive: Script = Script(141);
919 pub const MeroiticHieroglyphs: Script = Script(86);
920 pub const Miao: Script = Script(92);
921 pub const Modi: Script = Script(163);
922 pub const Mongolian: Script = Script(27);
923 pub const Mro: Script = Script(149);
924 pub const Multani: Script = Script(164);
925 pub const Myanmar: Script = Script(28);
926 pub const Nabataean: Script = Script(143);
927 pub const NagMundari: Script = Script(199);
928 pub const Nandinagari: Script = Script(187);
929 pub const Nastaliq: Script = Script(200);
930 pub const Newa: Script = Script(170);
931 pub const NewTaiLue: Script = Script(59);
932 pub const Nko: Script = Script(87);
933 pub const Nushu: Script = Script(150);
934 pub const NyiakengPuachueHmong: Script = Script(186);
935 pub const Ogham: Script = Script(29);
936 pub const OlChiki: Script = Script(109);
937 pub const OldHungarian: Script = Script(76);
938 pub const OldItalic: Script = Script(30);
939 pub const OldNorthArabian: Script = Script(142);
940 pub const OldPermic: Script = Script(89);
941 pub const OldPersian: Script = Script(61);
942 pub const OldSogdian: Script = Script(184);
943 pub const OldSouthArabian: Script = Script(133);
944 pub const OldTurkic: Script = Script(88);
945 pub const OldUyghur: Script = Script(194);
946 pub const OlOnal: Script = Script(204);
947 pub const Oriya: Script = Script(31);
948 pub const Osage: Script = Script(171);
949 pub const Osmanya: Script = Script(50);
950 pub const PahawhHmong: Script = Script(75);
951 pub const Palmyrene: Script = Script(144);
952 pub const PauCinHau: Script = Script(165);
953 pub const PhagsPa: Script = Script(90);
954 pub const Phoenician: Script = Script(91);
955 pub const PsalterPahlavi: Script = Script(123);
956 pub const Rejang: Script = Script(110);
957 pub const Runic: Script = Script(32);
958 pub const Samaritan: Script = Script(126);
959 pub const Saurashtra: Script = Script(111);
960 pub const Sharada: Script = Script(151);
961 pub const Shavian: Script = Script(51);
962 pub const Siddham: Script = Script(166);
963 pub const Sidetic: Script = Script(209);
964 pub const SignWriting: Script = Script(112);
965 pub const Sinhala: Script = Script(33);
966 pub const Sogdian: Script = Script(183);
967 pub const SoraSompeng: Script = Script(152);
968 pub const Soyombo: Script = Script(176);
969 pub const Sundanese: Script = Script(113);
970 pub const Sunuwar: Script = Script(205);
971 pub const SylotiNagri: Script = Script(58);
972 pub const Syriac: Script = Script(34);
973 pub const Tagalog: Script = Script(42);
974 pub const Tagbanwa: Script = Script(45);
975 pub const TaiLe: Script = Script(52);
976 pub const TaiTham: Script = Script(106);
977 pub const TaiViet: Script = Script(127);
978 pub const TaiYo: Script = Script(210);
979 pub const Takri: Script = Script(153);
980 pub const Tamil: Script = Script(35);
981 pub const Tangsa: Script = Script(195);
982 pub const Tangut: Script = Script(154);
983 pub const Telugu: Script = Script(36);
984 pub const Thaana: Script = Script(37);
985 pub const Thai: Script = Script(38);
986 pub const Tibetan: Script = Script(39);
987 pub const Tifinagh: Script = Script(60);
988 pub const Tirhuta: Script = Script(158);
989 pub const Todhri: Script = Script(206);
990 pub const TolongSiki: Script = Script(211);
991 pub const Toto: Script = Script(196);
992 pub const TuluTigalari: Script = Script(207);
993 pub const Ugaritic: Script = Script(53);
994 pub const Unknown: Script = Script(103);
995 pub const Vai: Script = Script(99);
996 pub const Vithkuqi: Script = Script(197);
997 pub const Wancho: Script = Script(188);
998 pub const WarangCiti: Script = Script(146);
999 pub const Yezidi: Script = Script(192);
1000 pub const Yi: Script = Script(41);
1001 pub const ZanabazarSquare: Script = Script(177);
1002}
1003#[test]
1004fn script_consts();
1005}
1006
1007impl Script {
1008 #[doc(hidden)]
1010 #[allow(non_upper_case_globals)]
1011 #[deprecated]
1012 pub const Chisoi: Script = Self(60_000);
1014}
1015
1016#[cfg(feature = "compiled_data")]
1018impl From<Script> for icu_locale_core::subtags::Script {
1019 fn from(value: Script) -> Self {
1020 crate::PropertyNamesShort::new()
1021 .get_locale_script(value)
1022 .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"))
1023 }
1024}
1025
1026#[cfg(feature = "compiled_data")]
1028impl From<icu_locale_core::subtags::Script> for Script {
1029 fn from(value: icu_locale_core::subtags::Script) -> Self {
1030 crate::PropertyParser::new()
1031 .get_strict(value.as_str())
1032 .unwrap_or(Self::Unknown)
1033 }
1034}
1035
1036impl 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! {
1037 name: "Script";
1038 short_name: "sc";
1039 ident: Script;
1040 data_marker: crate::provider::PropertyEnumScriptV1;
1041 singleton: SINGLETON_PROPERTY_ENUM_SCRIPT_V1;
1042 ule_ty: <u16 as zerovec::ule::AsULE>::ULE;
1043}
1044
1045#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for HangulSyllableType { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for HangulSyllableType {
#[inline]
fn clone(&self) -> HangulSyllableType {
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_tuple_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::cmp::PartialEq for HangulSyllableType {
#[inline]
fn eq(&self, other: &HangulSyllableType) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for HangulSyllableType {
#[inline]
fn cmp(&self, other: &HangulSyllableType) -> ::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: &HangulSyllableType)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
1067#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1068#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1070pub struct HangulSyllableType(pub(crate) u8);
1071
1072impl HangulSyllableType {
1073 pub const fn to_icu4c_value(self) -> u8 {
1075 self.0
1076 }
1077 pub const fn from_icu4c_value(value: u8) -> Self {
1079 Self(value)
1080 }
1081}
1082
1083#[allow(non_upper_case_globals)]
impl HangulSyllableType {
#[doc = r" (`NA`) not applicable (e.g. not a Hangul code point)."]
pub const NotApplicable: HangulSyllableType = HangulSyllableType(0);
#[doc = r" (`L`) a conjoining leading consonant Jamo."]
pub const LeadingJamo: HangulSyllableType = HangulSyllableType(1);
#[doc = r" (`V`) a conjoining vowel Jamo."]
pub const VowelJamo: HangulSyllableType = HangulSyllableType(2);
#[doc = r" (`T`) a conjoining trailing consonant Jamo."]
pub const TrailingJamo: HangulSyllableType = HangulSyllableType(3);
#[doc =
r" (`LV`) a precomposed syllable with a leading consonant and a vowel."]
pub const LeadingVowelSyllable: HangulSyllableType =
HangulSyllableType(4);
#[doc =
r" (`LVT`) a precomposed syllable with a leading consonant, a vowel, and a trailing consonant."]
pub const LeadingVowelTrailingSyllable: HangulSyllableType =
HangulSyllableType(5);
pub const ALL_VALUES: &'static [HangulSyllableType] =
&[HangulSyllableType::NotApplicable, HangulSyllableType::LeadingJamo,
HangulSyllableType::VowelJamo,
HangulSyllableType::TrailingJamo,
HangulSyllableType::LeadingVowelSyllable,
HangulSyllableType::LeadingVowelTrailingSyllable];
}
impl From<HangulSyllableType> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: HangulSyllableType) -> Self { other.0 as u16 }
}create_const_array! {
1084#[allow(non_upper_case_globals)]
1085impl HangulSyllableType {
1086 pub const NotApplicable: HangulSyllableType = HangulSyllableType(0);
1088 pub const LeadingJamo: HangulSyllableType = HangulSyllableType(1);
1090 pub const VowelJamo: HangulSyllableType = HangulSyllableType(2);
1092 pub const TrailingJamo: HangulSyllableType = HangulSyllableType(3);
1094 pub const LeadingVowelSyllable: HangulSyllableType = HangulSyllableType(4);
1096 pub const LeadingVowelTrailingSyllable: HangulSyllableType = HangulSyllableType(5);
1098}
1099#[test]
1100fn hangul_syllable_type_consts();
1101}
1102
1103impl 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! {
1104 name: "Hangul_Syllable_Type";
1105 short_name: "hst";
1106 ident: HangulSyllableType;
1107 data_marker: crate::provider::PropertyEnumHangulSyllableTypeV1;
1108 singleton: SINGLETON_PROPERTY_ENUM_HANGUL_SYLLABLE_TYPE_V1;
1109 ule_ty: u8;
1110
1111}
1112
1113#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for EastAsianWidth { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for EastAsianWidth {
#[inline]
fn clone(&self) -> EastAsianWidth {
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_tuple_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::cmp::PartialEq for EastAsianWidth {
#[inline]
fn eq(&self, other: &EastAsianWidth) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for EastAsianWidth {
#[inline]
fn cmp(&self, other: &EastAsianWidth) -> ::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: &EastAsianWidth)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
1133#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1134#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1136pub struct EastAsianWidth(pub(crate) u8);
1137
1138impl EastAsianWidth {
1139 pub const fn to_icu4c_value(self) -> u8 {
1141 self.0
1142 }
1143 pub const fn from_icu4c_value(value: u8) -> Self {
1145 Self(value)
1146 }
1147}
1148
1149#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl EastAsianWidth {
pub const Neutral: EastAsianWidth = EastAsianWidth(0);
pub const Ambiguous: EastAsianWidth = EastAsianWidth(1);
pub const Halfwidth: EastAsianWidth = EastAsianWidth(2);
pub const Fullwidth: EastAsianWidth = EastAsianWidth(3);
pub const Narrow: EastAsianWidth = EastAsianWidth(4);
pub const Wide: EastAsianWidth = EastAsianWidth(5);
pub const ALL_VALUES: &'static [EastAsianWidth] =
&[EastAsianWidth::Neutral, EastAsianWidth::Ambiguous,
EastAsianWidth::Halfwidth, EastAsianWidth::Fullwidth,
EastAsianWidth::Narrow, EastAsianWidth::Wide];
}
impl From<EastAsianWidth> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: EastAsianWidth) -> Self { other.0 as u16 }
}create_const_array! {
1150#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1152impl EastAsianWidth {
1153 pub const Neutral: EastAsianWidth = EastAsianWidth(0); pub const Ambiguous: EastAsianWidth = EastAsianWidth(1); pub const Halfwidth: EastAsianWidth = EastAsianWidth(2); pub const Fullwidth: EastAsianWidth = EastAsianWidth(3); pub const Narrow: EastAsianWidth = EastAsianWidth(4); pub const Wide: EastAsianWidth = EastAsianWidth(5); }
1160#[test]
1161fn east_asian_width_consts();
1162}
1163
1164impl 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! {
1165 name: "East_Asian_Width";
1166 short_name: "ea";
1167 ident: EastAsianWidth;
1168 data_marker: crate::provider::PropertyEnumEastAsianWidthV1;
1169 singleton: SINGLETON_PROPERTY_ENUM_EAST_ASIAN_WIDTH_V1;
1170 ule_ty: u8;
1171}
1172
1173#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for LineBreak { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for LineBreak {
#[inline]
fn clone(&self) -> LineBreak {
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_tuple_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::cmp::PartialEq for LineBreak {
#[inline]
fn eq(&self, other: &LineBreak) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for LineBreak {
#[inline]
fn cmp(&self, other: &LineBreak) -> ::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: &LineBreak)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
1197#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1198#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1200pub struct LineBreak(pub(crate) u8);
1201
1202impl LineBreak {
1203 pub const fn to_icu4c_value(self) -> u8 {
1205 self.0
1206 }
1207 pub const fn from_icu4c_value(value: u8) -> Self {
1209 Self(value)
1210 }
1211}
1212
1213#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl LineBreak {
pub const Unknown: LineBreak = LineBreak(0);
pub const Ambiguous: LineBreak = LineBreak(1);
pub const Alphabetic: LineBreak = LineBreak(2);
pub const BreakBoth: LineBreak = LineBreak(3);
pub const BreakAfter: LineBreak = LineBreak(4);
pub const BreakBefore: LineBreak = LineBreak(5);
pub const MandatoryBreak: LineBreak = LineBreak(6);
pub const ContingentBreak: LineBreak = LineBreak(7);
pub const ClosePunctuation: LineBreak = LineBreak(8);
pub const CombiningMark: LineBreak = LineBreak(9);
pub const CarriageReturn: LineBreak = LineBreak(10);
pub const Exclamation: LineBreak = LineBreak(11);
pub const Glue: LineBreak = LineBreak(12);
pub const Hyphen: LineBreak = LineBreak(13);
pub const Ideographic: LineBreak = LineBreak(14);
pub const Inseparable: LineBreak = LineBreak(15);
pub const InfixNumeric: LineBreak = LineBreak(16);
pub const LineFeed: LineBreak = LineBreak(17);
pub const Nonstarter: LineBreak = LineBreak(18);
pub const Numeric: LineBreak = LineBreak(19);
pub const OpenPunctuation: LineBreak = LineBreak(20);
pub const PostfixNumeric: LineBreak = LineBreak(21);
pub const PrefixNumeric: LineBreak = LineBreak(22);
pub const Quotation: LineBreak = LineBreak(23);
pub const ComplexContext: LineBreak = LineBreak(24);
pub const Surrogate: LineBreak = LineBreak(25);
pub const Space: LineBreak = LineBreak(26);
pub const BreakSymbols: LineBreak = LineBreak(27);
pub const ZWSpace: LineBreak = LineBreak(28);
pub const NextLine: LineBreak = LineBreak(29);
pub const WordJoiner: LineBreak = LineBreak(30);
pub const H2: LineBreak = LineBreak(31);
pub const H3: LineBreak = LineBreak(32);
pub const JL: LineBreak = LineBreak(33);
pub const JT: LineBreak = LineBreak(34);
pub const JV: LineBreak = LineBreak(35);
pub const CloseParenthesis: LineBreak = LineBreak(36);
pub const ConditionalJapaneseStarter: LineBreak = LineBreak(37);
pub const HebrewLetter: LineBreak = LineBreak(38);
pub const RegionalIndicator: LineBreak = LineBreak(39);
pub const EBase: LineBreak = LineBreak(40);
pub const EModifier: LineBreak = LineBreak(41);
pub const ZWJ: LineBreak = LineBreak(42);
pub const Aksara: LineBreak = LineBreak(43);
pub const AksaraPrebase: LineBreak = LineBreak(44);
pub const AksaraStart: LineBreak = LineBreak(45);
pub const ViramaFinal: LineBreak = LineBreak(46);
pub const Virama: LineBreak = LineBreak(47);
pub const UnambiguousHyphen: LineBreak = LineBreak(48);
pub const ALL_VALUES: &'static [LineBreak] =
&[LineBreak::Unknown, LineBreak::Ambiguous, LineBreak::Alphabetic,
LineBreak::BreakBoth, LineBreak::BreakAfter,
LineBreak::BreakBefore, LineBreak::MandatoryBreak,
LineBreak::ContingentBreak, LineBreak::ClosePunctuation,
LineBreak::CombiningMark, LineBreak::CarriageReturn,
LineBreak::Exclamation, LineBreak::Glue, LineBreak::Hyphen,
LineBreak::Ideographic, LineBreak::Inseparable,
LineBreak::InfixNumeric, LineBreak::LineFeed,
LineBreak::Nonstarter, LineBreak::Numeric,
LineBreak::OpenPunctuation, LineBreak::PostfixNumeric,
LineBreak::PrefixNumeric, LineBreak::Quotation,
LineBreak::ComplexContext, LineBreak::Surrogate,
LineBreak::Space, LineBreak::BreakSymbols,
LineBreak::ZWSpace, LineBreak::NextLine,
LineBreak::WordJoiner, LineBreak::H2, LineBreak::H3,
LineBreak::JL, LineBreak::JT, LineBreak::JV,
LineBreak::CloseParenthesis,
LineBreak::ConditionalJapaneseStarter,
LineBreak::HebrewLetter, LineBreak::RegionalIndicator,
LineBreak::EBase, LineBreak::EModifier, LineBreak::ZWJ,
LineBreak::Aksara, LineBreak::AksaraPrebase,
LineBreak::AksaraStart, LineBreak::ViramaFinal,
LineBreak::Virama, LineBreak::UnambiguousHyphen];
}
impl From<LineBreak> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: LineBreak) -> Self { other.0 as u16 }
}create_const_array! {
1214#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1216impl LineBreak {
1217 pub const Unknown: LineBreak = LineBreak(0); pub const Ambiguous: LineBreak = LineBreak(1); pub const Alphabetic: LineBreak = LineBreak(2); pub const BreakBoth: LineBreak = LineBreak(3); pub const BreakAfter: LineBreak = LineBreak(4); pub const BreakBefore: LineBreak = LineBreak(5); pub const MandatoryBreak: LineBreak = LineBreak(6); pub const ContingentBreak: LineBreak = LineBreak(7); pub const ClosePunctuation: LineBreak = LineBreak(8); pub const CombiningMark: LineBreak = LineBreak(9); pub const CarriageReturn: LineBreak = LineBreak(10); pub const Exclamation: LineBreak = LineBreak(11); pub const Glue: LineBreak = LineBreak(12); pub const Hyphen: LineBreak = LineBreak(13); pub const Ideographic: LineBreak = LineBreak(14); pub const Inseparable: LineBreak = LineBreak(15); pub const InfixNumeric: LineBreak = LineBreak(16); pub const LineFeed: LineBreak = LineBreak(17); pub const Nonstarter: LineBreak = LineBreak(18); pub const Numeric: LineBreak = LineBreak(19); pub const OpenPunctuation: LineBreak = LineBreak(20); pub const PostfixNumeric: LineBreak = LineBreak(21); pub const PrefixNumeric: LineBreak = LineBreak(22); pub const Quotation: LineBreak = LineBreak(23); pub const ComplexContext: LineBreak = LineBreak(24); pub const Surrogate: LineBreak = LineBreak(25); pub const Space: LineBreak = LineBreak(26); pub const BreakSymbols: LineBreak = LineBreak(27); pub const ZWSpace: LineBreak = LineBreak(28); pub const NextLine: LineBreak = LineBreak(29); pub const WordJoiner: LineBreak = LineBreak(30); pub const H2: LineBreak = LineBreak(31); pub const H3: LineBreak = LineBreak(32); pub const JL: LineBreak = LineBreak(33); pub const JT: LineBreak = LineBreak(34); pub const JV: LineBreak = LineBreak(35); pub const CloseParenthesis: LineBreak = LineBreak(36); pub const ConditionalJapaneseStarter: LineBreak = LineBreak(37); pub const HebrewLetter: LineBreak = LineBreak(38); pub const RegionalIndicator: LineBreak = LineBreak(39); pub const EBase: LineBreak = LineBreak(40); pub const EModifier: LineBreak = LineBreak(41); pub const ZWJ: LineBreak = LineBreak(42); pub const Aksara: LineBreak = LineBreak(43); pub const AksaraPrebase: LineBreak = LineBreak(44); pub const AksaraStart: LineBreak = LineBreak(45); pub const ViramaFinal: LineBreak = LineBreak(46); pub const Virama: LineBreak = LineBreak(47); pub const UnambiguousHyphen: LineBreak = LineBreak(48); }
1271#[test]
1272fn line_break_consts();
1273}
1274
1275impl 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! {
1276 name: "Line_Break";
1277 short_name: "lb";
1278 ident: LineBreak;
1279 data_marker: crate::provider::PropertyEnumLineBreakV1;
1280 singleton: SINGLETON_PROPERTY_ENUM_LINE_BREAK_V1;
1281 ule_ty: u8;
1282}
1283
1284#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for GraphemeClusterBreak { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for GraphemeClusterBreak {
#[inline]
fn clone(&self) -> GraphemeClusterBreak {
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_tuple_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::cmp::PartialEq for GraphemeClusterBreak {
#[inline]
fn eq(&self, other: &GraphemeClusterBreak) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for GraphemeClusterBreak {
#[inline]
fn cmp(&self, other: &GraphemeClusterBreak) -> ::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: &GraphemeClusterBreak)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
1307#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1308#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1310pub struct GraphemeClusterBreak(pub(crate) u8);
1311
1312impl GraphemeClusterBreak {
1313 pub const fn to_icu4c_value(self) -> u8 {
1315 self.0
1316 }
1317 pub const fn from_icu4c_value(value: u8) -> Self {
1319 Self(value)
1320 }
1321}
1322
1323#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl GraphemeClusterBreak {
pub const Other: GraphemeClusterBreak = GraphemeClusterBreak(0);
pub const Control: GraphemeClusterBreak = GraphemeClusterBreak(1);
pub const CR: GraphemeClusterBreak = GraphemeClusterBreak(2);
pub const Extend: GraphemeClusterBreak = GraphemeClusterBreak(3);
pub const L: GraphemeClusterBreak = GraphemeClusterBreak(4);
pub const LF: GraphemeClusterBreak = GraphemeClusterBreak(5);
pub const LV: GraphemeClusterBreak = GraphemeClusterBreak(6);
pub const LVT: GraphemeClusterBreak = GraphemeClusterBreak(7);
pub const T: GraphemeClusterBreak = GraphemeClusterBreak(8);
pub const V: GraphemeClusterBreak = GraphemeClusterBreak(9);
pub const SpacingMark: GraphemeClusterBreak = GraphemeClusterBreak(10);
pub const Prepend: GraphemeClusterBreak = GraphemeClusterBreak(11);
pub const RegionalIndicator: GraphemeClusterBreak =
GraphemeClusterBreak(12);
#[doc = r" This value is obsolete and unused."]
pub const EBase: GraphemeClusterBreak = GraphemeClusterBreak(13);
#[doc = r" This value is obsolete and unused."]
pub const EBaseGAZ: GraphemeClusterBreak = GraphemeClusterBreak(14);
#[doc = r" This value is obsolete and unused."]
pub const EModifier: GraphemeClusterBreak = GraphemeClusterBreak(15);
#[doc = r" This value is obsolete and unused."]
pub const GlueAfterZwj: GraphemeClusterBreak = GraphemeClusterBreak(16);
pub const ZWJ: GraphemeClusterBreak = GraphemeClusterBreak(17);
pub const ALL_VALUES: &'static [GraphemeClusterBreak] =
&[GraphemeClusterBreak::Other, GraphemeClusterBreak::Control,
GraphemeClusterBreak::CR, GraphemeClusterBreak::Extend,
GraphemeClusterBreak::L, GraphemeClusterBreak::LF,
GraphemeClusterBreak::LV, GraphemeClusterBreak::LVT,
GraphemeClusterBreak::T, GraphemeClusterBreak::V,
GraphemeClusterBreak::SpacingMark,
GraphemeClusterBreak::Prepend,
GraphemeClusterBreak::RegionalIndicator,
GraphemeClusterBreak::EBase, GraphemeClusterBreak::EBaseGAZ,
GraphemeClusterBreak::EModifier,
GraphemeClusterBreak::GlueAfterZwj,
GraphemeClusterBreak::ZWJ];
}
impl From<GraphemeClusterBreak> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: GraphemeClusterBreak) -> Self { other.0 as u16 }
}create_const_array! {
1324#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1326impl GraphemeClusterBreak {
1327 pub const Other: GraphemeClusterBreak = GraphemeClusterBreak(0); pub const Control: GraphemeClusterBreak = GraphemeClusterBreak(1); pub const CR: GraphemeClusterBreak = GraphemeClusterBreak(2); pub const Extend: GraphemeClusterBreak = GraphemeClusterBreak(3); pub const L: GraphemeClusterBreak = GraphemeClusterBreak(4); pub const LF: GraphemeClusterBreak = GraphemeClusterBreak(5); pub const LV: GraphemeClusterBreak = GraphemeClusterBreak(6); pub const LVT: GraphemeClusterBreak = GraphemeClusterBreak(7); pub const T: GraphemeClusterBreak = GraphemeClusterBreak(8); pub const V: GraphemeClusterBreak = GraphemeClusterBreak(9); pub const SpacingMark: GraphemeClusterBreak = GraphemeClusterBreak(10); pub const Prepend: GraphemeClusterBreak = GraphemeClusterBreak(11); pub const RegionalIndicator: GraphemeClusterBreak = GraphemeClusterBreak(12); pub const EBase: GraphemeClusterBreak = GraphemeClusterBreak(13); pub const EBaseGAZ: GraphemeClusterBreak = GraphemeClusterBreak(14); pub const EModifier: GraphemeClusterBreak = GraphemeClusterBreak(15); pub const GlueAfterZwj: GraphemeClusterBreak = GraphemeClusterBreak(16); pub const ZWJ: GraphemeClusterBreak = GraphemeClusterBreak(17); }
1350#[test]
1351fn gcb_consts();
1352}
1353
1354impl 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! {
1355 name: "Grapheme_Cluster_Break";
1356 short_name: "GCB";
1357 ident: GraphemeClusterBreak;
1358 data_marker: crate::provider::PropertyEnumGraphemeClusterBreakV1;
1359 singleton: SINGLETON_PROPERTY_ENUM_GRAPHEME_CLUSTER_BREAK_V1;
1360 ule_ty: u8;
1361}
1362
1363#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for WordBreak { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for WordBreak {
#[inline]
fn clone(&self) -> WordBreak {
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_tuple_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::cmp::PartialEq for WordBreak {
#[inline]
fn eq(&self, other: &WordBreak) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for WordBreak {
#[inline]
fn cmp(&self, other: &WordBreak) -> ::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: &WordBreak)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
1386#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1387#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1389pub struct WordBreak(pub(crate) u8);
1390
1391impl WordBreak {
1392 pub const fn to_icu4c_value(self) -> u8 {
1394 self.0
1395 }
1396 pub const fn from_icu4c_value(value: u8) -> Self {
1398 Self(value)
1399 }
1400}
1401
1402#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl WordBreak {
pub const Other: WordBreak = WordBreak(0);
pub const ALetter: WordBreak = WordBreak(1);
pub const Format: WordBreak = WordBreak(2);
pub const Katakana: WordBreak = WordBreak(3);
pub const MidLetter: WordBreak = WordBreak(4);
pub const MidNum: WordBreak = WordBreak(5);
pub const Numeric: WordBreak = WordBreak(6);
pub const ExtendNumLet: WordBreak = WordBreak(7);
pub const CR: WordBreak = WordBreak(8);
pub const Extend: WordBreak = WordBreak(9);
pub const LF: WordBreak = WordBreak(10);
pub const MidNumLet: WordBreak = WordBreak(11);
pub const Newline: WordBreak = WordBreak(12);
pub const RegionalIndicator: WordBreak = WordBreak(13);
pub const HebrewLetter: WordBreak = WordBreak(14);
pub const SingleQuote: WordBreak = WordBreak(15);
pub const DoubleQuote: WordBreak = WordBreak(16);
#[doc = r" This value is obsolete and unused."]
pub const EBase: WordBreak = WordBreak(17);
#[doc = r" This value is obsolete and unused."]
pub const EBaseGAZ: WordBreak = WordBreak(18);
#[doc = r" This value is obsolete and unused."]
pub const EModifier: WordBreak = WordBreak(19);
#[doc = r" This value is obsolete and unused."]
pub const GlueAfterZwj: WordBreak = WordBreak(20);
pub const ZWJ: WordBreak = WordBreak(21);
pub const WSegSpace: WordBreak = WordBreak(22);
pub const ALL_VALUES: &'static [WordBreak] =
&[WordBreak::Other, WordBreak::ALetter, WordBreak::Format,
WordBreak::Katakana, WordBreak::MidLetter,
WordBreak::MidNum, WordBreak::Numeric,
WordBreak::ExtendNumLet, WordBreak::CR, WordBreak::Extend,
WordBreak::LF, WordBreak::MidNumLet, WordBreak::Newline,
WordBreak::RegionalIndicator, WordBreak::HebrewLetter,
WordBreak::SingleQuote, WordBreak::DoubleQuote,
WordBreak::EBase, WordBreak::EBaseGAZ, WordBreak::EModifier,
WordBreak::GlueAfterZwj, WordBreak::ZWJ,
WordBreak::WSegSpace];
}
impl From<WordBreak> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: WordBreak) -> Self { other.0 as u16 }
}create_const_array! {
1403#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1405impl WordBreak {
1406 pub const Other: WordBreak = WordBreak(0); pub const ALetter: WordBreak = WordBreak(1); pub const Format: WordBreak = WordBreak(2); pub const Katakana: WordBreak = WordBreak(3); pub const MidLetter: WordBreak = WordBreak(4); pub const MidNum: WordBreak = WordBreak(5); pub const Numeric: WordBreak = WordBreak(6); pub const ExtendNumLet: WordBreak = WordBreak(7); pub const CR: WordBreak = WordBreak(8); pub const Extend: WordBreak = WordBreak(9); pub const LF: WordBreak = WordBreak(10); pub const MidNumLet: WordBreak = WordBreak(11); pub const Newline: WordBreak = WordBreak(12); pub const RegionalIndicator: WordBreak = WordBreak(13); pub const HebrewLetter: WordBreak = WordBreak(14); pub const SingleQuote: WordBreak = WordBreak(15); pub const DoubleQuote: WordBreak = WordBreak(16); pub const EBase: WordBreak = WordBreak(17); pub const EBaseGAZ: WordBreak = WordBreak(18); pub const EModifier: WordBreak = WordBreak(19); pub const GlueAfterZwj: WordBreak = WordBreak(20); pub const ZWJ: WordBreak = WordBreak(21); pub const WSegSpace: WordBreak = WordBreak(22); }
1434#[test]
1435fn word_break_consts();
1436}
1437
1438impl 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! {
1439 name: "Word_Break";
1440 short_name: "WB";
1441 ident: WordBreak;
1442 data_marker: crate::provider::PropertyEnumWordBreakV1;
1443 singleton: SINGLETON_PROPERTY_ENUM_WORD_BREAK_V1;
1444 ule_ty: u8;
1445}
1446
1447#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for SentenceBreak { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for SentenceBreak {
#[inline]
fn clone(&self) -> SentenceBreak {
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_tuple_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::cmp::PartialEq for SentenceBreak {
#[inline]
fn eq(&self, other: &SentenceBreak) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for SentenceBreak {
#[inline]
fn cmp(&self, other: &SentenceBreak) -> ::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: &SentenceBreak)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
1470#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1471#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1473pub struct SentenceBreak(pub(crate) u8);
1474
1475impl SentenceBreak {
1476 pub const fn to_icu4c_value(self) -> u8 {
1478 self.0
1479 }
1480 pub const fn from_icu4c_value(value: u8) -> Self {
1482 Self(value)
1483 }
1484}
1485
1486#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl SentenceBreak {
pub const Other: SentenceBreak = SentenceBreak(0);
pub const ATerm: SentenceBreak = SentenceBreak(1);
pub const Close: SentenceBreak = SentenceBreak(2);
pub const Format: SentenceBreak = SentenceBreak(3);
pub const Lower: SentenceBreak = SentenceBreak(4);
pub const Numeric: SentenceBreak = SentenceBreak(5);
pub const OLetter: SentenceBreak = SentenceBreak(6);
pub const Sep: SentenceBreak = SentenceBreak(7);
pub const Sp: SentenceBreak = SentenceBreak(8);
pub const STerm: SentenceBreak = SentenceBreak(9);
pub const Upper: SentenceBreak = SentenceBreak(10);
pub const CR: SentenceBreak = SentenceBreak(11);
pub const Extend: SentenceBreak = SentenceBreak(12);
pub const LF: SentenceBreak = SentenceBreak(13);
pub const SContinue: SentenceBreak = SentenceBreak(14);
pub const ALL_VALUES: &'static [SentenceBreak] =
&[SentenceBreak::Other, SentenceBreak::ATerm, SentenceBreak::Close,
SentenceBreak::Format, SentenceBreak::Lower,
SentenceBreak::Numeric, SentenceBreak::OLetter,
SentenceBreak::Sep, SentenceBreak::Sp, SentenceBreak::STerm,
SentenceBreak::Upper, SentenceBreak::CR,
SentenceBreak::Extend, SentenceBreak::LF,
SentenceBreak::SContinue];
}
impl From<SentenceBreak> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: SentenceBreak) -> Self { other.0 as u16 }
}create_const_array! {
1487#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1489impl SentenceBreak {
1490 pub const Other: SentenceBreak = SentenceBreak(0); pub const ATerm: SentenceBreak = SentenceBreak(1); pub const Close: SentenceBreak = SentenceBreak(2); pub const Format: SentenceBreak = SentenceBreak(3); pub const Lower: SentenceBreak = SentenceBreak(4); pub const Numeric: SentenceBreak = SentenceBreak(5); pub const OLetter: SentenceBreak = SentenceBreak(6); pub const Sep: SentenceBreak = SentenceBreak(7); pub const Sp: SentenceBreak = SentenceBreak(8); pub const STerm: SentenceBreak = SentenceBreak(9); pub const Upper: SentenceBreak = SentenceBreak(10); pub const CR: SentenceBreak = SentenceBreak(11); pub const Extend: SentenceBreak = SentenceBreak(12); pub const LF: SentenceBreak = SentenceBreak(13); pub const SContinue: SentenceBreak = SentenceBreak(14); }
1506#[test]
1507fn sentence_break_consts();
1508}
1509
1510impl 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! {
1511 name: "Sentence_Break";
1512 short_name: "SB";
1513 ident: SentenceBreak;
1514 data_marker: crate::provider::PropertyEnumSentenceBreakV1;
1515 singleton: SINGLETON_PROPERTY_ENUM_SENTENCE_BREAK_V1;
1516 ule_ty: u8;
1517}
1518
1519#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for CanonicalCombiningClass { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for CanonicalCombiningClass {
#[inline]
fn clone(&self) -> CanonicalCombiningClass {
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_tuple_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::cmp::PartialEq for CanonicalCombiningClass {
#[inline]
fn eq(&self, other: &CanonicalCombiningClass) -> bool {
self.0 == other.0
}
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for CanonicalCombiningClass {
#[inline]
fn cmp(&self, other: &CanonicalCombiningClass) -> ::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: &CanonicalCombiningClass)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
1549#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1550#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1552pub struct CanonicalCombiningClass(pub(crate) u8);
1553
1554impl CanonicalCombiningClass {
1555 pub const fn to_icu4c_value(self) -> u8 {
1557 self.0
1558 }
1559 pub const fn from_icu4c_value(value: u8) -> Self {
1561 Self(value)
1562 }
1563}
1564
1565#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl CanonicalCombiningClass {
pub const NotReordered: CanonicalCombiningClass =
CanonicalCombiningClass(0);
pub const Overlay: CanonicalCombiningClass = CanonicalCombiningClass(1);
pub const HanReading: CanonicalCombiningClass =
CanonicalCombiningClass(6);
pub const Nukta: CanonicalCombiningClass = CanonicalCombiningClass(7);
pub const KanaVoicing: CanonicalCombiningClass =
CanonicalCombiningClass(8);
pub const Virama: CanonicalCombiningClass = CanonicalCombiningClass(9);
pub const CCC10: CanonicalCombiningClass = CanonicalCombiningClass(10);
pub const CCC11: CanonicalCombiningClass = CanonicalCombiningClass(11);
pub const CCC12: CanonicalCombiningClass = CanonicalCombiningClass(12);
pub const CCC13: CanonicalCombiningClass = CanonicalCombiningClass(13);
pub const CCC14: CanonicalCombiningClass = CanonicalCombiningClass(14);
pub const CCC15: CanonicalCombiningClass = CanonicalCombiningClass(15);
pub const CCC16: CanonicalCombiningClass = CanonicalCombiningClass(16);
pub const CCC17: CanonicalCombiningClass = CanonicalCombiningClass(17);
pub const CCC18: CanonicalCombiningClass = CanonicalCombiningClass(18);
pub const CCC19: CanonicalCombiningClass = CanonicalCombiningClass(19);
pub const CCC20: CanonicalCombiningClass = CanonicalCombiningClass(20);
pub const CCC21: CanonicalCombiningClass = CanonicalCombiningClass(21);
pub const CCC22: CanonicalCombiningClass = CanonicalCombiningClass(22);
pub const CCC23: CanonicalCombiningClass = CanonicalCombiningClass(23);
pub const CCC24: CanonicalCombiningClass = CanonicalCombiningClass(24);
pub const CCC25: CanonicalCombiningClass = CanonicalCombiningClass(25);
pub const CCC26: CanonicalCombiningClass = CanonicalCombiningClass(26);
pub const CCC27: CanonicalCombiningClass = CanonicalCombiningClass(27);
pub const CCC28: CanonicalCombiningClass = CanonicalCombiningClass(28);
pub const CCC29: CanonicalCombiningClass = CanonicalCombiningClass(29);
pub const CCC30: CanonicalCombiningClass = CanonicalCombiningClass(30);
pub const CCC31: CanonicalCombiningClass = CanonicalCombiningClass(31);
pub const CCC32: CanonicalCombiningClass = CanonicalCombiningClass(32);
pub const CCC33: CanonicalCombiningClass = CanonicalCombiningClass(33);
pub const CCC34: CanonicalCombiningClass = CanonicalCombiningClass(34);
pub const CCC35: CanonicalCombiningClass = CanonicalCombiningClass(35);
pub const CCC36: CanonicalCombiningClass = CanonicalCombiningClass(36);
pub const CCC84: CanonicalCombiningClass = CanonicalCombiningClass(84);
pub const CCC91: CanonicalCombiningClass = CanonicalCombiningClass(91);
pub const CCC103: CanonicalCombiningClass = CanonicalCombiningClass(103);
pub const CCC107: CanonicalCombiningClass = CanonicalCombiningClass(107);
pub const CCC118: CanonicalCombiningClass = CanonicalCombiningClass(118);
pub const CCC122: CanonicalCombiningClass = CanonicalCombiningClass(122);
pub const CCC129: CanonicalCombiningClass = CanonicalCombiningClass(129);
pub const CCC130: CanonicalCombiningClass = CanonicalCombiningClass(130);
pub const CCC132: CanonicalCombiningClass = CanonicalCombiningClass(132);
pub const CCC133: CanonicalCombiningClass = CanonicalCombiningClass(133);
pub const AttachedBelowLeft: CanonicalCombiningClass =
CanonicalCombiningClass(200);
pub const AttachedBelow: CanonicalCombiningClass =
CanonicalCombiningClass(202);
pub const AttachedAbove: CanonicalCombiningClass =
CanonicalCombiningClass(214);
pub const AttachedAboveRight: CanonicalCombiningClass =
CanonicalCombiningClass(216);
pub const BelowLeft: CanonicalCombiningClass =
CanonicalCombiningClass(218);
pub const Below: CanonicalCombiningClass = CanonicalCombiningClass(220);
pub const BelowRight: CanonicalCombiningClass =
CanonicalCombiningClass(222);
pub const Left: CanonicalCombiningClass = CanonicalCombiningClass(224);
pub const Right: CanonicalCombiningClass = CanonicalCombiningClass(226);
pub const AboveLeft: CanonicalCombiningClass =
CanonicalCombiningClass(228);
pub const Above: CanonicalCombiningClass = CanonicalCombiningClass(230);
pub const AboveRight: CanonicalCombiningClass =
CanonicalCombiningClass(232);
pub const DoubleBelow: CanonicalCombiningClass =
CanonicalCombiningClass(233);
pub const DoubleAbove: CanonicalCombiningClass =
CanonicalCombiningClass(234);
pub const IotaSubscript: CanonicalCombiningClass =
CanonicalCombiningClass(240);
pub const ALL_VALUES: &'static [CanonicalCombiningClass] =
&[CanonicalCombiningClass::NotReordered,
CanonicalCombiningClass::Overlay,
CanonicalCombiningClass::HanReading,
CanonicalCombiningClass::Nukta,
CanonicalCombiningClass::KanaVoicing,
CanonicalCombiningClass::Virama,
CanonicalCombiningClass::CCC10,
CanonicalCombiningClass::CCC11,
CanonicalCombiningClass::CCC12,
CanonicalCombiningClass::CCC13,
CanonicalCombiningClass::CCC14,
CanonicalCombiningClass::CCC15,
CanonicalCombiningClass::CCC16,
CanonicalCombiningClass::CCC17,
CanonicalCombiningClass::CCC18,
CanonicalCombiningClass::CCC19,
CanonicalCombiningClass::CCC20,
CanonicalCombiningClass::CCC21,
CanonicalCombiningClass::CCC22,
CanonicalCombiningClass::CCC23,
CanonicalCombiningClass::CCC24,
CanonicalCombiningClass::CCC25,
CanonicalCombiningClass::CCC26,
CanonicalCombiningClass::CCC27,
CanonicalCombiningClass::CCC28,
CanonicalCombiningClass::CCC29,
CanonicalCombiningClass::CCC30,
CanonicalCombiningClass::CCC31,
CanonicalCombiningClass::CCC32,
CanonicalCombiningClass::CCC33,
CanonicalCombiningClass::CCC34,
CanonicalCombiningClass::CCC35,
CanonicalCombiningClass::CCC36,
CanonicalCombiningClass::CCC84,
CanonicalCombiningClass::CCC91,
CanonicalCombiningClass::CCC103,
CanonicalCombiningClass::CCC107,
CanonicalCombiningClass::CCC118,
CanonicalCombiningClass::CCC122,
CanonicalCombiningClass::CCC129,
CanonicalCombiningClass::CCC130,
CanonicalCombiningClass::CCC132,
CanonicalCombiningClass::CCC133,
CanonicalCombiningClass::AttachedBelowLeft,
CanonicalCombiningClass::AttachedBelow,
CanonicalCombiningClass::AttachedAbove,
CanonicalCombiningClass::AttachedAboveRight,
CanonicalCombiningClass::BelowLeft,
CanonicalCombiningClass::Below,
CanonicalCombiningClass::BelowRight,
CanonicalCombiningClass::Left,
CanonicalCombiningClass::Right,
CanonicalCombiningClass::AboveLeft,
CanonicalCombiningClass::Above,
CanonicalCombiningClass::AboveRight,
CanonicalCombiningClass::DoubleBelow,
CanonicalCombiningClass::DoubleAbove,
CanonicalCombiningClass::IotaSubscript];
}
impl From<CanonicalCombiningClass> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: CanonicalCombiningClass) -> Self { other.0 as u16 }
}create_const_array! {
1566#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1569impl CanonicalCombiningClass {
1570 pub const NotReordered: CanonicalCombiningClass = CanonicalCombiningClass(0); pub const Overlay: CanonicalCombiningClass = CanonicalCombiningClass(1); pub const HanReading: CanonicalCombiningClass = CanonicalCombiningClass(6); pub const Nukta: CanonicalCombiningClass = CanonicalCombiningClass(7); pub const KanaVoicing: CanonicalCombiningClass = CanonicalCombiningClass(8); pub const Virama: CanonicalCombiningClass = CanonicalCombiningClass(9); pub const CCC10: CanonicalCombiningClass = CanonicalCombiningClass(10); pub const CCC11: CanonicalCombiningClass = CanonicalCombiningClass(11); pub const CCC12: CanonicalCombiningClass = CanonicalCombiningClass(12); pub const CCC13: CanonicalCombiningClass = CanonicalCombiningClass(13); pub const CCC14: CanonicalCombiningClass = CanonicalCombiningClass(14); pub const CCC15: CanonicalCombiningClass = CanonicalCombiningClass(15); pub const CCC16: CanonicalCombiningClass = CanonicalCombiningClass(16); pub const CCC17: CanonicalCombiningClass = CanonicalCombiningClass(17); pub const CCC18: CanonicalCombiningClass = CanonicalCombiningClass(18); pub const CCC19: CanonicalCombiningClass = CanonicalCombiningClass(19); pub const CCC20: CanonicalCombiningClass = CanonicalCombiningClass(20); pub const CCC21: CanonicalCombiningClass = CanonicalCombiningClass(21); pub const CCC22: CanonicalCombiningClass = CanonicalCombiningClass(22); pub const CCC23: CanonicalCombiningClass = CanonicalCombiningClass(23); pub const CCC24: CanonicalCombiningClass = CanonicalCombiningClass(24); pub const CCC25: CanonicalCombiningClass = CanonicalCombiningClass(25); pub const CCC26: CanonicalCombiningClass = CanonicalCombiningClass(26); pub const CCC27: CanonicalCombiningClass = CanonicalCombiningClass(27); pub const CCC28: CanonicalCombiningClass = CanonicalCombiningClass(28); pub const CCC29: CanonicalCombiningClass = CanonicalCombiningClass(29); pub const CCC30: CanonicalCombiningClass = CanonicalCombiningClass(30); pub const CCC31: CanonicalCombiningClass = CanonicalCombiningClass(31); pub const CCC32: CanonicalCombiningClass = CanonicalCombiningClass(32); pub const CCC33: CanonicalCombiningClass = CanonicalCombiningClass(33); pub const CCC34: CanonicalCombiningClass = CanonicalCombiningClass(34); pub const CCC35: CanonicalCombiningClass = CanonicalCombiningClass(35); pub const CCC36: CanonicalCombiningClass = CanonicalCombiningClass(36); pub const CCC84: CanonicalCombiningClass = CanonicalCombiningClass(84); pub const CCC91: CanonicalCombiningClass = CanonicalCombiningClass(91); pub const CCC103: CanonicalCombiningClass = CanonicalCombiningClass(103); pub const CCC107: CanonicalCombiningClass = CanonicalCombiningClass(107); pub const CCC118: CanonicalCombiningClass = CanonicalCombiningClass(118); pub const CCC122: CanonicalCombiningClass = CanonicalCombiningClass(122); pub const CCC129: CanonicalCombiningClass = CanonicalCombiningClass(129); pub const CCC130: CanonicalCombiningClass = CanonicalCombiningClass(130); pub const CCC132: CanonicalCombiningClass = CanonicalCombiningClass(132); pub const CCC133: CanonicalCombiningClass = CanonicalCombiningClass(133); pub const AttachedBelowLeft: CanonicalCombiningClass = CanonicalCombiningClass(200); pub const AttachedBelow: CanonicalCombiningClass = CanonicalCombiningClass(202); pub const AttachedAbove: CanonicalCombiningClass = CanonicalCombiningClass(214); pub const AttachedAboveRight: CanonicalCombiningClass = CanonicalCombiningClass(216); pub const BelowLeft: CanonicalCombiningClass = CanonicalCombiningClass(218); pub const Below: CanonicalCombiningClass = CanonicalCombiningClass(220); pub const BelowRight: CanonicalCombiningClass = CanonicalCombiningClass(222); pub const Left: CanonicalCombiningClass = CanonicalCombiningClass(224); pub const Right: CanonicalCombiningClass = CanonicalCombiningClass(226); pub const AboveLeft: CanonicalCombiningClass = CanonicalCombiningClass(228); pub const Above: CanonicalCombiningClass = CanonicalCombiningClass(230); pub const AboveRight: CanonicalCombiningClass = CanonicalCombiningClass(232); pub const DoubleBelow: CanonicalCombiningClass = CanonicalCombiningClass(233); pub const DoubleAbove: CanonicalCombiningClass = CanonicalCombiningClass(234); pub const IotaSubscript: CanonicalCombiningClass = CanonicalCombiningClass(240); }
1629#[test]
1630fn ccc_consts();
1631}
1632
1633impl 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! {
1634 name: "Canonical_Combining_Class";
1635 short_name: "ccc";
1636 ident: CanonicalCombiningClass;
1637 data_marker: crate::provider::PropertyEnumCanonicalCombiningClassV1;
1638 singleton: SINGLETON_PROPERTY_ENUM_CANONICAL_COMBINING_CLASS_V1;
1639 ule_ty: u8;
1640}
1641
1642#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for IndicConjunctBreak { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for IndicConjunctBreak {
#[inline]
fn clone(&self) -> IndicConjunctBreak {
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_tuple_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::cmp::PartialEq for IndicConjunctBreak {
#[inline]
fn eq(&self, other: &IndicConjunctBreak) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for IndicConjunctBreak {
#[inline]
fn cmp(&self, other: &IndicConjunctBreak) -> ::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: &IndicConjunctBreak)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
1669#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1670#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1672pub struct IndicConjunctBreak(pub(crate) u8);
1673
1674impl IndicConjunctBreak {
1675 pub const fn to_icu4c_value(self) -> u8 {
1677 self.0
1678 }
1679 pub const fn from_icu4c_value(value: u8) -> Self {
1681 Self(value)
1682 }
1683}
1684
1685#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl IndicConjunctBreak {
pub const None: IndicConjunctBreak = IndicConjunctBreak(0);
pub const Consonant: IndicConjunctBreak = IndicConjunctBreak(1);
pub const Extend: IndicConjunctBreak = IndicConjunctBreak(2);
pub const Linker: IndicConjunctBreak = IndicConjunctBreak(3);
pub const ALL_VALUES: &'static [IndicConjunctBreak] =
&[IndicConjunctBreak::None, IndicConjunctBreak::Consonant,
IndicConjunctBreak::Extend, IndicConjunctBreak::Linker];
}
impl From<IndicConjunctBreak> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: IndicConjunctBreak) -> Self { other.0 as u16 }
}create_const_array! {
1686#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1688impl IndicConjunctBreak {
1689 pub const None: IndicConjunctBreak = IndicConjunctBreak(0);
1690 pub const Consonant: IndicConjunctBreak = IndicConjunctBreak(1);
1691 pub const Extend: IndicConjunctBreak = IndicConjunctBreak(2);
1692 pub const Linker: IndicConjunctBreak = IndicConjunctBreak(3);
1693}
1694#[test]
1695fn indic_conjunct_break_consts();
1696}
1697
1698impl 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! {
1699 name: "Indic_Conjunct_Break";
1700 short_name: "InCB";
1701 ident: IndicConjunctBreak;
1702 data_marker: crate::provider::PropertyEnumIndicConjunctBreakV1;
1703 singleton: SINGLETON_PROPERTY_ENUM_INDIC_CONJUNCT_BREAK_V1;
1704 ule_ty: u8;
1705}
1706
1707#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for IndicSyllabicCategory { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for IndicSyllabicCategory {
#[inline]
fn clone(&self) -> IndicSyllabicCategory {
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_tuple_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::cmp::PartialEq for IndicSyllabicCategory {
#[inline]
fn eq(&self, other: &IndicSyllabicCategory) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for IndicSyllabicCategory {
#[inline]
fn cmp(&self, other: &IndicSyllabicCategory) -> ::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: &IndicSyllabicCategory)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
1726#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1727#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1729pub struct IndicSyllabicCategory(pub(crate) u8);
1730
1731impl IndicSyllabicCategory {
1732 pub const fn to_icu4c_value(self) -> u8 {
1734 self.0
1735 }
1736 pub const fn from_icu4c_value(value: u8) -> Self {
1738 Self(value)
1739 }
1740}
1741
1742#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl IndicSyllabicCategory {
pub const Other: IndicSyllabicCategory = IndicSyllabicCategory(0);
pub const Avagraha: IndicSyllabicCategory = IndicSyllabicCategory(1);
pub const Bindu: IndicSyllabicCategory = IndicSyllabicCategory(2);
pub const BrahmiJoiningNumber: IndicSyllabicCategory =
IndicSyllabicCategory(3);
pub const CantillationMark: IndicSyllabicCategory =
IndicSyllabicCategory(4);
pub const Consonant: IndicSyllabicCategory = IndicSyllabicCategory(5);
pub const ConsonantDead: IndicSyllabicCategory = IndicSyllabicCategory(6);
pub const ConsonantFinal: IndicSyllabicCategory =
IndicSyllabicCategory(7);
pub const ConsonantHeadLetter: IndicSyllabicCategory =
IndicSyllabicCategory(8);
pub const ConsonantInitialPostfixed: IndicSyllabicCategory =
IndicSyllabicCategory(9);
pub const ConsonantKiller: IndicSyllabicCategory =
IndicSyllabicCategory(10);
pub const ConsonantMedial: IndicSyllabicCategory =
IndicSyllabicCategory(11);
pub const ConsonantPlaceholder: IndicSyllabicCategory =
IndicSyllabicCategory(12);
pub const ConsonantPrecedingRepha: IndicSyllabicCategory =
IndicSyllabicCategory(13);
pub const ConsonantPrefixed: IndicSyllabicCategory =
IndicSyllabicCategory(14);
pub const ConsonantSubjoined: IndicSyllabicCategory =
IndicSyllabicCategory(15);
pub const ConsonantSucceedingRepha: IndicSyllabicCategory =
IndicSyllabicCategory(16);
pub const ConsonantWithStacker: IndicSyllabicCategory =
IndicSyllabicCategory(17);
pub const GeminationMark: IndicSyllabicCategory =
IndicSyllabicCategory(18);
pub const InvisibleStacker: IndicSyllabicCategory =
IndicSyllabicCategory(19);
pub const Joiner: IndicSyllabicCategory = IndicSyllabicCategory(20);
pub const ModifyingLetter: IndicSyllabicCategory =
IndicSyllabicCategory(21);
pub const NonJoiner: IndicSyllabicCategory = IndicSyllabicCategory(22);
pub const Nukta: IndicSyllabicCategory = IndicSyllabicCategory(23);
pub const Number: IndicSyllabicCategory = IndicSyllabicCategory(24);
pub const NumberJoiner: IndicSyllabicCategory = IndicSyllabicCategory(25);
pub const PureKiller: IndicSyllabicCategory = IndicSyllabicCategory(26);
pub const RegisterShifter: IndicSyllabicCategory =
IndicSyllabicCategory(27);
pub const SyllableModifier: IndicSyllabicCategory =
IndicSyllabicCategory(28);
pub const ToneLetter: IndicSyllabicCategory = IndicSyllabicCategory(29);
pub const ToneMark: IndicSyllabicCategory = IndicSyllabicCategory(30);
pub const Virama: IndicSyllabicCategory = IndicSyllabicCategory(31);
pub const Visarga: IndicSyllabicCategory = IndicSyllabicCategory(32);
pub const Vowel: IndicSyllabicCategory = IndicSyllabicCategory(33);
pub const VowelDependent: IndicSyllabicCategory =
IndicSyllabicCategory(34);
pub const VowelIndependent: IndicSyllabicCategory =
IndicSyllabicCategory(35);
pub const ReorderingKiller: IndicSyllabicCategory =
IndicSyllabicCategory(36);
pub const ALL_VALUES: &'static [IndicSyllabicCategory] =
&[IndicSyllabicCategory::Other, IndicSyllabicCategory::Avagraha,
IndicSyllabicCategory::Bindu,
IndicSyllabicCategory::BrahmiJoiningNumber,
IndicSyllabicCategory::CantillationMark,
IndicSyllabicCategory::Consonant,
IndicSyllabicCategory::ConsonantDead,
IndicSyllabicCategory::ConsonantFinal,
IndicSyllabicCategory::ConsonantHeadLetter,
IndicSyllabicCategory::ConsonantInitialPostfixed,
IndicSyllabicCategory::ConsonantKiller,
IndicSyllabicCategory::ConsonantMedial,
IndicSyllabicCategory::ConsonantPlaceholder,
IndicSyllabicCategory::ConsonantPrecedingRepha,
IndicSyllabicCategory::ConsonantPrefixed,
IndicSyllabicCategory::ConsonantSubjoined,
IndicSyllabicCategory::ConsonantSucceedingRepha,
IndicSyllabicCategory::ConsonantWithStacker,
IndicSyllabicCategory::GeminationMark,
IndicSyllabicCategory::InvisibleStacker,
IndicSyllabicCategory::Joiner,
IndicSyllabicCategory::ModifyingLetter,
IndicSyllabicCategory::NonJoiner,
IndicSyllabicCategory::Nukta, IndicSyllabicCategory::Number,
IndicSyllabicCategory::NumberJoiner,
IndicSyllabicCategory::PureKiller,
IndicSyllabicCategory::RegisterShifter,
IndicSyllabicCategory::SyllableModifier,
IndicSyllabicCategory::ToneLetter,
IndicSyllabicCategory::ToneMark,
IndicSyllabicCategory::Virama,
IndicSyllabicCategory::Visarga,
IndicSyllabicCategory::Vowel,
IndicSyllabicCategory::VowelDependent,
IndicSyllabicCategory::VowelIndependent,
IndicSyllabicCategory::ReorderingKiller];
}
impl From<IndicSyllabicCategory> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: IndicSyllabicCategory) -> Self { other.0 as u16 }
}create_const_array! {
1743#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1745impl IndicSyllabicCategory {
1746 pub const Other: IndicSyllabicCategory = IndicSyllabicCategory(0);
1747 pub const Avagraha: IndicSyllabicCategory = IndicSyllabicCategory(1);
1748 pub const Bindu: IndicSyllabicCategory = IndicSyllabicCategory(2);
1749 pub const BrahmiJoiningNumber: IndicSyllabicCategory = IndicSyllabicCategory(3);
1750 pub const CantillationMark: IndicSyllabicCategory = IndicSyllabicCategory(4);
1751 pub const Consonant: IndicSyllabicCategory = IndicSyllabicCategory(5);
1752 pub const ConsonantDead: IndicSyllabicCategory = IndicSyllabicCategory(6);
1753 pub const ConsonantFinal: IndicSyllabicCategory = IndicSyllabicCategory(7);
1754 pub const ConsonantHeadLetter: IndicSyllabicCategory = IndicSyllabicCategory(8);
1755 pub const ConsonantInitialPostfixed: IndicSyllabicCategory = IndicSyllabicCategory(9);
1756 pub const ConsonantKiller: IndicSyllabicCategory = IndicSyllabicCategory(10);
1757 pub const ConsonantMedial: IndicSyllabicCategory = IndicSyllabicCategory(11);
1758 pub const ConsonantPlaceholder: IndicSyllabicCategory = IndicSyllabicCategory(12);
1759 pub const ConsonantPrecedingRepha: IndicSyllabicCategory = IndicSyllabicCategory(13);
1760 pub const ConsonantPrefixed: IndicSyllabicCategory = IndicSyllabicCategory(14);
1761 pub const ConsonantSubjoined: IndicSyllabicCategory = IndicSyllabicCategory(15);
1762 pub const ConsonantSucceedingRepha: IndicSyllabicCategory = IndicSyllabicCategory(16);
1763 pub const ConsonantWithStacker: IndicSyllabicCategory = IndicSyllabicCategory(17);
1764 pub const GeminationMark: IndicSyllabicCategory = IndicSyllabicCategory(18);
1765 pub const InvisibleStacker: IndicSyllabicCategory = IndicSyllabicCategory(19);
1766 pub const Joiner: IndicSyllabicCategory = IndicSyllabicCategory(20);
1767 pub const ModifyingLetter: IndicSyllabicCategory = IndicSyllabicCategory(21);
1768 pub const NonJoiner: IndicSyllabicCategory = IndicSyllabicCategory(22);
1769 pub const Nukta: IndicSyllabicCategory = IndicSyllabicCategory(23);
1770 pub const Number: IndicSyllabicCategory = IndicSyllabicCategory(24);
1771 pub const NumberJoiner: IndicSyllabicCategory = IndicSyllabicCategory(25);
1772 pub const PureKiller: IndicSyllabicCategory = IndicSyllabicCategory(26);
1773 pub const RegisterShifter: IndicSyllabicCategory = IndicSyllabicCategory(27);
1774 pub const SyllableModifier: IndicSyllabicCategory = IndicSyllabicCategory(28);
1775 pub const ToneLetter: IndicSyllabicCategory = IndicSyllabicCategory(29);
1776 pub const ToneMark: IndicSyllabicCategory = IndicSyllabicCategory(30);
1777 pub const Virama: IndicSyllabicCategory = IndicSyllabicCategory(31);
1778 pub const Visarga: IndicSyllabicCategory = IndicSyllabicCategory(32);
1779 pub const Vowel: IndicSyllabicCategory = IndicSyllabicCategory(33);
1780 pub const VowelDependent: IndicSyllabicCategory = IndicSyllabicCategory(34);
1781 pub const VowelIndependent: IndicSyllabicCategory = IndicSyllabicCategory(35);
1782 pub const ReorderingKiller: IndicSyllabicCategory = IndicSyllabicCategory(36);
1783}
1784#[test]
1785fn indic_syllabic_category_consts();
1786}
1787
1788impl 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! {
1789 name: "Indic_Syllabic_Category";
1790 short_name: "InSC";
1791 ident: IndicSyllabicCategory;
1792 data_marker: crate::provider::PropertyEnumIndicSyllabicCategoryV1;
1793 singleton: SINGLETON_PROPERTY_ENUM_INDIC_SYLLABIC_CATEGORY_V1;
1794 ule_ty: u8;
1795}
1796
1797#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for JoiningGroup { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for JoiningGroup {
#[inline]
fn clone(&self) -> JoiningGroup {
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_tuple_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::cmp::PartialEq for JoiningGroup {
#[inline]
fn eq(&self, other: &JoiningGroup) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for JoiningGroup {
#[inline]
fn cmp(&self, other: &JoiningGroup) -> ::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: &JoiningGroup)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
1815#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1816#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1818pub struct JoiningGroup(pub(crate) u8);
1819
1820impl JoiningGroup {
1821 pub const fn to_icu4c_value(self) -> u8 {
1823 self.0
1824 }
1825 pub const fn from_icu4c_value(value: u8) -> Self {
1827 Self(value)
1828 }
1829}
1830
1831#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl JoiningGroup {
pub const NoJoiningGroup: JoiningGroup = JoiningGroup(0);
pub const Ain: JoiningGroup = JoiningGroup(1);
pub const Alaph: JoiningGroup = JoiningGroup(2);
pub const Alef: JoiningGroup = JoiningGroup(3);
pub const Beh: JoiningGroup = JoiningGroup(4);
pub const Beth: JoiningGroup = JoiningGroup(5);
pub const Dal: JoiningGroup = JoiningGroup(6);
pub const DalathRish: JoiningGroup = JoiningGroup(7);
pub const E: JoiningGroup = JoiningGroup(8);
pub const Feh: JoiningGroup = JoiningGroup(9);
pub const FinalSemkath: JoiningGroup = JoiningGroup(10);
pub const Gaf: JoiningGroup = JoiningGroup(11);
pub const Gamal: JoiningGroup = JoiningGroup(12);
pub const Hah: JoiningGroup = JoiningGroup(13);
pub const TehMarbutaGoal: JoiningGroup = JoiningGroup(14);
pub const He: JoiningGroup = JoiningGroup(15);
pub const Heh: JoiningGroup = JoiningGroup(16);
pub const HehGoal: JoiningGroup = JoiningGroup(17);
pub const Heth: JoiningGroup = JoiningGroup(18);
pub const Kaf: JoiningGroup = JoiningGroup(19);
pub const Kaph: JoiningGroup = JoiningGroup(20);
pub const KnottedHeh: JoiningGroup = JoiningGroup(21);
pub const Lam: JoiningGroup = JoiningGroup(22);
pub const Lamadh: JoiningGroup = JoiningGroup(23);
pub const Meem: JoiningGroup = JoiningGroup(24);
pub const Mim: JoiningGroup = JoiningGroup(25);
pub const Noon: JoiningGroup = JoiningGroup(26);
pub const Nun: JoiningGroup = JoiningGroup(27);
pub const Pe: JoiningGroup = JoiningGroup(28);
pub const Qaf: JoiningGroup = JoiningGroup(29);
pub const Qaph: JoiningGroup = JoiningGroup(30);
pub const Reh: JoiningGroup = JoiningGroup(31);
pub const ReversedPe: JoiningGroup = JoiningGroup(32);
pub const Sad: JoiningGroup = JoiningGroup(33);
pub const Sadhe: JoiningGroup = JoiningGroup(34);
pub const Seen: JoiningGroup = JoiningGroup(35);
pub const Semkath: JoiningGroup = JoiningGroup(36);
pub const Shin: JoiningGroup = JoiningGroup(37);
pub const SwashKaf: JoiningGroup = JoiningGroup(38);
pub const SyriacWaw: JoiningGroup = JoiningGroup(39);
pub const Tah: JoiningGroup = JoiningGroup(40);
pub const Taw: JoiningGroup = JoiningGroup(41);
pub const TehMarbuta: JoiningGroup = JoiningGroup(42);
pub const Teth: JoiningGroup = JoiningGroup(43);
pub const Waw: JoiningGroup = JoiningGroup(44);
pub const Yeh: JoiningGroup = JoiningGroup(45);
pub const YehBarree: JoiningGroup = JoiningGroup(46);
pub const YehWithTail: JoiningGroup = JoiningGroup(47);
pub const Yudh: JoiningGroup = JoiningGroup(48);
pub const YudhHe: JoiningGroup = JoiningGroup(49);
pub const Zain: JoiningGroup = JoiningGroup(50);
pub const Fe: JoiningGroup = JoiningGroup(51);
pub const Khaph: JoiningGroup = JoiningGroup(52);
pub const Zhain: JoiningGroup = JoiningGroup(53);
pub const BurushaskiYehBarree: JoiningGroup = JoiningGroup(54);
pub const FarsiYeh: JoiningGroup = JoiningGroup(55);
pub const Nya: JoiningGroup = JoiningGroup(56);
pub const RohingyaYeh: JoiningGroup = JoiningGroup(57);
pub const ManichaeanAleph: JoiningGroup = JoiningGroup(58);
pub const ManichaeanAyin: JoiningGroup = JoiningGroup(59);
pub const ManichaeanBeth: JoiningGroup = JoiningGroup(60);
pub const ManichaeanDaleth: JoiningGroup = JoiningGroup(61);
pub const ManichaeanDhamedh: JoiningGroup = JoiningGroup(62);
pub const ManichaeanFive: JoiningGroup = JoiningGroup(63);
pub const ManichaeanGimel: JoiningGroup = JoiningGroup(64);
pub const ManichaeanHeth: JoiningGroup = JoiningGroup(65);
pub const ManichaeanHundred: JoiningGroup = JoiningGroup(66);
pub const ManichaeanKaph: JoiningGroup = JoiningGroup(67);
pub const ManichaeanLamedh: JoiningGroup = JoiningGroup(68);
pub const ManichaeanMem: JoiningGroup = JoiningGroup(69);
pub const ManichaeanNun: JoiningGroup = JoiningGroup(70);
pub const ManichaeanOne: JoiningGroup = JoiningGroup(71);
pub const ManichaeanPe: JoiningGroup = JoiningGroup(72);
pub const ManichaeanQoph: JoiningGroup = JoiningGroup(73);
pub const ManichaeanResh: JoiningGroup = JoiningGroup(74);
pub const ManichaeanSadhe: JoiningGroup = JoiningGroup(75);
pub const ManichaeanSamekh: JoiningGroup = JoiningGroup(76);
pub const ManichaeanTaw: JoiningGroup = JoiningGroup(77);
pub const ManichaeanTen: JoiningGroup = JoiningGroup(78);
pub const ManichaeanTeth: JoiningGroup = JoiningGroup(79);
pub const ManichaeanThamedh: JoiningGroup = JoiningGroup(80);
pub const ManichaeanTwenty: JoiningGroup = JoiningGroup(81);
pub const ManichaeanWaw: JoiningGroup = JoiningGroup(82);
pub const ManichaeanYodh: JoiningGroup = JoiningGroup(83);
pub const ManichaeanZayin: JoiningGroup = JoiningGroup(84);
pub const StraightWaw: JoiningGroup = JoiningGroup(85);
pub const AfricanFeh: JoiningGroup = JoiningGroup(86);
pub const AfricanNoon: JoiningGroup = JoiningGroup(87);
pub const AfricanQaf: JoiningGroup = JoiningGroup(88);
pub const MalayalamBha: JoiningGroup = JoiningGroup(89);
pub const MalayalamJa: JoiningGroup = JoiningGroup(90);
pub const MalayalamLla: JoiningGroup = JoiningGroup(91);
pub const MalayalamLlla: JoiningGroup = JoiningGroup(92);
pub const MalayalamNga: JoiningGroup = JoiningGroup(93);
pub const MalayalamNna: JoiningGroup = JoiningGroup(94);
pub const MalayalamNnna: JoiningGroup = JoiningGroup(95);
pub const MalayalamNya: JoiningGroup = JoiningGroup(96);
pub const MalayalamRa: JoiningGroup = JoiningGroup(97);
pub const MalayalamSsa: JoiningGroup = JoiningGroup(98);
pub const MalayalamTta: JoiningGroup = JoiningGroup(99);
pub const HanifiRohingyaKinnaYa: JoiningGroup = JoiningGroup(100);
pub const HanifiRohingyaPa: JoiningGroup = JoiningGroup(101);
pub const ThinYeh: JoiningGroup = JoiningGroup(102);
pub const VerticalTail: JoiningGroup = JoiningGroup(103);
pub const KashmiriYeh: JoiningGroup = JoiningGroup(104);
pub const ThinNoon: JoiningGroup = JoiningGroup(105);
pub const ALL_VALUES: &'static [JoiningGroup] =
&[JoiningGroup::NoJoiningGroup, JoiningGroup::Ain,
JoiningGroup::Alaph, JoiningGroup::Alef, JoiningGroup::Beh,
JoiningGroup::Beth, JoiningGroup::Dal,
JoiningGroup::DalathRish, JoiningGroup::E,
JoiningGroup::Feh, JoiningGroup::FinalSemkath,
JoiningGroup::Gaf, JoiningGroup::Gamal, JoiningGroup::Hah,
JoiningGroup::TehMarbutaGoal, JoiningGroup::He,
JoiningGroup::Heh, JoiningGroup::HehGoal,
JoiningGroup::Heth, JoiningGroup::Kaf, JoiningGroup::Kaph,
JoiningGroup::KnottedHeh, JoiningGroup::Lam,
JoiningGroup::Lamadh, JoiningGroup::Meem, JoiningGroup::Mim,
JoiningGroup::Noon, JoiningGroup::Nun, JoiningGroup::Pe,
JoiningGroup::Qaf, JoiningGroup::Qaph, JoiningGroup::Reh,
JoiningGroup::ReversedPe, JoiningGroup::Sad,
JoiningGroup::Sadhe, JoiningGroup::Seen,
JoiningGroup::Semkath, JoiningGroup::Shin,
JoiningGroup::SwashKaf, JoiningGroup::SyriacWaw,
JoiningGroup::Tah, JoiningGroup::Taw,
JoiningGroup::TehMarbuta, JoiningGroup::Teth,
JoiningGroup::Waw, JoiningGroup::Yeh,
JoiningGroup::YehBarree, JoiningGroup::YehWithTail,
JoiningGroup::Yudh, JoiningGroup::YudhHe,
JoiningGroup::Zain, JoiningGroup::Fe, JoiningGroup::Khaph,
JoiningGroup::Zhain, JoiningGroup::BurushaskiYehBarree,
JoiningGroup::FarsiYeh, JoiningGroup::Nya,
JoiningGroup::RohingyaYeh, JoiningGroup::ManichaeanAleph,
JoiningGroup::ManichaeanAyin, JoiningGroup::ManichaeanBeth,
JoiningGroup::ManichaeanDaleth,
JoiningGroup::ManichaeanDhamedh,
JoiningGroup::ManichaeanFive, JoiningGroup::ManichaeanGimel,
JoiningGroup::ManichaeanHeth,
JoiningGroup::ManichaeanHundred,
JoiningGroup::ManichaeanKaph,
JoiningGroup::ManichaeanLamedh, JoiningGroup::ManichaeanMem,
JoiningGroup::ManichaeanNun, JoiningGroup::ManichaeanOne,
JoiningGroup::ManichaeanPe, JoiningGroup::ManichaeanQoph,
JoiningGroup::ManichaeanResh, JoiningGroup::ManichaeanSadhe,
JoiningGroup::ManichaeanSamekh, JoiningGroup::ManichaeanTaw,
JoiningGroup::ManichaeanTen, JoiningGroup::ManichaeanTeth,
JoiningGroup::ManichaeanThamedh,
JoiningGroup::ManichaeanTwenty, JoiningGroup::ManichaeanWaw,
JoiningGroup::ManichaeanYodh, JoiningGroup::ManichaeanZayin,
JoiningGroup::StraightWaw, JoiningGroup::AfricanFeh,
JoiningGroup::AfricanNoon, JoiningGroup::AfricanQaf,
JoiningGroup::MalayalamBha, JoiningGroup::MalayalamJa,
JoiningGroup::MalayalamLla, JoiningGroup::MalayalamLlla,
JoiningGroup::MalayalamNga, JoiningGroup::MalayalamNna,
JoiningGroup::MalayalamNnna, JoiningGroup::MalayalamNya,
JoiningGroup::MalayalamRa, JoiningGroup::MalayalamSsa,
JoiningGroup::MalayalamTta,
JoiningGroup::HanifiRohingyaKinnaYa,
JoiningGroup::HanifiRohingyaPa, JoiningGroup::ThinYeh,
JoiningGroup::VerticalTail, JoiningGroup::KashmiriYeh,
JoiningGroup::ThinNoon];
}
impl From<JoiningGroup> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: JoiningGroup) -> Self { other.0 as u16 }
}create_const_array! {
1832#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1834impl JoiningGroup {
1835 pub const NoJoiningGroup: JoiningGroup = JoiningGroup(0);
1836 pub const Ain: JoiningGroup = JoiningGroup(1);
1837 pub const Alaph: JoiningGroup = JoiningGroup(2);
1838 pub const Alef: JoiningGroup = JoiningGroup(3);
1839 pub const Beh: JoiningGroup = JoiningGroup(4);
1840 pub const Beth: JoiningGroup = JoiningGroup(5);
1841 pub const Dal: JoiningGroup = JoiningGroup(6);
1842 pub const DalathRish: JoiningGroup = JoiningGroup(7);
1843 pub const E: JoiningGroup = JoiningGroup(8);
1844 pub const Feh: JoiningGroup = JoiningGroup(9);
1845 pub const FinalSemkath: JoiningGroup = JoiningGroup(10);
1846 pub const Gaf: JoiningGroup = JoiningGroup(11);
1847 pub const Gamal: JoiningGroup = JoiningGroup(12);
1848 pub const Hah: JoiningGroup = JoiningGroup(13);
1849 pub const TehMarbutaGoal: JoiningGroup = JoiningGroup(14);
1850 pub const He: JoiningGroup = JoiningGroup(15);
1851 pub const Heh: JoiningGroup = JoiningGroup(16);
1852 pub const HehGoal: JoiningGroup = JoiningGroup(17);
1853 pub const Heth: JoiningGroup = JoiningGroup(18);
1854 pub const Kaf: JoiningGroup = JoiningGroup(19);
1855 pub const Kaph: JoiningGroup = JoiningGroup(20);
1856 pub const KnottedHeh: JoiningGroup = JoiningGroup(21);
1857 pub const Lam: JoiningGroup = JoiningGroup(22);
1858 pub const Lamadh: JoiningGroup = JoiningGroup(23);
1859 pub const Meem: JoiningGroup = JoiningGroup(24);
1860 pub const Mim: JoiningGroup = JoiningGroup(25);
1861 pub const Noon: JoiningGroup = JoiningGroup(26);
1862 pub const Nun: JoiningGroup = JoiningGroup(27);
1863 pub const Pe: JoiningGroup = JoiningGroup(28);
1864 pub const Qaf: JoiningGroup = JoiningGroup(29);
1865 pub const Qaph: JoiningGroup = JoiningGroup(30);
1866 pub const Reh: JoiningGroup = JoiningGroup(31);
1867 pub const ReversedPe: JoiningGroup = JoiningGroup(32);
1868 pub const Sad: JoiningGroup = JoiningGroup(33);
1869 pub const Sadhe: JoiningGroup = JoiningGroup(34);
1870 pub const Seen: JoiningGroup = JoiningGroup(35);
1871 pub const Semkath: JoiningGroup = JoiningGroup(36);
1872 pub const Shin: JoiningGroup = JoiningGroup(37);
1873 pub const SwashKaf: JoiningGroup = JoiningGroup(38);
1874 pub const SyriacWaw: JoiningGroup = JoiningGroup(39);
1875 pub const Tah: JoiningGroup = JoiningGroup(40);
1876 pub const Taw: JoiningGroup = JoiningGroup(41);
1877 pub const TehMarbuta: JoiningGroup = JoiningGroup(42);
1878 pub const Teth: JoiningGroup = JoiningGroup(43);
1879 pub const Waw: JoiningGroup = JoiningGroup(44);
1880 pub const Yeh: JoiningGroup = JoiningGroup(45);
1881 pub const YehBarree: JoiningGroup = JoiningGroup(46);
1882 pub const YehWithTail: JoiningGroup = JoiningGroup(47);
1883 pub const Yudh: JoiningGroup = JoiningGroup(48);
1884 pub const YudhHe: JoiningGroup = JoiningGroup(49);
1885 pub const Zain: JoiningGroup = JoiningGroup(50);
1886 pub const Fe: JoiningGroup = JoiningGroup(51);
1887 pub const Khaph: JoiningGroup = JoiningGroup(52);
1888 pub const Zhain: JoiningGroup = JoiningGroup(53);
1889 pub const BurushaskiYehBarree: JoiningGroup = JoiningGroup(54);
1890 pub const FarsiYeh: JoiningGroup = JoiningGroup(55);
1891 pub const Nya: JoiningGroup = JoiningGroup(56);
1892 pub const RohingyaYeh: JoiningGroup = JoiningGroup(57);
1893 pub const ManichaeanAleph: JoiningGroup = JoiningGroup(58);
1894 pub const ManichaeanAyin: JoiningGroup = JoiningGroup(59);
1895 pub const ManichaeanBeth: JoiningGroup = JoiningGroup(60);
1896 pub const ManichaeanDaleth: JoiningGroup = JoiningGroup(61);
1897 pub const ManichaeanDhamedh: JoiningGroup = JoiningGroup(62);
1898 pub const ManichaeanFive: JoiningGroup = JoiningGroup(63);
1899 pub const ManichaeanGimel: JoiningGroup = JoiningGroup(64);
1900 pub const ManichaeanHeth: JoiningGroup = JoiningGroup(65);
1901 pub const ManichaeanHundred: JoiningGroup = JoiningGroup(66);
1902 pub const ManichaeanKaph: JoiningGroup = JoiningGroup(67);
1903 pub const ManichaeanLamedh: JoiningGroup = JoiningGroup(68);
1904 pub const ManichaeanMem: JoiningGroup = JoiningGroup(69);
1905 pub const ManichaeanNun: JoiningGroup = JoiningGroup(70);
1906 pub const ManichaeanOne: JoiningGroup = JoiningGroup(71);
1907 pub const ManichaeanPe: JoiningGroup = JoiningGroup(72);
1908 pub const ManichaeanQoph: JoiningGroup = JoiningGroup(73);
1909 pub const ManichaeanResh: JoiningGroup = JoiningGroup(74);
1910 pub const ManichaeanSadhe: JoiningGroup = JoiningGroup(75);
1911 pub const ManichaeanSamekh: JoiningGroup = JoiningGroup(76);
1912 pub const ManichaeanTaw: JoiningGroup = JoiningGroup(77);
1913 pub const ManichaeanTen: JoiningGroup = JoiningGroup(78);
1914 pub const ManichaeanTeth: JoiningGroup = JoiningGroup(79);
1915 pub const ManichaeanThamedh: JoiningGroup = JoiningGroup(80);
1916 pub const ManichaeanTwenty: JoiningGroup = JoiningGroup(81);
1917 pub const ManichaeanWaw: JoiningGroup = JoiningGroup(82);
1918 pub const ManichaeanYodh: JoiningGroup = JoiningGroup(83);
1919 pub const ManichaeanZayin: JoiningGroup = JoiningGroup(84);
1920 pub const StraightWaw: JoiningGroup = JoiningGroup(85);
1921 pub const AfricanFeh: JoiningGroup = JoiningGroup(86);
1922 pub const AfricanNoon: JoiningGroup = JoiningGroup(87);
1923 pub const AfricanQaf: JoiningGroup = JoiningGroup(88);
1924 pub const MalayalamBha: JoiningGroup = JoiningGroup(89);
1925 pub const MalayalamJa: JoiningGroup = JoiningGroup(90);
1926 pub const MalayalamLla: JoiningGroup = JoiningGroup(91);
1927 pub const MalayalamLlla: JoiningGroup = JoiningGroup(92);
1928 pub const MalayalamNga: JoiningGroup = JoiningGroup(93);
1929 pub const MalayalamNna: JoiningGroup = JoiningGroup(94);
1930 pub const MalayalamNnna: JoiningGroup = JoiningGroup(95);
1931 pub const MalayalamNya: JoiningGroup = JoiningGroup(96);
1932 pub const MalayalamRa: JoiningGroup = JoiningGroup(97);
1933 pub const MalayalamSsa: JoiningGroup = JoiningGroup(98);
1934 pub const MalayalamTta: JoiningGroup = JoiningGroup(99);
1935 pub const HanifiRohingyaKinnaYa: JoiningGroup = JoiningGroup(100);
1936 pub const HanifiRohingyaPa: JoiningGroup = JoiningGroup(101);
1937 pub const ThinYeh: JoiningGroup = JoiningGroup(102);
1938 pub const VerticalTail: JoiningGroup = JoiningGroup(103);
1939 pub const KashmiriYeh: JoiningGroup = JoiningGroup(104);
1940 pub const ThinNoon: JoiningGroup = JoiningGroup(105);
1941}
1942#[test]
1943fn joining_group_consts();
1944}
1945
1946impl 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! {
1947 name: "Joining_Group";
1948 short_name: "jg";
1949 ident: JoiningGroup;
1950 data_marker: crate::provider::PropertyEnumJoiningGroupV1;
1951 singleton: SINGLETON_PROPERTY_ENUM_JOINING_GROUP_V1;
1952 ule_ty: u8;
1953}
1954
1955#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for JoiningType { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for JoiningType {
#[inline]
fn clone(&self) -> JoiningType {
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_tuple_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::cmp::PartialEq for JoiningType {
#[inline]
fn eq(&self, other: &JoiningType) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for JoiningType {
#[inline]
fn cmp(&self, other: &JoiningType) -> ::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: &JoiningType)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
1975#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1976#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1978pub struct JoiningType(pub(crate) u8);
1979
1980impl JoiningType {
1981 pub const fn to_icu4c_value(self) -> u8 {
1983 self.0
1984 }
1985 pub const fn from_icu4c_value(value: u8) -> Self {
1987 Self(value)
1988 }
1989}
1990
1991#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl JoiningType {
pub const NonJoining: JoiningType = JoiningType(0);
pub const JoinCausing: JoiningType = JoiningType(1);
pub const DualJoining: JoiningType = JoiningType(2);
pub const LeftJoining: JoiningType = JoiningType(3);
pub const RightJoining: JoiningType = JoiningType(4);
pub const Transparent: JoiningType = JoiningType(5);
pub const ALL_VALUES: &'static [JoiningType] =
&[JoiningType::NonJoining, JoiningType::JoinCausing,
JoiningType::DualJoining, JoiningType::LeftJoining,
JoiningType::RightJoining, JoiningType::Transparent];
}
impl From<JoiningType> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: JoiningType) -> Self { other.0 as u16 }
}create_const_array! {
1992#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1994impl JoiningType {
1995 pub const NonJoining: JoiningType = JoiningType(0); pub const JoinCausing: JoiningType = JoiningType(1); pub const DualJoining: JoiningType = JoiningType(2); pub const LeftJoining: JoiningType = JoiningType(3); pub const RightJoining: JoiningType = JoiningType(4); pub const Transparent: JoiningType = JoiningType(5); }
2002#[test]
2003fn joining_type_consts();
2004}
2005
2006impl 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! {
2007 name: "Joining_Type";
2008 short_name: "jt";
2009 ident: JoiningType;
2010 data_marker: crate::provider::PropertyEnumJoiningTypeV1;
2011 singleton: SINGLETON_PROPERTY_ENUM_JOINING_TYPE_V1;
2012 ule_ty: u8;
2013}
2014
2015#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::marker::Copy for VerticalOrientation { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::clone::Clone for VerticalOrientation {
#[inline]
fn clone(&self) -> VerticalOrientation {
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_tuple_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::cmp::PartialEq for VerticalOrientation {
#[inline]
fn eq(&self, other: &VerticalOrientation) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_structs)]
impl ::core::cmp::Ord for VerticalOrientation {
#[inline]
fn cmp(&self, other: &VerticalOrientation) -> ::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: &VerticalOrientation)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}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)]
2043#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2044#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
2046pub struct VerticalOrientation(pub(crate) u8);
2047
2048impl VerticalOrientation {
2049 pub const fn to_icu4c_value(self) -> u8 {
2051 self.0
2052 }
2053 pub const fn from_icu4c_value(value: u8) -> Self {
2055 Self(value)
2056 }
2057}
2058
2059#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl VerticalOrientation {
pub const Rotated: VerticalOrientation = VerticalOrientation(0);
pub const TransformedRotated: VerticalOrientation =
VerticalOrientation(1);
pub const TransformedUpright: VerticalOrientation =
VerticalOrientation(2);
pub const Upright: VerticalOrientation = VerticalOrientation(3);
pub const ALL_VALUES: &'static [VerticalOrientation] =
&[VerticalOrientation::Rotated,
VerticalOrientation::TransformedRotated,
VerticalOrientation::TransformedUpright,
VerticalOrientation::Upright];
}
impl From<VerticalOrientation> for u16 {
#[allow(trivial_numeric_casts)]
fn from(other: VerticalOrientation) -> Self { other.0 as u16 }
}create_const_array! {
2060#[allow(missing_docs)] #[allow(non_upper_case_globals)]
2062impl VerticalOrientation {
2063 pub const Rotated: VerticalOrientation = VerticalOrientation(0); pub const TransformedRotated: VerticalOrientation = VerticalOrientation(1); pub const TransformedUpright: VerticalOrientation = VerticalOrientation(2); pub const Upright: VerticalOrientation = VerticalOrientation(3); }
2068#[test]
2069fn vertical_orientation_consts();
2070}
2071
2072impl 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! {
2073 name: "Vertical_Orientation";
2074 short_name: "vo";
2075 ident: VerticalOrientation;
2076 data_marker: crate::provider::PropertyEnumVerticalOrientationV1;
2077 singleton: SINGLETON_PROPERTY_ENUM_VERTICAL_ORIENTATION_V1;
2078 ule_ty: u8;
2079}
2080
2081pub use crate::code_point_set::BinaryProperty;
2082
2083macro_rules! make_binary_property {
2084 (
2085 name: $name:literal;
2086 short_name: $short_name:literal;
2087 ident: $ident:ident;
2088 data_marker: $data_marker:ty;
2089 singleton: $singleton:ident;
2090 $(#[$doc:meta])+
2091 ) => {
2092 $(#[$doc])+
2093 #[derive(Debug)]
2094 #[non_exhaustive]
2095 pub struct $ident;
2096
2097 impl crate::private::Sealed for $ident {}
2098
2099 impl BinaryProperty for $ident {
2100 type DataMarker = $data_marker;
2101 #[cfg(feature = "compiled_data")]
2102 const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
2103 &crate::provider::Baked::$singleton;
2104 const NAME: &'static [u8] = $name.as_bytes();
2105 const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
2106 }
2107 };
2108}
2109
2110#[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")
}
}
impl crate::private::Sealed for AsciiHexDigit {}
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! {
2111 name: "ASCII_Hex_Digit";
2112 short_name: "AHex";
2113 ident: AsciiHexDigit;
2114 data_marker: crate::provider::PropertyBinaryAsciiHexDigitV1;
2115 singleton: SINGLETON_PROPERTY_BINARY_ASCII_HEX_DIGIT_V1;
2116 }
2132
2133#[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")
}
}
impl crate::private::Sealed for Alnum {}
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! {
2134 name: "alnum";
2135 short_name: "alnum";
2136 ident: Alnum;
2137 data_marker: crate::provider::PropertyBinaryAlnumV1;
2138 singleton: SINGLETON_PROPERTY_BINARY_ALNUM_V1;
2139 }
2143
2144#[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")
}
}
impl crate::private::Sealed for Alphabetic {}
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! {
2145 name: "Alphabetic";
2146 short_name: "Alpha";
2147 ident: Alphabetic;
2148 data_marker: crate::provider::PropertyBinaryAlphabeticV1;
2149 singleton: SINGLETON_PROPERTY_BINARY_ALPHABETIC_V1;
2150 }
2167
2168#[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")
}
}
impl crate::private::Sealed for BidiControl {}
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! {
2169 name: "Bidi_Control";
2170 short_name: "Bidi_C";
2171 ident: BidiControl;
2172 data_marker: crate::provider::PropertyBinaryBidiControlV1;
2173 singleton: SINGLETON_PROPERTY_BINARY_BIDI_CONTROL_V1;
2174 }
2190
2191#[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")
}
}
impl crate::private::Sealed for BidiMirrored {}
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! {
2192 name: "Bidi_Mirrored";
2193 short_name: "Bidi_M";
2194 ident: BidiMirrored;
2195 data_marker: crate::provider::PropertyBinaryBidiMirroredV1;
2196 singleton: SINGLETON_PROPERTY_BINARY_BIDI_MIRRORED_V1;
2197 }
2214
2215#[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")
}
}
impl crate::private::Sealed for Blank {}
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! {
2216 name: "blank";
2217 short_name: "blank";
2218 ident: Blank;
2219 data_marker: crate::provider::PropertyBinaryBlankV1;
2220 singleton: SINGLETON_PROPERTY_BINARY_BLANK_V1;
2221 }
2224
2225#[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")
}
}
impl crate::private::Sealed for Cased {}
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! {
2226 name: "Cased";
2227 short_name: "Cased";
2228 ident: Cased;
2229 data_marker: crate::provider::PropertyBinaryCasedV1;
2230 singleton: SINGLETON_PROPERTY_BINARY_CASED_V1;
2231 }
2246
2247#[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")
}
}
impl crate::private::Sealed for CaseIgnorable {}
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! {
2248 name: "Case_Ignorable";
2249 short_name: "CI";
2250 ident: CaseIgnorable;
2251 data_marker: crate::provider::PropertyBinaryCaseIgnorableV1;
2252 singleton: SINGLETON_PROPERTY_BINARY_CASE_IGNORABLE_V1;
2253 }
2268
2269#[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")
}
}
impl crate::private::Sealed for FullCompositionExclusion {}
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! {
2270 name: "Full_Composition_Exclusion";
2271 short_name: "Comp_Ex";
2272 ident: FullCompositionExclusion;
2273 data_marker: crate::provider::PropertyBinaryFullCompositionExclusionV1;
2274 singleton: SINGLETON_PROPERTY_BINARY_FULL_COMPOSITION_EXCLUSION_V1;
2275 }
2280
2281#[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")
}
}
impl crate::private::Sealed for ChangesWhenCasefolded {}
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! {
2282 name: "Changes_When_Casefolded";
2283 short_name: "CWCF";
2284 ident: ChangesWhenCasefolded;
2285 data_marker: crate::provider::PropertyBinaryChangesWhenCasefoldedV1;
2286 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEFOLDED_V1;
2287 }
2302
2303#[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")
}
}
impl crate::private::Sealed for ChangesWhenCasemapped {}
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! {
2304 name: "Changes_When_Casemapped";
2305 short_name: "CWCM";
2306 ident: ChangesWhenCasemapped;
2307 data_marker: crate::provider::PropertyBinaryChangesWhenCasemappedV1;
2308 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEMAPPED_V1;
2309 }
2312
2313#[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")
}
}
impl crate::private::Sealed for ChangesWhenNfkcCasefolded {}
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! {
2314 name: "Changes_When_NFKC_Casefolded";
2315 short_name: "CWKCF";
2316 ident: ChangesWhenNfkcCasefolded;
2317 data_marker: crate::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1;
2318 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_NFKC_CASEFOLDED_V1;
2319 }
2334
2335#[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")
}
}
impl crate::private::Sealed for ChangesWhenLowercased {}
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! {
2336 name: "Changes_When_Lowercased";
2337 short_name: "CWL";
2338 ident: ChangesWhenLowercased;
2339 data_marker: crate::provider::PropertyBinaryChangesWhenLowercasedV1;
2340 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_LOWERCASED_V1;
2341 }
2356
2357#[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")
}
}
impl crate::private::Sealed for ChangesWhenTitlecased {}
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! {
2358 name: "Changes_When_Titlecased";
2359 short_name: "CWT";
2360 ident: ChangesWhenTitlecased;
2361 data_marker: crate::provider::PropertyBinaryChangesWhenTitlecasedV1;
2362 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_TITLECASED_V1;
2363 }
2378
2379#[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")
}
}
impl crate::private::Sealed for ChangesWhenUppercased {}
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! {
2380 name: "Changes_When_Uppercased";
2381 short_name: "CWU";
2382 ident: ChangesWhenUppercased;
2383 data_marker: crate::provider::PropertyBinaryChangesWhenUppercasedV1;
2384 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_UPPERCASED_V1;
2385 }
2400
2401#[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")
}
}
impl crate::private::Sealed for Dash {}
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! {
2402 name: "Dash";
2403 short_name: "Dash";
2404 ident: Dash;
2405 data_marker: crate::provider::PropertyBinaryDashV1;
2406 singleton: SINGLETON_PROPERTY_BINARY_DASH_V1;
2407 }
2424
2425#[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")
}
}
impl crate::private::Sealed for 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! {
2426 name: "Deprecated";
2427 short_name: "Dep";
2428 ident: Deprecated;
2429 data_marker: crate::provider::PropertyBinaryDeprecatedV1;
2430 singleton: SINGLETON_PROPERTY_BINARY_DEPRECATED_V1;
2431 }
2449
2450#[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")
}
}
impl crate::private::Sealed for DefaultIgnorableCodePoint {}
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! {
2451 name: "Default_Ignorable_Code_Point";
2452 short_name: "DI";
2453 ident: DefaultIgnorableCodePoint;
2454 data_marker: crate::provider::PropertyBinaryDefaultIgnorableCodePointV1;
2455 singleton: SINGLETON_PROPERTY_BINARY_DEFAULT_IGNORABLE_CODE_POINT_V1;
2456 }
2476
2477#[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")
}
}
impl crate::private::Sealed for Diacritic {}
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! {
2478 name: "Diacritic";
2479 short_name: "Dia";
2480 ident: Diacritic;
2481 data_marker: crate::provider::PropertyBinaryDiacriticV1;
2482 singleton: SINGLETON_PROPERTY_BINARY_DIACRITIC_V1;
2483 }
2498
2499#[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")
}
}
impl crate::private::Sealed for EmojiModifierBase {}
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! {
2500 name: "Emoji_Modifier_Base";
2501 short_name: "EBase";
2502 ident: EmojiModifierBase;
2503 data_marker: crate::provider::PropertyBinaryEmojiModifierBaseV1;
2504 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_BASE_V1;
2505 }
2520
2521#[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")
}
}
impl crate::private::Sealed for EmojiComponent {}
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! {
2522 name: "Emoji_Component";
2523 short_name: "EComp";
2524 ident: EmojiComponent;
2525 data_marker: crate::provider::PropertyBinaryEmojiComponentV1;
2526 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_COMPONENT_V1;
2527 }
2545
2546#[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")
}
}
impl crate::private::Sealed for EmojiModifier {}
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! {
2547 name: "Emoji_Modifier";
2548 short_name: "EMod";
2549 ident: EmojiModifier;
2550 data_marker: crate::provider::PropertyBinaryEmojiModifierV1;
2551 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_V1;
2552 }
2567
2568#[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")
}
}
impl crate::private::Sealed for Emoji {}
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! {
2569 name: "Emoji";
2570 short_name: "Emoji";
2571 ident: Emoji;
2572 data_marker: crate::provider::PropertyBinaryEmojiV1;
2573 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_V1;
2574 }
2589
2590#[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")
}
}
impl crate::private::Sealed for EmojiPresentation {}
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! {
2591 name: "Emoji_Presentation";
2592 short_name: "EPres";
2593 ident: EmojiPresentation;
2594 data_marker: crate::provider::PropertyBinaryEmojiPresentationV1;
2595 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_PRESENTATION_V1;
2596 }
2611
2612#[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")
}
}
impl crate::private::Sealed for Extender {}
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! {
2613 name: "Extender";
2614 short_name: "Ext";
2615 ident: Extender;
2616 data_marker: crate::provider::PropertyBinaryExtenderV1;
2617 singleton: SINGLETON_PROPERTY_BINARY_EXTENDER_V1;
2618 }
2635
2636#[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")
}
}
impl crate::private::Sealed for ExtendedPictographic {}
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! {
2637 name: "Extended_Pictographic";
2638 short_name: "ExtPict";
2639 ident: ExtendedPictographic;
2640 data_marker: crate::provider::PropertyBinaryExtendedPictographicV1;
2641 singleton: SINGLETON_PROPERTY_BINARY_EXTENDED_PICTOGRAPHIC_V1;
2642 }
2658
2659#[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")
}
}
impl crate::private::Sealed for Graph {}
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! {
2660 name: "graph";
2661 short_name: "graph";
2662 ident: Graph;
2663 data_marker: crate::provider::PropertyBinaryGraphV1;
2664 singleton: SINGLETON_PROPERTY_BINARY_GRAPH_V1;
2665 }
2670
2671#[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")
}
}
impl crate::private::Sealed for GraphemeBase {}
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! {
2672 name: "Grapheme_Base";
2673 short_name: "Gr_Base";
2674 ident: GraphemeBase;
2675 data_marker: crate::provider::PropertyBinaryGraphemeBaseV1;
2676 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_BASE_V1;
2677 }
2696
2697#[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")
}
}
impl crate::private::Sealed for GraphemeExtend {}
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! {
2698 name: "Grapheme_Extend";
2699 short_name: "Gr_Ext";
2700 ident: GraphemeExtend;
2701 data_marker: crate::provider::PropertyBinaryGraphemeExtendV1;
2702 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_EXTEND_V1;
2703 }
2722
2723#[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")
}
}
impl crate::private::Sealed for GraphemeLink {}
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! {
2724 name: "Grapheme_Link";
2725 short_name: "Gr_Link";
2726 ident: GraphemeLink;
2727 data_marker: crate::provider::PropertyBinaryGraphemeLinkV1;
2728 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_LINK_V1;
2729 }
2734
2735#[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")
}
}
impl crate::private::Sealed for HexDigit {}
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! {
2736 name: "Hex_Digit";
2737 short_name: "Hex";
2738 ident: HexDigit;
2739 data_marker: crate::provider::PropertyBinaryHexDigitV1;
2740 singleton: SINGLETON_PROPERTY_BINARY_HEX_DIGIT_V1;
2741 }
2760
2761#[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")
}
}
impl crate::private::Sealed for Hyphen {}
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! {
2762 name: "Hyphen";
2763 short_name: "Hyphen";
2764 ident: Hyphen;
2765 data_marker: crate::provider::PropertyBinaryHyphenV1;
2766 singleton: SINGLETON_PROPERTY_BINARY_HYPHEN_V1;
2767 }
2772
2773#[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")
}
}
impl crate::private::Sealed for IdCompatMathContinue {}
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! {
2774 name: "ID_Compat_Math_Continue";
2775 short_name: "ID_Compat_Math_Continue";
2776 ident: IdCompatMathContinue;
2777 data_marker: crate::provider::PropertyBinaryIdCompatMathContinueV1;
2778 singleton: SINGLETON_PROPERTY_BINARY_ID_COMPAT_MATH_CONTINUE_V1;
2779 }
2781
2782#[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")
}
}
impl crate::private::Sealed for IdCompatMathStart {}
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! {
2783 name: "ID_Compat_Math_Start";
2784 short_name: "ID_Compat_Math_Start";
2785 ident: IdCompatMathStart;
2786 data_marker: crate::provider::PropertyBinaryIdCompatMathStartV1;
2787 singleton: SINGLETON_PROPERTY_BINARY_ID_COMPAT_MATH_START_V1;
2788 }
2790
2791#[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")
}
}
impl crate::private::Sealed for IdContinue {}
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! {
2792 name: "ID_Continue";
2793 short_name: "IDC";
2794 ident: IdContinue;
2795 data_marker: crate::provider::PropertyBinaryIdContinueV1;
2796 singleton: SINGLETON_PROPERTY_BINARY_ID_CONTINUE_V1;
2797 }
2820
2821#[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")
}
}
impl crate::private::Sealed for Ideographic {}
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! {
2822 name: "Ideographic";
2823 short_name: "Ideo";
2824 ident: Ideographic;
2825 data_marker: crate::provider::PropertyBinaryIdeographicV1;
2826 singleton: SINGLETON_PROPERTY_BINARY_IDEOGRAPHIC_V1;
2827 }
2842
2843#[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")
}
}
impl crate::private::Sealed for IdStart {}
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! {
2844 name: "ID_Start";
2845 short_name: "IDS";
2846 ident: IdStart;
2847 data_marker: crate::provider::PropertyBinaryIdStartV1;
2848 singleton: SINGLETON_PROPERTY_BINARY_ID_START_V1;
2849 }
2871
2872#[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")
}
}
impl crate::private::Sealed for IdsBinaryOperator {}
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! {
2873 name: "IDS_Binary_Operator";
2874 short_name: "IDSB";
2875 ident: IdsBinaryOperator;
2876 data_marker: crate::provider::PropertyBinaryIdsBinaryOperatorV1;
2877 singleton: SINGLETON_PROPERTY_BINARY_IDS_BINARY_OPERATOR_V1;
2878 }
2892
2893#[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")
}
}
impl crate::private::Sealed for IdsTrinaryOperator {}
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! {
2894 name: "IDS_Trinary_Operator";
2895 short_name: "IDST";
2896 ident: IdsTrinaryOperator;
2897 data_marker: crate::provider::PropertyBinaryIdsTrinaryOperatorV1;
2898 singleton: SINGLETON_PROPERTY_BINARY_IDS_TRINARY_OPERATOR_V1;
2899 }
2916
2917#[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")
}
}
impl crate::private::Sealed for IdsUnaryOperator {}
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! {
2918 name: "IDS_Unary_Operator";
2919 short_name: "IDSU";
2920 ident: IdsUnaryOperator;
2921 data_marker: crate::provider::PropertyBinaryIdsUnaryOperatorV1;
2922 singleton: SINGLETON_PROPERTY_BINARY_IDS_UNARY_OPERATOR_V1;
2923 }
2925
2926#[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")
}
}
impl crate::private::Sealed for JoinControl {}
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! {
2927 name: "Join_Control";
2928 short_name: "Join_C";
2929 ident: JoinControl;
2930 data_marker: crate::provider::PropertyBinaryJoinControlV1;
2931 singleton: SINGLETON_PROPERTY_BINARY_JOIN_CONTROL_V1;
2932 }
2948
2949#[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")
}
}
impl crate::private::Sealed for LogicalOrderException {}
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! {
2950 name: "Logical_Order_Exception";
2951 short_name: "LOE";
2952 ident: LogicalOrderException;
2953 data_marker: crate::provider::PropertyBinaryLogicalOrderExceptionV1;
2954 singleton: SINGLETON_PROPERTY_BINARY_LOGICAL_ORDER_EXCEPTION_V1;
2955 }
2969
2970#[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")
}
}
impl crate::private::Sealed for Lowercase {}
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! {
2971 name: "Lowercase";
2972 short_name: "Lower";
2973 ident: Lowercase;
2974 data_marker: crate::provider::PropertyBinaryLowercaseV1;
2975 singleton: SINGLETON_PROPERTY_BINARY_LOWERCASE_V1;
2976 }
2990
2991#[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")
}
}
impl crate::private::Sealed for Math {}
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! {
2992 name: "Math";
2993 short_name: "Math";
2994 ident: Math;
2995 data_marker: crate::provider::PropertyBinaryMathV1;
2996 singleton: SINGLETON_PROPERTY_BINARY_MATH_V1;
2997 }
3015
3016#[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")
}
}
impl crate::private::Sealed for ModifierCombiningMark {}
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! {
3017 name: "Modifier_Combining_Mark";
3018 short_name: "MCM";
3019 ident: ModifierCombiningMark;
3020 data_marker: crate::provider::PropertyBinaryModifierCombiningMarkV1;
3021 singleton: SINGLETON_PROPERTY_BINARY_MODIFIER_COMBINING_MARK_V1;
3022 }
3024
3025#[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")
}
}
impl crate::private::Sealed for NoncharacterCodePoint {}
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! {
3026 name: "Noncharacter_Code_Point";
3027 short_name: "NChar";
3028 ident: NoncharacterCodePoint;
3029 data_marker: crate::provider::PropertyBinaryNoncharacterCodePointV1;
3030 singleton: SINGLETON_PROPERTY_BINARY_NONCHARACTER_CODE_POINT_V1;
3031 }
3046
3047#[doc =
r" Characters that are inert under NFC, i.e., they do not interact with adjacent characters."]
#[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")
}
}
impl crate::private::Sealed for NfcInert {}
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! {
3048 name: "NFC_Inert";
3049 short_name: "nfcinert";
3050 ident: NfcInert;
3051 data_marker: crate::provider::PropertyBinaryNfcInertV1;
3052 singleton: SINGLETON_PROPERTY_BINARY_NFC_INERT_V1;
3053 }
3055
3056#[doc =
r" Characters that are inert under NFD, i.e., they do not interact with adjacent characters."]
#[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")
}
}
impl crate::private::Sealed for NfdInert {}
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! {
3057 name: "NFD_Inert";
3058 short_name: "nfdinert";
3059 ident: NfdInert;
3060 data_marker: crate::provider::PropertyBinaryNfdInertV1;
3061 singleton: SINGLETON_PROPERTY_BINARY_NFD_INERT_V1;
3062 }
3064
3065#[doc =
r" Characters that are inert under NFKC, i.e., they do not interact with adjacent characters."]
#[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")
}
}
impl crate::private::Sealed for NfkcInert {}
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! {
3066 name: "NFKC_Inert";
3067 short_name: "nfkcinert";
3068 ident: NfkcInert;
3069 data_marker: crate::provider::PropertyBinaryNfkcInertV1;
3070 singleton: SINGLETON_PROPERTY_BINARY_NFKC_INERT_V1;
3071 }
3073
3074#[doc =
r" Characters that are inert under NFKD, i.e., they do not interact with adjacent characters."]
#[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")
}
}
impl crate::private::Sealed for NfkdInert {}
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! {
3075 name: "NFKD_Inert";
3076 short_name: "nfkdinert";
3077 ident: NfkdInert;
3078 data_marker: crate::provider::PropertyBinaryNfkdInertV1;
3079 singleton: SINGLETON_PROPERTY_BINARY_NFKD_INERT_V1;
3080 }
3082
3083#[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")
}
}
impl crate::private::Sealed for PatternSyntax {}
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! {
3084 name: "Pattern_Syntax";
3085 short_name: "Pat_Syn";
3086 ident: PatternSyntax;
3087 data_marker: crate::provider::PropertyBinaryPatternSyntaxV1;
3088 singleton: SINGLETON_PROPERTY_BINARY_PATTERN_SYNTAX_V1;
3089 }
3108
3109#[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")
}
}
impl crate::private::Sealed for PatternWhiteSpace {}
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! {
3110 name: "Pattern_White_Space";
3111 short_name: "Pat_WS";
3112 ident: PatternWhiteSpace;
3113 data_marker: crate::provider::PropertyBinaryPatternWhiteSpaceV1;
3114 singleton: SINGLETON_PROPERTY_BINARY_PATTERN_WHITE_SPACE_V1;
3115 }
3135
3136#[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")
}
}
impl crate::private::Sealed for PrependedConcatenationMark {}
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! {
3137 name: "Prepended_Concatenation_Mark";
3138 short_name: "PCM";
3139 ident: PrependedConcatenationMark;
3140 data_marker: crate::provider::PropertyBinaryPrependedConcatenationMarkV1;
3141 singleton: SINGLETON_PROPERTY_BINARY_PREPENDED_CONCATENATION_MARK_V1;
3142 }
3145
3146#[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")
}
}
impl crate::private::Sealed for Print {}
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! {
3147 name: "print";
3148 short_name: "print";
3149 ident: Print;
3150 data_marker: crate::provider::PropertyBinaryPrintV1;
3151 singleton: SINGLETON_PROPERTY_BINARY_PRINT_V1;
3152 }
3156
3157#[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")
}
}
impl crate::private::Sealed for QuotationMark {}
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! {
3158 name: "Quotation_Mark";
3159 short_name: "QMark";
3160 ident: QuotationMark;
3161 data_marker: crate::provider::PropertyBinaryQuotationMarkV1;
3162 singleton: SINGLETON_PROPERTY_BINARY_QUOTATION_MARK_V1;
3163 }
3178
3179#[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")
}
}
impl crate::private::Sealed for Radical {}
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! {
3180 name: "Radical";
3181 short_name: "Radical";
3182 ident: Radical;
3183 data_marker: crate::provider::PropertyBinaryRadicalV1;
3184 singleton: SINGLETON_PROPERTY_BINARY_RADICAL_V1;
3185 }
3199
3200#[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")
}
}
impl crate::private::Sealed for RegionalIndicator {}
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! {
3201 name: "Regional_Indicator";
3202 short_name: "RI";
3203 ident: RegionalIndicator;
3204 data_marker: crate::provider::PropertyBinaryRegionalIndicatorV1;
3205 singleton: SINGLETON_PROPERTY_BINARY_REGIONAL_INDICATOR_V1;
3206 }
3221
3222#[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")
}
}
impl crate::private::Sealed for SoftDotted {}
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! {
3223 name: "Soft_Dotted";
3224 short_name: "SD";
3225 ident: SoftDotted;
3226 data_marker: crate::provider::PropertyBinarySoftDottedV1;
3227 singleton: SINGLETON_PROPERTY_BINARY_SOFT_DOTTED_V1;
3228 }
3245
3246#[doc =
r" Characters that are starters in terms of Unicode normalization and combining character"]
#[doc = r" sequences."]
#[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")
}
}
impl crate::private::Sealed for SegmentStarter {}
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! {
3247 name: "Segment_Starter";
3248 short_name: "segstart";
3249 ident: SegmentStarter;
3250 data_marker: crate::provider::PropertyBinarySegmentStarterV1;
3251 singleton: SINGLETON_PROPERTY_BINARY_SEGMENT_STARTER_V1;
3252 }
3255
3256#[doc =
r" Characters that are either the source of a case mapping or in the target of a case"]
#[doc = r" mapping."]
#[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")
}
}
impl crate::private::Sealed for CaseSensitive {}
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! {
3257 name: "Case_Sensitive";
3258 short_name: "Sensitive";
3259 ident: CaseSensitive;
3260 data_marker: crate::provider::PropertyBinaryCaseSensitiveV1;
3261 singleton: SINGLETON_PROPERTY_BINARY_CASE_SENSITIVE_V1;
3262 }
3265
3266#[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")
}
}
impl crate::private::Sealed for SentenceTerminal {}
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! {
3267 name: "Sentence_Terminal";
3268 short_name: "STerm";
3269 ident: SentenceTerminal;
3270 data_marker: crate::provider::PropertyBinarySentenceTerminalV1;
3271 singleton: SINGLETON_PROPERTY_BINARY_SENTENCE_TERMINAL_V1;
3272 }
3289
3290#[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")
}
}
impl crate::private::Sealed for TerminalPunctuation {}
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! {
3291 name: "Terminal_Punctuation";
3292 short_name: "Term";
3293 ident: TerminalPunctuation;
3294 data_marker: crate::provider::PropertyBinaryTerminalPunctuationV1;
3295 singleton: SINGLETON_PROPERTY_BINARY_TERMINAL_PUNCTUATION_V1;
3296 }
3313
3314#[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")
}
}
impl crate::private::Sealed for UnifiedIdeograph {}
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! {
3315 name: "Unified_Ideograph";
3316 short_name: "UIdeo";
3317 ident: UnifiedIdeograph;
3318 data_marker: crate::provider::PropertyBinaryUnifiedIdeographV1;
3319 singleton: SINGLETON_PROPERTY_BINARY_UNIFIED_IDEOGRAPH_V1;
3320 }
3335
3336#[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")
}
}
impl crate::private::Sealed for Uppercase {}
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! {
3337 name: "Uppercase";
3338 short_name: "Upper";
3339 ident: Uppercase;
3340 data_marker: crate::provider::PropertyBinaryUppercaseV1;
3341 singleton: SINGLETON_PROPERTY_BINARY_UPPERCASE_V1;
3342 }
3356
3357#[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")
}
}
impl crate::private::Sealed for VariationSelector {}
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! {
3358 name: "Variation_Selector";
3359 short_name: "VS";
3360 ident: VariationSelector;
3361 data_marker: crate::provider::PropertyBinaryVariationSelectorV1;
3362 singleton: SINGLETON_PROPERTY_BINARY_VARIATION_SELECTOR_V1;
3363 }
3380
3381#[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")
}
}
impl crate::private::Sealed for WhiteSpace {}
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! {
3382 name: "White_Space";
3383 short_name: "WSpace";
3384 ident: WhiteSpace;
3385 data_marker: crate::provider::PropertyBinaryWhiteSpaceV1;
3386 singleton: SINGLETON_PROPERTY_BINARY_WHITE_SPACE_V1;
3387 }
3404
3405#[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")
}
}
impl crate::private::Sealed for Xdigit {}
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! {
3406 name: "xdigit";
3407 short_name: "xdigit";
3408 ident: Xdigit;
3409 data_marker: crate::provider::PropertyBinaryXdigitV1;
3410 singleton: SINGLETON_PROPERTY_BINARY_XDIGIT_V1;
3411 }
3415
3416#[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")
}
}
impl crate::private::Sealed for XidContinue {}
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! {
3417 name: "XID_Continue";
3418 short_name: "XIDC";
3419 ident: XidContinue;
3420 data_marker: crate::provider::PropertyBinaryXidContinueV1;
3421 singleton: SINGLETON_PROPERTY_BINARY_XID_CONTINUE_V1;
3422 }
3443
3444#[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")
}
}
impl crate::private::Sealed for XidStart {}
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! {
3445 name: "XID_Start";
3446 short_name: "XIDS";
3447 ident: XidStart;
3448 data_marker: crate::provider::PropertyBinaryXidStartV1;
3449 singleton: SINGLETON_PROPERTY_BINARY_XID_START_V1;
3450 }
3472
3473pub use crate::emoji::EmojiSet;
3474
3475macro_rules! make_emoji_set {
3476 (
3477 name: $name:literal;
3478 short_name: $short_name:literal;
3479 ident: $ident:ident;
3480 data_marker: $data_marker:ty;
3481 singleton: $singleton:ident;
3482 $(#[$doc:meta])+
3483 ) => {
3484 $(#[$doc])+
3485 #[derive(Debug)]
3486 #[non_exhaustive]
3487 pub struct $ident;
3488
3489 impl crate::private::Sealed for $ident {}
3490
3491 impl EmojiSet for $ident {
3492 type DataMarker = $data_marker;
3493 #[cfg(feature = "compiled_data")]
3494 const SINGLETON: &'static crate::provider::PropertyUnicodeSet<'static> =
3495 &crate::provider::Baked::$singleton;
3496 const NAME: &'static [u8] = $name.as_bytes();
3497 const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
3498 }
3499 }
3500}
3501
3502#[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! {
3503 name: "Basic_Emoji";
3504 short_name: "Basic_Emoji";
3505 ident: BasicEmoji;
3506 data_marker: crate::provider::PropertyBinaryBasicEmojiV1;
3507 singleton: SINGLETON_PROPERTY_BINARY_BASIC_EMOJI_V1;
3508 }
3529
3530#[cfg(test)]
3531mod test_enumerated_property_completeness {
3532 use super::*;
3533 use std::collections::BTreeMap;
3534
3535 fn check_enum<'a, T: NamedEnumeratedProperty>(
3536 lookup: &crate::provider::names::PropertyValueNameToEnumMap<'static>,
3537 consts: impl IntoIterator<Item = &'a T>,
3538 ) where
3539 u16: From<T>,
3540 {
3541 let mut data: BTreeMap<_, _> = lookup
3542 .map
3543 .iter()
3544 .map(|(name, value)| (value, (name, "Data")))
3545 .collect();
3546
3547 let names = crate::PropertyNamesLong::<T>::new();
3548 let consts = consts.into_iter().map(|value| {
3549 (
3550 u16::from(*value) as usize,
3551 (
3552 names.get(*value).unwrap_or("<unknown>").to_string(),
3553 "Consts",
3554 ),
3555 )
3556 });
3557
3558 let mut diff = Vec::new();
3559 for t @ (value, _) in consts {
3560 if data.remove(&value).is_none() {
3561 diff.push(t);
3562 }
3563 }
3564 diff.extend(data);
3565
3566 let mut fmt_diff = String::new();
3567 for (value, (name, source)) in diff {
3568 fmt_diff.push_str(&format!("{source}:\t{name} = {value:?}\n"));
3569 }
3570
3571 assert!(
3572 fmt_diff.is_empty(),
3573 "Values defined in data do not match values defined in consts. Difference:\n{fmt_diff}"
3574 );
3575 }
3576
3577 #[test]
3578 fn test_ea() {
3579 check_enum(
3580 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_EAST_ASIAN_WIDTH_V1,
3581 EastAsianWidth::ALL_VALUES,
3582 );
3583 }
3584
3585 #[test]
3586 fn test_ccc() {
3587 check_enum(
3588 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_CANONICAL_COMBINING_CLASS_V1,
3589 CanonicalCombiningClass::ALL_VALUES,
3590 );
3591 }
3592
3593 #[test]
3594 fn test_jt() {
3595 check_enum(
3596 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_JOINING_TYPE_V1,
3597 JoiningType::ALL_VALUES,
3598 );
3599 }
3600
3601 #[test]
3602 fn test_insc() {
3603 check_enum(
3604 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_INDIC_SYLLABIC_CATEGORY_V1,
3605 IndicSyllabicCategory::ALL_VALUES,
3606 );
3607 }
3608
3609 #[test]
3610 fn test_sb() {
3611 check_enum(
3612 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_SENTENCE_BREAK_V1,
3613 SentenceBreak::ALL_VALUES,
3614 );
3615 }
3616
3617 #[test]
3618 fn test_wb() {
3619 check_enum(
3620 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_WORD_BREAK_V1,
3621 WordBreak::ALL_VALUES,
3622 );
3623 }
3624
3625 #[test]
3626 fn test_bc() {
3627 check_enum(
3628 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_BIDI_CLASS_V1,
3629 BidiClass::ALL_VALUES,
3630 );
3631 }
3632
3633 #[test]
3634 fn test_nt() {
3635 check_enum(
3636 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_NUMERIC_TYPE_V1,
3637 NumericType::ALL_VALUES,
3638 );
3639 }
3640
3641 #[test]
3642 fn test_hst() {
3643 check_enum(
3644 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_HANGUL_SYLLABLE_TYPE_V1,
3645 HangulSyllableType::ALL_VALUES,
3646 );
3647 }
3648
3649 #[test]
3650 fn test_vo() {
3651 check_enum(
3652 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_VERTICAL_ORIENTATION_V1,
3653 VerticalOrientation::ALL_VALUES,
3654 );
3655 }
3656}