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 ) => {
42 $( #[$meta] )*
43 impl $enum_ty {
44 $(
45 $(#[$const_meta])*
46 $v const $i: $t = $e;
47 )*
48
49 pub const ALL_VALUES: &'static [$enum_ty] = &[
52 $($enum_ty::$i),*
53 ];
54 }
55
56 #[cfg(feature = "datagen")]
57 impl databake::Bake for $enum_ty {
58 fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
59 env.insert("icu_properties");
60 match *self {
61 $(
62 Self::$i => databake::quote!(icu_properties::props::$enum_ty::$i),
63 )*
64 Self(v) => databake::quote!(icu_properties::props::$enum_ty::from_icu4c_value(#v)),
65 }
66 }
67 }
68
69
70 impl From<$enum_ty> for u16 {
71 fn from(other: $enum_ty) -> Self {
72 other.0 as u16
73 }
74 }
75 }
76}
77
78pub use crate::code_point_map::EnumeratedProperty;
79
80macro_rules! make_enumerated_property {
81 (
82 name: $name:literal;
83 short_name: $short_name:literal;
84 ident: $value_ty:path;
85 data_marker: $data_marker:ty;
86 singleton: $singleton:ident;
87 $(ule_ty: $ule_ty:ty;)?
88 ) => {
89 impl crate::private::Sealed for $value_ty {}
90
91 impl EnumeratedProperty for $value_ty {
92 type DataMarker = $data_marker;
93 #[cfg(feature = "compiled_data")]
94 const SINGLETON: &'static crate::provider::PropertyCodePointMap<'static, Self> =
95 crate::provider::Baked::$singleton;
96 const NAME: &'static [u8] = $name.as_bytes();
97 const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
98 }
99
100 $(
101 impl zerovec::ule::AsULE for $value_ty {
102 type ULE = $ule_ty;
103
104 fn to_unaligned(self) -> Self::ULE {
105 self.0.to_unaligned()
106 }
107 fn from_unaligned(unaligned: Self::ULE) -> Self {
108 Self(zerovec::ule::AsULE::from_unaligned(unaligned))
109 }
110 }
111 )?
112 };
113}
114
115#[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_receiver_is_total_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)]
136#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
137#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
139pub struct BidiClass(pub(crate) u8);
140
141impl BidiClass {
142 pub const fn to_icu4c_value(self) -> u8 {
144 self.0
145 }
146 pub const fn from_icu4c_value(value: u8) -> Self {
148 Self(value)
149 }
150}
151
152#[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 {
fn from(other: BidiClass) -> Self { other.0 as u16 }
}create_const_array! {
153#[allow(non_upper_case_globals)]
154impl BidiClass {
155 pub const LeftToRight: BidiClass = BidiClass(0);
157 pub const RightToLeft: BidiClass = BidiClass(1);
159 pub const EuropeanNumber: BidiClass = BidiClass(2);
161 pub const EuropeanSeparator: BidiClass = BidiClass(3);
163 pub const EuropeanTerminator: BidiClass = BidiClass(4);
165 pub const ArabicNumber: BidiClass = BidiClass(5);
167 pub const CommonSeparator: BidiClass = BidiClass(6);
169 pub const ParagraphSeparator: BidiClass = BidiClass(7);
171 pub const SegmentSeparator: BidiClass = BidiClass(8);
173 pub const WhiteSpace: BidiClass = BidiClass(9);
175 pub const OtherNeutral: BidiClass = BidiClass(10);
177 pub const LeftToRightEmbedding: BidiClass = BidiClass(11);
179 pub const LeftToRightOverride: BidiClass = BidiClass(12);
181 pub const ArabicLetter: BidiClass = BidiClass(13);
183 pub const RightToLeftEmbedding: BidiClass = BidiClass(14);
185 pub const RightToLeftOverride: BidiClass = BidiClass(15);
187 pub const PopDirectionalFormat: BidiClass = BidiClass(16);
189 pub const NonspacingMark: BidiClass = BidiClass(17);
191 pub const BoundaryNeutral: BidiClass = BidiClass(18);
193 pub const FirstStrongIsolate: BidiClass = BidiClass(19);
195 pub const LeftToRightIsolate: BidiClass = BidiClass(20);
197 pub const RightToLeftIsolate: BidiClass = BidiClass(21);
199 pub const PopDirectionalIsolate: BidiClass = BidiClass(22);
201}
202}
203
204impl 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! {
205 name: "Bidi_Class";
206 short_name: "bc";
207 ident: BidiClass;
208 data_marker: crate::provider::PropertyEnumBidiClassV1;
209 singleton: SINGLETON_PROPERTY_ENUM_BIDI_CLASS_V1;
210 ule_ty: u8;
211}
212
213pub(crate) mod gc {
215 #[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_receiver_is_total_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)]
240 #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
241 #[cfg_attr(feature = "datagen", derive(databake::Bake))]
242 #[cfg_attr(feature = "datagen", databake(path = icu_properties::props))]
243 #[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 {
unsafe { Some(::core::mem::transmute(value)) }
} else { None }
}
}#[zerovec::make_ule(GeneralCategoryULE)]
245 #[cfg_attr(not(feature = "alloc"), zerovec::skip_derive(ZeroMapKV))]
246 #[repr(u8)]
247 pub enum GeneralCategory {
248 Unassigned = 0,
250
251 UppercaseLetter = 1,
253 LowercaseLetter = 2,
255 TitlecaseLetter = 3,
257 ModifierLetter = 4,
259 OtherLetter = 5,
261
262 NonspacingMark = 6,
264 SpacingMark = 8,
266 EnclosingMark = 7,
268
269 DecimalNumber = 9,
271 LetterNumber = 10,
273 OtherNumber = 11,
275
276 SpaceSeparator = 12,
278 LineSeparator = 13,
280 ParagraphSeparator = 14,
282
283 Control = 15,
285 Format = 16,
287 PrivateUse = 17,
289 Surrogate = 18,
291
292 DashPunctuation = 19,
294 OpenPunctuation = 20,
296 ClosePunctuation = 21,
298 ConnectorPunctuation = 22,
300 InitialPunctuation = 28,
302 FinalPunctuation = 29,
304 OtherPunctuation = 23,
306
307 MathSymbol = 24,
309 CurrencySymbol = 25,
311 ModifierSymbol = 26,
313 OtherSymbol = 27,
315 }
316}
317
318pub use gc::GeneralCategory;
319
320impl GeneralCategory {
321 pub const ALL_VALUES: &'static [GeneralCategory] = &[
323 GeneralCategory::Unassigned,
324 GeneralCategory::UppercaseLetter,
325 GeneralCategory::LowercaseLetter,
326 GeneralCategory::TitlecaseLetter,
327 GeneralCategory::ModifierLetter,
328 GeneralCategory::OtherLetter,
329 GeneralCategory::NonspacingMark,
330 GeneralCategory::SpacingMark,
331 GeneralCategory::EnclosingMark,
332 GeneralCategory::DecimalNumber,
333 GeneralCategory::LetterNumber,
334 GeneralCategory::OtherNumber,
335 GeneralCategory::SpaceSeparator,
336 GeneralCategory::LineSeparator,
337 GeneralCategory::ParagraphSeparator,
338 GeneralCategory::Control,
339 GeneralCategory::Format,
340 GeneralCategory::PrivateUse,
341 GeneralCategory::Surrogate,
342 GeneralCategory::DashPunctuation,
343 GeneralCategory::OpenPunctuation,
344 GeneralCategory::ClosePunctuation,
345 GeneralCategory::ConnectorPunctuation,
346 GeneralCategory::InitialPunctuation,
347 GeneralCategory::FinalPunctuation,
348 GeneralCategory::OtherPunctuation,
349 GeneralCategory::MathSymbol,
350 GeneralCategory::CurrencySymbol,
351 GeneralCategory::ModifierSymbol,
352 GeneralCategory::OtherSymbol,
353 ];
354}
355
356#[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_receiver_is_total_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)]
357#[non_exhaustive]
359pub struct GeneralCategoryOutOfBoundsError;
360
361impl TryFrom<u8> for GeneralCategory {
362 type Error = GeneralCategoryOutOfBoundsError;
363 fn try_from(val: u8) -> Result<Self, GeneralCategoryOutOfBoundsError> {
366 GeneralCategory::new_from_u8(val).ok_or(GeneralCategoryOutOfBoundsError)
367 }
368}
369
370impl 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! {
371 name: "General_Category";
372 short_name: "gc";
373 ident: GeneralCategory;
374 data_marker: crate::provider::PropertyEnumGeneralCategoryV1;
375 singleton: SINGLETON_PROPERTY_ENUM_GENERAL_CATEGORY_V1;
376}
377
378#[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_receiver_is_total_eq(&self) -> () {
let _: ::core::cmp::AssertParamIsEq<u32>;
}
}Eq)]
394#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
396pub struct GeneralCategoryGroup(pub(crate) u32);
397
398impl crate::private::Sealed for GeneralCategoryGroup {}
399
400use GeneralCategory as GC;
401use GeneralCategoryGroup as GCG;
402
403#[allow(non_upper_case_globals)]
404impl GeneralCategoryGroup {
405 pub const UppercaseLetter: GeneralCategoryGroup = GCG(1 << (GC::UppercaseLetter as u32));
407 pub const LowercaseLetter: GeneralCategoryGroup = GCG(1 << (GC::LowercaseLetter as u32));
409 pub const TitlecaseLetter: GeneralCategoryGroup = GCG(1 << (GC::TitlecaseLetter as u32));
411 pub const ModifierLetter: GeneralCategoryGroup = GCG(1 << (GC::ModifierLetter as u32));
413 pub const OtherLetter: GeneralCategoryGroup = GCG(1 << (GC::OtherLetter as u32));
415 pub const CasedLetter: GeneralCategoryGroup = GCG((1 << (GC::UppercaseLetter as u32))
417 | (1 << (GC::LowercaseLetter as u32))
418 | (1 << (GC::TitlecaseLetter as u32)));
419 pub const Letter: GeneralCategoryGroup = GCG((1 << (GC::UppercaseLetter as u32))
421 | (1 << (GC::LowercaseLetter as u32))
422 | (1 << (GC::TitlecaseLetter as u32))
423 | (1 << (GC::ModifierLetter as u32))
424 | (1 << (GC::OtherLetter as u32)));
425
426 pub const NonspacingMark: GeneralCategoryGroup = GCG(1 << (GC::NonspacingMark as u32));
428 pub const EnclosingMark: GeneralCategoryGroup = GCG(1 << (GC::EnclosingMark as u32));
430 pub const SpacingMark: GeneralCategoryGroup = GCG(1 << (GC::SpacingMark as u32));
432 pub const Mark: GeneralCategoryGroup = GCG((1 << (GC::NonspacingMark as u32))
434 | (1 << (GC::EnclosingMark as u32))
435 | (1 << (GC::SpacingMark as u32)));
436
437 pub const DecimalNumber: GeneralCategoryGroup = GCG(1 << (GC::DecimalNumber as u32));
439 pub const LetterNumber: GeneralCategoryGroup = GCG(1 << (GC::LetterNumber as u32));
441 pub const OtherNumber: GeneralCategoryGroup = GCG(1 << (GC::OtherNumber as u32));
443 pub const Number: GeneralCategoryGroup = GCG((1 << (GC::DecimalNumber as u32))
445 | (1 << (GC::LetterNumber as u32))
446 | (1 << (GC::OtherNumber as u32)));
447
448 pub const SpaceSeparator: GeneralCategoryGroup = GCG(1 << (GC::SpaceSeparator as u32));
450 pub const LineSeparator: GeneralCategoryGroup = GCG(1 << (GC::LineSeparator as u32));
452 pub const ParagraphSeparator: GeneralCategoryGroup = GCG(1 << (GC::ParagraphSeparator as u32));
454 pub const Separator: GeneralCategoryGroup = GCG((1 << (GC::SpaceSeparator as u32))
456 | (1 << (GC::LineSeparator as u32))
457 | (1 << (GC::ParagraphSeparator as u32)));
458
459 pub const Control: GeneralCategoryGroup = GCG(1 << (GC::Control as u32));
461 pub const Format: GeneralCategoryGroup = GCG(1 << (GC::Format as u32));
463 pub const PrivateUse: GeneralCategoryGroup = GCG(1 << (GC::PrivateUse as u32));
465 pub const Surrogate: GeneralCategoryGroup = GCG(1 << (GC::Surrogate as u32));
467 pub const Unassigned: GeneralCategoryGroup = GCG(1 << (GC::Unassigned as u32));
469 pub const Other: GeneralCategoryGroup = GCG((1 << (GC::Control as u32))
471 | (1 << (GC::Format as u32))
472 | (1 << (GC::PrivateUse as u32))
473 | (1 << (GC::Surrogate as u32))
474 | (1 << (GC::Unassigned as u32)));
475
476 pub const DashPunctuation: GeneralCategoryGroup = GCG(1 << (GC::DashPunctuation as u32));
478 pub const OpenPunctuation: GeneralCategoryGroup = GCG(1 << (GC::OpenPunctuation as u32));
480 pub const ClosePunctuation: GeneralCategoryGroup = GCG(1 << (GC::ClosePunctuation as u32));
482 pub const ConnectorPunctuation: GeneralCategoryGroup =
484 GCG(1 << (GC::ConnectorPunctuation as u32));
485 pub const InitialPunctuation: GeneralCategoryGroup = GCG(1 << (GC::InitialPunctuation as u32));
487 pub const FinalPunctuation: GeneralCategoryGroup = GCG(1 << (GC::FinalPunctuation as u32));
489 pub const OtherPunctuation: GeneralCategoryGroup = GCG(1 << (GC::OtherPunctuation as u32));
491 pub const Punctuation: GeneralCategoryGroup = GCG((1 << (GC::DashPunctuation as u32))
493 | (1 << (GC::OpenPunctuation as u32))
494 | (1 << (GC::ClosePunctuation as u32))
495 | (1 << (GC::ConnectorPunctuation as u32))
496 | (1 << (GC::OtherPunctuation as u32))
497 | (1 << (GC::InitialPunctuation as u32))
498 | (1 << (GC::FinalPunctuation as u32)));
499
500 pub const MathSymbol: GeneralCategoryGroup = GCG(1 << (GC::MathSymbol as u32));
502 pub const CurrencySymbol: GeneralCategoryGroup = GCG(1 << (GC::CurrencySymbol as u32));
504 pub const ModifierSymbol: GeneralCategoryGroup = GCG(1 << (GC::ModifierSymbol as u32));
506 pub const OtherSymbol: GeneralCategoryGroup = GCG(1 << (GC::OtherSymbol as u32));
508 pub const Symbol: GeneralCategoryGroup = GCG((1 << (GC::MathSymbol as u32))
510 | (1 << (GC::CurrencySymbol as u32))
511 | (1 << (GC::ModifierSymbol as u32))
512 | (1 << (GC::OtherSymbol as u32)));
513
514 const ALL: u32 = (1 << (GC::FinalPunctuation as u32 + 1)) - 1;
515
516 pub const fn contains(self, val: GeneralCategory) -> bool {
560 0 != (1 << (val as u32)) & self.0
561 }
562
563 pub const fn complement(self) -> Self {
581 GeneralCategoryGroup(!self.0 & Self::ALL)
584 }
585
586 pub const fn all() -> Self {
600 Self(Self::ALL)
601 }
602
603 pub const fn empty() -> Self {
617 Self(0)
618 }
619
620 pub const fn union(self, other: Self) -> Self {
636 Self(self.0 | other.0)
637 }
638
639 pub const fn intersection(self, other: Self) -> Self {
656 Self(self.0 & other.0)
657 }
658}
659
660impl From<GeneralCategory> for GeneralCategoryGroup {
661 fn from(subcategory: GeneralCategory) -> Self {
662 GeneralCategoryGroup(1 << (subcategory as u32))
663 }
664}
665impl From<u32> for GeneralCategoryGroup {
666 fn from(mask: u32) -> Self {
667 GeneralCategoryGroup(mask & Self::ALL)
670 }
671}
672impl From<GeneralCategoryGroup> for u32 {
673 fn from(group: GeneralCategoryGroup) -> Self {
674 group.0
675 }
676}
677
678#[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_receiver_is_total_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)]
701#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
702#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
704pub struct Script(pub(crate) u16);
705
706impl Script {
707 pub const fn to_icu4c_value(self) -> u16 {
709 self.0
710 }
711 pub const fn from_icu4c_value(value: u16) -> Self {
713 Self(value)
714 }
715}
716
717#[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 Chisoi: Script = Script(209);
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 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 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 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 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(210);
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 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(211);
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 TolongSiki: Script = Script(212);
pub const Toto: Script = Script(196);
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::Chisoi, 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::Georgian,
Script::Glagolitic, Script::Gothic, Script::Grantha,
Script::Greek, Script::Gujarati, Script::GunjalaGondi,
Script::Gurmukhi, 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::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::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::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::TolongSiki, Script::Toto, Script::Ugaritic,
Script::Unknown, Script::Vai, Script::Vithkuqi,
Script::Wancho, Script::WarangCiti, Script::Yezidi,
Script::Yi, Script::ZanabazarSquare];
}
impl From<Script> for u16 {
fn from(other: Script) -> Self { other.0 as u16 }
}create_const_array! {
718#[allow(missing_docs)] #[allow(non_upper_case_globals)]
720impl Script {
721 pub const Adlam: Script = Script(167);
722 pub const Ahom: Script = Script(161);
723 pub const AnatolianHieroglyphs: Script = Script(156);
724 pub const Arabic: Script = Script(2);
725 pub const Armenian: Script = Script(3);
726 pub const Avestan: Script = Script(117);
727 pub const Balinese: Script = Script(62);
728 pub const Bamum: Script = Script(130);
729 pub const BassaVah: Script = Script(134);
730 pub const Batak: Script = Script(63);
731 pub const Bengali: Script = Script(4);
732 pub const BeriaErfe: Script = Script(208);
733 pub const Bhaiksuki: Script = Script(168);
734 pub const Bopomofo: Script = Script(5);
735 pub const Brahmi: Script = Script(65);
736 pub const Braille: Script = Script(46);
737 pub const Buginese: Script = Script(55);
738 pub const Buhid: Script = Script(44);
739 pub const CanadianAboriginal: Script = Script(40);
740 pub const Carian: Script = Script(104);
741 pub const CaucasianAlbanian: Script = Script(159);
742 pub const Chakma: Script = Script(118);
743 pub const Cham: Script = Script(66);
744 pub const Cherokee: Script = Script(6);
745 pub const Chisoi: Script = Script(209);
746 pub const Chorasmian: Script = Script(189);
747 pub const Common: Script = Script(0);
748 pub const Coptic: Script = Script(7);
749 pub const Cuneiform: Script = Script(101);
750 pub const Cypriot: Script = Script(47);
751 pub const CyproMinoan: Script = Script(193);
752 pub const Cyrillic: Script = Script(8);
753 pub const Deseret: Script = Script(9);
754 pub const Devanagari: Script = Script(10);
755 pub const DivesAkuru: Script = Script(190);
756 pub const Dogra: Script = Script(178);
757 pub const Duployan: Script = Script(135);
758 pub const EgyptianHieroglyphs: Script = Script(71);
759 pub const Elbasan: Script = Script(136);
760 pub const Elymaic: Script = Script(185);
761 pub const Ethiopian: Script = Script(11);
762 pub const Georgian: Script = Script(12);
763 pub const Glagolitic: Script = Script(56);
764 pub const Gothic: Script = Script(13);
765 pub const Grantha: Script = Script(137);
766 pub const Greek: Script = Script(14);
767 pub const Gujarati: Script = Script(15);
768 pub const GunjalaGondi: Script = Script(179);
769 pub const Gurmukhi: Script = Script(16);
770 pub const Han: Script = Script(17);
771 pub const Hangul: Script = Script(18);
772 pub const HanifiRohingya: Script = Script(182);
773 pub const Hanunoo: Script = Script(43);
774 pub const Hatran: Script = Script(162);
775 pub const Hebrew: Script = Script(19);
776 pub const Hiragana: Script = Script(20);
777 pub const ImperialAramaic: Script = Script(116);
778 pub const Inherited: Script = Script(1);
779 pub const InscriptionalPahlavi: Script = Script(122);
780 pub const InscriptionalParthian: Script = Script(125);
781 pub const Javanese: Script = Script(78);
782 pub const Kaithi: Script = Script(120);
783 pub const Kannada: Script = Script(21);
784 pub const Katakana: Script = Script(22);
785 pub const Kawi: Script = Script(198);
786 pub const KayahLi: Script = Script(79);
787 pub const Kharoshthi: Script = Script(57);
788 pub const KhitanSmallScript: Script = Script(191);
789 pub const Khmer: Script = Script(23);
790 pub const Khojki: Script = Script(157);
791 pub const Khudawadi: Script = Script(145);
792 pub const Lao: Script = Script(24);
793 pub const Latin: Script = Script(25);
794 pub const Lepcha: Script = Script(82);
795 pub const Limbu: Script = Script(48);
796 pub const LinearA: Script = Script(83);
797 pub const LinearB: Script = Script(49);
798 pub const Lisu: Script = Script(131);
799 pub const Lycian: Script = Script(107);
800 pub const Lydian: Script = Script(108);
801 pub const Mahajani: Script = Script(160);
802 pub const Makasar: Script = Script(180);
803 pub const Malayalam: Script = Script(26);
804 pub const Mandaic: Script = Script(84);
805 pub const Manichaean: Script = Script(121);
806 pub const Marchen: Script = Script(169);
807 pub const MasaramGondi: Script = Script(175);
808 pub const Medefaidrin: Script = Script(181);
809 pub const MeeteiMayek: Script = Script(115);
810 pub const MendeKikakui: Script = Script(140);
811 pub const MeroiticCursive: Script = Script(141);
812 pub const MeroiticHieroglyphs: Script = Script(86);
813 pub const Miao: Script = Script(92);
814 pub const Modi: Script = Script(163);
815 pub const Mongolian: Script = Script(27);
816 pub const Mro: Script = Script(149);
817 pub const Multani: Script = Script(164);
818 pub const Myanmar: Script = Script(28);
819 pub const Nabataean: Script = Script(143);
820 pub const NagMundari: Script = Script(199);
821 pub const Nandinagari: Script = Script(187);
822 pub const Nastaliq: Script = Script(200);
823 pub const Newa: Script = Script(170);
824 pub const NewTaiLue: Script = Script(59);
825 pub const Nko: Script = Script(87);
826 pub const Nushu: Script = Script(150);
827 pub const NyiakengPuachueHmong: Script = Script(186);
828 pub const Ogham: Script = Script(29);
829 pub const OlChiki: Script = Script(109);
830 pub const OldHungarian: Script = Script(76);
831 pub const OldItalic: Script = Script(30);
832 pub const OldNorthArabian: Script = Script(142);
833 pub const OldPermic: Script = Script(89);
834 pub const OldPersian: Script = Script(61);
835 pub const OldSogdian: Script = Script(184);
836 pub const OldSouthArabian: Script = Script(133);
837 pub const OldTurkic: Script = Script(88);
838 pub const OldUyghur: Script = Script(194);
839 pub const Oriya: Script = Script(31);
840 pub const Osage: Script = Script(171);
841 pub const Osmanya: Script = Script(50);
842 pub const PahawhHmong: Script = Script(75);
843 pub const Palmyrene: Script = Script(144);
844 pub const PauCinHau: Script = Script(165);
845 pub const PhagsPa: Script = Script(90);
846 pub const Phoenician: Script = Script(91);
847 pub const PsalterPahlavi: Script = Script(123);
848 pub const Rejang: Script = Script(110);
849 pub const Runic: Script = Script(32);
850 pub const Samaritan: Script = Script(126);
851 pub const Saurashtra: Script = Script(111);
852 pub const Sharada: Script = Script(151);
853 pub const Shavian: Script = Script(51);
854 pub const Siddham: Script = Script(166);
855 pub const Sidetic: Script = Script(210);
856 pub const SignWriting: Script = Script(112);
857 pub const Sinhala: Script = Script(33);
858 pub const Sogdian: Script = Script(183);
859 pub const SoraSompeng: Script = Script(152);
860 pub const Soyombo: Script = Script(176);
861 pub const Sundanese: Script = Script(113);
862 pub const SylotiNagri: Script = Script(58);
863 pub const Syriac: Script = Script(34);
864 pub const Tagalog: Script = Script(42);
865 pub const Tagbanwa: Script = Script(45);
866 pub const TaiLe: Script = Script(52);
867 pub const TaiTham: Script = Script(106);
868 pub const TaiViet: Script = Script(127);
869 pub const TaiYo: Script = Script(211);
870 pub const Takri: Script = Script(153);
871 pub const Tamil: Script = Script(35);
872 pub const Tangsa: Script = Script(195);
873 pub const Tangut: Script = Script(154);
874 pub const Telugu: Script = Script(36);
875 pub const Thaana: Script = Script(37);
876 pub const Thai: Script = Script(38);
877 pub const Tibetan: Script = Script(39);
878 pub const Tifinagh: Script = Script(60);
879 pub const Tirhuta: Script = Script(158);
880 pub const TolongSiki: Script = Script(212);
881 pub const Toto: Script = Script(196);
882 pub const Ugaritic: Script = Script(53);
883 pub const Unknown: Script = Script(103);
884 pub const Vai: Script = Script(99);
885 pub const Vithkuqi: Script = Script(197);
886 pub const Wancho: Script = Script(188);
887 pub const WarangCiti: Script = Script(146);
888 pub const Yezidi: Script = Script(192);
889 pub const Yi: Script = Script(41);
890 pub const ZanabazarSquare: Script = Script(177);
891}
892}
893
894impl 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! {
895 name: "Script";
896 short_name: "sc";
897 ident: Script;
898 data_marker: crate::provider::PropertyEnumScriptV1;
899 singleton: SINGLETON_PROPERTY_ENUM_SCRIPT_V1;
900 ule_ty: <u16 as zerovec::ule::AsULE>::ULE;
901}
902
903#[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_receiver_is_total_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)]
925#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
926#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
928pub struct HangulSyllableType(pub(crate) u8);
929
930impl HangulSyllableType {
931 pub const fn to_icu4c_value(self) -> u8 {
933 self.0
934 }
935 pub const fn from_icu4c_value(value: u8) -> Self {
937 Self(value)
938 }
939}
940
941#[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 {
fn from(other: HangulSyllableType) -> Self { other.0 as u16 }
}create_const_array! {
942#[allow(non_upper_case_globals)]
943impl HangulSyllableType {
944 pub const NotApplicable: HangulSyllableType = HangulSyllableType(0);
946 pub const LeadingJamo: HangulSyllableType = HangulSyllableType(1);
948 pub const VowelJamo: HangulSyllableType = HangulSyllableType(2);
950 pub const TrailingJamo: HangulSyllableType = HangulSyllableType(3);
952 pub const LeadingVowelSyllable: HangulSyllableType = HangulSyllableType(4);
954 pub const LeadingVowelTrailingSyllable: HangulSyllableType = HangulSyllableType(5);
956}
957}
958
959impl 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! {
960 name: "Hangul_Syllable_Type";
961 short_name: "hst";
962 ident: HangulSyllableType;
963 data_marker: crate::provider::PropertyEnumHangulSyllableTypeV1;
964 singleton: SINGLETON_PROPERTY_ENUM_HANGUL_SYLLABLE_TYPE_V1;
965 ule_ty: u8;
966
967}
968
969#[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_receiver_is_total_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)]
989#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
990#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
992pub struct EastAsianWidth(pub(crate) u8);
993
994impl EastAsianWidth {
995 pub const fn to_icu4c_value(self) -> u8 {
997 self.0
998 }
999 pub const fn from_icu4c_value(value: u8) -> Self {
1001 Self(value)
1002 }
1003}
1004
1005#[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 {
fn from(other: EastAsianWidth) -> Self { other.0 as u16 }
}create_const_array! {
1006#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1008impl EastAsianWidth {
1009 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); }
1016}
1017
1018impl 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! {
1019 name: "East_Asian_Width";
1020 short_name: "ea";
1021 ident: EastAsianWidth;
1022 data_marker: crate::provider::PropertyEnumEastAsianWidthV1;
1023 singleton: SINGLETON_PROPERTY_ENUM_EAST_ASIAN_WIDTH_V1;
1024 ule_ty: u8;
1025}
1026
1027#[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_receiver_is_total_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)]
1051#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1052#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1054pub struct LineBreak(pub(crate) u8);
1055
1056impl LineBreak {
1057 pub const fn to_icu4c_value(self) -> u8 {
1059 self.0
1060 }
1061 pub const fn from_icu4c_value(value: u8) -> Self {
1063 Self(value)
1064 }
1065}
1066
1067#[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 {
fn from(other: LineBreak) -> Self { other.0 as u16 }
}create_const_array! {
1068#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1070impl LineBreak {
1071 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); }
1125}
1126
1127impl 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! {
1128 name: "Line_Break";
1129 short_name: "lb";
1130 ident: LineBreak;
1131 data_marker: crate::provider::PropertyEnumLineBreakV1;
1132 singleton: SINGLETON_PROPERTY_ENUM_LINE_BREAK_V1;
1133 ule_ty: u8;
1134}
1135
1136#[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_receiver_is_total_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)]
1159#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1160#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1162pub struct GraphemeClusterBreak(pub(crate) u8);
1163
1164impl GraphemeClusterBreak {
1165 pub const fn to_icu4c_value(self) -> u8 {
1167 self.0
1168 }
1169 pub const fn from_icu4c_value(value: u8) -> Self {
1171 Self(value)
1172 }
1173}
1174
1175#[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 {
fn from(other: GraphemeClusterBreak) -> Self { other.0 as u16 }
}create_const_array! {
1176#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1178impl GraphemeClusterBreak {
1179 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); }
1202}
1203
1204impl 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! {
1205 name: "Grapheme_Cluster_Break";
1206 short_name: "GCB";
1207 ident: GraphemeClusterBreak;
1208 data_marker: crate::provider::PropertyEnumGraphemeClusterBreakV1;
1209 singleton: SINGLETON_PROPERTY_ENUM_GRAPHEME_CLUSTER_BREAK_V1;
1210 ule_ty: u8;
1211}
1212
1213#[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_receiver_is_total_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)]
1236#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1237#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1239pub struct WordBreak(pub(crate) u8);
1240
1241impl WordBreak {
1242 pub const fn to_icu4c_value(self) -> u8 {
1244 self.0
1245 }
1246 pub const fn from_icu4c_value(value: u8) -> Self {
1248 Self(value)
1249 }
1250}
1251
1252#[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 {
fn from(other: WordBreak) -> Self { other.0 as u16 }
}create_const_array! {
1253#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1255impl WordBreak {
1256 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); }
1284}
1285
1286impl 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! {
1287 name: "Word_Break";
1288 short_name: "WB";
1289 ident: WordBreak;
1290 data_marker: crate::provider::PropertyEnumWordBreakV1;
1291 singleton: SINGLETON_PROPERTY_ENUM_WORD_BREAK_V1;
1292 ule_ty: u8;
1293}
1294
1295#[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_receiver_is_total_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)]
1318#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1319#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1321pub struct SentenceBreak(pub(crate) u8);
1322
1323impl SentenceBreak {
1324 pub const fn to_icu4c_value(self) -> u8 {
1326 self.0
1327 }
1328 pub const fn from_icu4c_value(value: u8) -> Self {
1330 Self(value)
1331 }
1332}
1333
1334#[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 {
fn from(other: SentenceBreak) -> Self { other.0 as u16 }
}create_const_array! {
1335#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1337impl SentenceBreak {
1338 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); }
1354}
1355
1356impl 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! {
1357 name: "Sentence_Break";
1358 short_name: "SB";
1359 ident: SentenceBreak;
1360 data_marker: crate::provider::PropertyEnumSentenceBreakV1;
1361 singleton: SINGLETON_PROPERTY_ENUM_SENTENCE_BREAK_V1;
1362 ule_ty: u8;
1363}
1364
1365#[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_receiver_is_total_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)]
1395#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1396#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1398pub struct CanonicalCombiningClass(pub(crate) u8);
1399
1400impl CanonicalCombiningClass {
1401 pub const fn to_icu4c_value(self) -> u8 {
1403 self.0
1404 }
1405 pub const fn from_icu4c_value(value: u8) -> Self {
1407 Self(value)
1408 }
1409}
1410
1411#[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 {
fn from(other: CanonicalCombiningClass) -> Self { other.0 as u16 }
}create_const_array! {
1412#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1415impl CanonicalCombiningClass {
1416 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); }
1475}
1476
1477impl 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! {
1478 name: "Canonical_Combining_Class";
1479 short_name: "ccc";
1480 ident: CanonicalCombiningClass;
1481 data_marker: crate::provider::PropertyEnumCanonicalCombiningClassV1;
1482 singleton: SINGLETON_PROPERTY_ENUM_CANONICAL_COMBINING_CLASS_V1;
1483 ule_ty: u8;
1484}
1485
1486#[doc(hidden)] #[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_receiver_is_total_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)]
1514#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1515#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1517pub struct IndicConjunctBreak(pub(crate) u8);
1518
1519impl IndicConjunctBreak {
1520 pub const fn to_icu4c_value(self) -> u8 {
1522 self.0
1523 }
1524 pub const fn from_icu4c_value(value: u8) -> Self {
1526 Self(value)
1527 }
1528}
1529
1530#[doc(hidden)]
#[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 {
fn from(other: IndicConjunctBreak) -> Self { other.0 as u16 }
}create_const_array! {
1531#[doc(hidden)] #[allow(non_upper_case_globals)]
1533impl IndicConjunctBreak {
1534 pub const None: IndicConjunctBreak = IndicConjunctBreak(0);
1535 pub const Consonant: IndicConjunctBreak = IndicConjunctBreak(1);
1536 pub const Extend: IndicConjunctBreak = IndicConjunctBreak(2);
1537 pub const Linker: IndicConjunctBreak = IndicConjunctBreak(3);
1538}
1539}
1540
1541impl 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! {
1542 name: "Indic_Conjunct_Break";
1543 short_name: "InCB";
1544 ident: IndicConjunctBreak;
1545 data_marker: crate::provider::PropertyEnumIndicConjunctBreakV1;
1546 singleton: SINGLETON_PROPERTY_ENUM_INDIC_CONJUNCT_BREAK_V1;
1547 ule_ty: u8;
1548}
1549
1550#[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_receiver_is_total_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)]
1569#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1570#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1572pub struct IndicSyllabicCategory(pub(crate) u8);
1573
1574impl IndicSyllabicCategory {
1575 pub const fn to_icu4c_value(self) -> u8 {
1577 self.0
1578 }
1579 pub const fn from_icu4c_value(value: u8) -> Self {
1581 Self(value)
1582 }
1583}
1584
1585#[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 ConsonantSucceedingRepha: IndicSyllabicCategory =
IndicSyllabicCategory(15);
pub const ConsonantSubjoined: 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::ConsonantSucceedingRepha,
IndicSyllabicCategory::ConsonantSubjoined,
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 {
fn from(other: IndicSyllabicCategory) -> Self { other.0 as u16 }
}create_const_array! {
1586#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1588impl IndicSyllabicCategory {
1589 pub const Other: IndicSyllabicCategory = IndicSyllabicCategory(0);
1590 pub const Avagraha: IndicSyllabicCategory = IndicSyllabicCategory(1);
1591 pub const Bindu: IndicSyllabicCategory = IndicSyllabicCategory(2);
1592 pub const BrahmiJoiningNumber: IndicSyllabicCategory = IndicSyllabicCategory(3);
1593 pub const CantillationMark: IndicSyllabicCategory = IndicSyllabicCategory(4);
1594 pub const Consonant: IndicSyllabicCategory = IndicSyllabicCategory(5);
1595 pub const ConsonantDead: IndicSyllabicCategory = IndicSyllabicCategory(6);
1596 pub const ConsonantFinal: IndicSyllabicCategory = IndicSyllabicCategory(7);
1597 pub const ConsonantHeadLetter: IndicSyllabicCategory = IndicSyllabicCategory(8);
1598 pub const ConsonantInitialPostfixed: IndicSyllabicCategory = IndicSyllabicCategory(9);
1599 pub const ConsonantKiller: IndicSyllabicCategory = IndicSyllabicCategory(10);
1600 pub const ConsonantMedial: IndicSyllabicCategory = IndicSyllabicCategory(11);
1601 pub const ConsonantPlaceholder: IndicSyllabicCategory = IndicSyllabicCategory(12);
1602 pub const ConsonantPrecedingRepha: IndicSyllabicCategory = IndicSyllabicCategory(13);
1603 pub const ConsonantPrefixed: IndicSyllabicCategory = IndicSyllabicCategory(14);
1604 pub const ConsonantSucceedingRepha: IndicSyllabicCategory = IndicSyllabicCategory(15);
1605 pub const ConsonantSubjoined: IndicSyllabicCategory = IndicSyllabicCategory(16);
1606 pub const ConsonantWithStacker: IndicSyllabicCategory = IndicSyllabicCategory(17);
1607 pub const GeminationMark: IndicSyllabicCategory = IndicSyllabicCategory(18);
1608 pub const InvisibleStacker: IndicSyllabicCategory = IndicSyllabicCategory(19);
1609 pub const Joiner: IndicSyllabicCategory = IndicSyllabicCategory(20);
1610 pub const ModifyingLetter: IndicSyllabicCategory = IndicSyllabicCategory(21);
1611 pub const NonJoiner: IndicSyllabicCategory = IndicSyllabicCategory(22);
1612 pub const Nukta: IndicSyllabicCategory = IndicSyllabicCategory(23);
1613 pub const Number: IndicSyllabicCategory = IndicSyllabicCategory(24);
1614 pub const NumberJoiner: IndicSyllabicCategory = IndicSyllabicCategory(25);
1615 pub const PureKiller: IndicSyllabicCategory = IndicSyllabicCategory(26);
1616 pub const RegisterShifter: IndicSyllabicCategory = IndicSyllabicCategory(27);
1617 pub const SyllableModifier: IndicSyllabicCategory = IndicSyllabicCategory(28);
1618 pub const ToneLetter: IndicSyllabicCategory = IndicSyllabicCategory(29);
1619 pub const ToneMark: IndicSyllabicCategory = IndicSyllabicCategory(30);
1620 pub const Virama: IndicSyllabicCategory = IndicSyllabicCategory(31);
1621 pub const Visarga: IndicSyllabicCategory = IndicSyllabicCategory(32);
1622 pub const Vowel: IndicSyllabicCategory = IndicSyllabicCategory(33);
1623 pub const VowelDependent: IndicSyllabicCategory = IndicSyllabicCategory(34);
1624 pub const VowelIndependent: IndicSyllabicCategory = IndicSyllabicCategory(35);
1625 pub const ReorderingKiller: IndicSyllabicCategory = IndicSyllabicCategory(36);
1626}
1627}
1628
1629impl 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! {
1630 name: "Indic_Syllabic_Category";
1631 short_name: "InSC";
1632 ident: IndicSyllabicCategory;
1633 data_marker: crate::provider::PropertyEnumIndicSyllabicCategoryV1;
1634 singleton: SINGLETON_PROPERTY_ENUM_INDIC_SYLLABIC_CATEGORY_V1;
1635 ule_ty: u8;
1636}
1637
1638#[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_receiver_is_total_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)]
1658#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1659#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1661pub struct JoiningType(pub(crate) u8);
1662
1663impl JoiningType {
1664 pub const fn to_icu4c_value(self) -> u8 {
1666 self.0
1667 }
1668 pub const fn from_icu4c_value(value: u8) -> Self {
1670 Self(value)
1671 }
1672}
1673
1674#[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 {
fn from(other: JoiningType) -> Self { other.0 as u16 }
}create_const_array! {
1675#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1677impl JoiningType {
1678 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); }
1685}
1686
1687impl 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! {
1688 name: "Joining_Type";
1689 short_name: "jt";
1690 ident: JoiningType;
1691 data_marker: crate::provider::PropertyEnumJoiningTypeV1;
1692 singleton: SINGLETON_PROPERTY_ENUM_JOINING_TYPE_V1;
1693 ule_ty: u8;
1694}
1695
1696#[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_receiver_is_total_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)]
1724#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1725#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1727pub struct VerticalOrientation(pub(crate) u8);
1728
1729impl VerticalOrientation {
1730 pub const fn to_icu4c_value(self) -> u8 {
1732 self.0
1733 }
1734 pub const fn from_icu4c_value(value: u8) -> Self {
1736 Self(value)
1737 }
1738}
1739
1740#[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 {
fn from(other: VerticalOrientation) -> Self { other.0 as u16 }
}create_const_array! {
1741#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1743impl VerticalOrientation {
1744 pub const Rotated: VerticalOrientation = VerticalOrientation(0); pub const TransformedRotated: VerticalOrientation = VerticalOrientation(1); pub const TransformedUpright: VerticalOrientation = VerticalOrientation(2); pub const Upright: VerticalOrientation = VerticalOrientation(3); }
1749}
1750
1751impl 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! {
1752 name: "Vertical_Orientation";
1753 short_name: "vo";
1754 ident: VerticalOrientation;
1755 data_marker: crate::provider::PropertyEnumVerticalOrientationV1;
1756 singleton: SINGLETON_PROPERTY_ENUM_VERTICAL_ORIENTATION_V1;
1757 ule_ty: u8;
1758}
1759
1760pub use crate::code_point_set::BinaryProperty;
1761
1762macro_rules! make_binary_property {
1763 (
1764 name: $name:literal;
1765 short_name: $short_name:literal;
1766 ident: $ident:ident;
1767 data_marker: $data_marker:ty;
1768 singleton: $singleton:ident;
1769 $(#[$doc:meta])+
1770 ) => {
1771 $(#[$doc])+
1772 #[derive(Debug)]
1773 #[non_exhaustive]
1774 pub struct $ident;
1775
1776 impl crate::private::Sealed for $ident {}
1777
1778 impl BinaryProperty for $ident {
1779 type DataMarker = $data_marker;
1780 #[cfg(feature = "compiled_data")]
1781 const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
1782 &crate::provider::Baked::$singleton;
1783 const NAME: &'static [u8] = $name.as_bytes();
1784 const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
1785 }
1786 };
1787}
1788
1789#[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! {
1790 name: "ASCII_Hex_Digit";
1791 short_name: "AHex";
1792 ident: AsciiHexDigit;
1793 data_marker: crate::provider::PropertyBinaryAsciiHexDigitV1;
1794 singleton: SINGLETON_PROPERTY_BINARY_ASCII_HEX_DIGIT_V1;
1795 }
1811
1812#[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! {
1813 name: "Alnum";
1814 short_name: "Alnum";
1815 ident: Alnum;
1816 data_marker: crate::provider::PropertyBinaryAlnumV1;
1817 singleton: SINGLETON_PROPERTY_BINARY_ALNUM_V1;
1818 }
1822
1823#[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! {
1824 name: "Alphabetic";
1825 short_name: "Alpha";
1826 ident: Alphabetic;
1827 data_marker: crate::provider::PropertyBinaryAlphabeticV1;
1828 singleton: SINGLETON_PROPERTY_BINARY_ALPHABETIC_V1;
1829 }
1846
1847#[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! {
1848 name: "Bidi_Control";
1849 short_name: "Bidi_C";
1850 ident: BidiControl;
1851 data_marker: crate::provider::PropertyBinaryBidiControlV1;
1852 singleton: SINGLETON_PROPERTY_BINARY_BIDI_CONTROL_V1;
1853 }
1869
1870#[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! {
1871 name: "Bidi_Mirrored";
1872 short_name: "Bidi_M";
1873 ident: BidiMirrored;
1874 data_marker: crate::provider::PropertyBinaryBidiMirroredV1;
1875 singleton: SINGLETON_PROPERTY_BINARY_BIDI_MIRRORED_V1;
1876 }
1893
1894#[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! {
1895 name: "Blank";
1896 short_name: "Blank";
1897 ident: Blank;
1898 data_marker: crate::provider::PropertyBinaryBlankV1;
1899 singleton: SINGLETON_PROPERTY_BINARY_BLANK_V1;
1900 }
1903
1904#[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! {
1905 name: "Cased";
1906 short_name: "Cased";
1907 ident: Cased;
1908 data_marker: crate::provider::PropertyBinaryCasedV1;
1909 singleton: SINGLETON_PROPERTY_BINARY_CASED_V1;
1910 }
1925
1926#[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! {
1927 name: "Case_Ignorable";
1928 short_name: "CI";
1929 ident: CaseIgnorable;
1930 data_marker: crate::provider::PropertyBinaryCaseIgnorableV1;
1931 singleton: SINGLETON_PROPERTY_BINARY_CASE_IGNORABLE_V1;
1932 }
1947
1948#[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! {
1949 name: "Full_Composition_Exclusion";
1950 short_name: "Comp_Ex";
1951 ident: FullCompositionExclusion;
1952 data_marker: crate::provider::PropertyBinaryFullCompositionExclusionV1;
1953 singleton: SINGLETON_PROPERTY_BINARY_FULL_COMPOSITION_EXCLUSION_V1;
1954 }
1959
1960#[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! {
1961 name: "Changes_When_Casefolded";
1962 short_name: "CWCF";
1963 ident: ChangesWhenCasefolded;
1964 data_marker: crate::provider::PropertyBinaryChangesWhenCasefoldedV1;
1965 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEFOLDED_V1;
1966 }
1981
1982#[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! {
1983 name: "Changes_When_Casemapped";
1984 short_name: "CWCM";
1985 ident: ChangesWhenCasemapped;
1986 data_marker: crate::provider::PropertyBinaryChangesWhenCasemappedV1;
1987 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEMAPPED_V1;
1988 }
1991
1992#[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! {
1993 name: "Changes_When_NFKC_Casefolded";
1994 short_name: "CWKCF";
1995 ident: ChangesWhenNfkcCasefolded;
1996 data_marker: crate::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1;
1997 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_NFKC_CASEFOLDED_V1;
1998 }
2013
2014#[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! {
2015 name: "Changes_When_Lowercased";
2016 short_name: "CWL";
2017 ident: ChangesWhenLowercased;
2018 data_marker: crate::provider::PropertyBinaryChangesWhenLowercasedV1;
2019 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_LOWERCASED_V1;
2020 }
2035
2036#[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! {
2037 name: "Changes_When_Titlecased";
2038 short_name: "CWT";
2039 ident: ChangesWhenTitlecased;
2040 data_marker: crate::provider::PropertyBinaryChangesWhenTitlecasedV1;
2041 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_TITLECASED_V1;
2042 }
2057
2058#[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! {
2059 name: "Changes_When_Uppercased";
2060 short_name: "CWU";
2061 ident: ChangesWhenUppercased;
2062 data_marker: crate::provider::PropertyBinaryChangesWhenUppercasedV1;
2063 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_UPPERCASED_V1;
2064 }
2079
2080#[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! {
2081 name: "Dash";
2082 short_name: "Dash";
2083 ident: Dash;
2084 data_marker: crate::provider::PropertyBinaryDashV1;
2085 singleton: SINGLETON_PROPERTY_BINARY_DASH_V1;
2086 }
2103
2104#[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! {
2105 name: "Deprecated";
2106 short_name: "Dep";
2107 ident: Deprecated;
2108 data_marker: crate::provider::PropertyBinaryDeprecatedV1;
2109 singleton: SINGLETON_PROPERTY_BINARY_DEPRECATED_V1;
2110 }
2128
2129#[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! {
2130 name: "Default_Ignorable_Code_Point";
2131 short_name: "DI";
2132 ident: DefaultIgnorableCodePoint;
2133 data_marker: crate::provider::PropertyBinaryDefaultIgnorableCodePointV1;
2134 singleton: SINGLETON_PROPERTY_BINARY_DEFAULT_IGNORABLE_CODE_POINT_V1;
2135 }
2155
2156#[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! {
2157 name: "Diacritic";
2158 short_name: "Dia";
2159 ident: Diacritic;
2160 data_marker: crate::provider::PropertyBinaryDiacriticV1;
2161 singleton: SINGLETON_PROPERTY_BINARY_DIACRITIC_V1;
2162 }
2177
2178#[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! {
2179 name: "Emoji_Modifier_Base";
2180 short_name: "EBase";
2181 ident: EmojiModifierBase;
2182 data_marker: crate::provider::PropertyBinaryEmojiModifierBaseV1;
2183 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_BASE_V1;
2184 }
2199
2200#[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! {
2201 name: "Emoji_Component";
2202 short_name: "EComp";
2203 ident: EmojiComponent;
2204 data_marker: crate::provider::PropertyBinaryEmojiComponentV1;
2205 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_COMPONENT_V1;
2206 }
2224
2225#[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! {
2226 name: "Emoji_Modifier";
2227 short_name: "EMod";
2228 ident: EmojiModifier;
2229 data_marker: crate::provider::PropertyBinaryEmojiModifierV1;
2230 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_V1;
2231 }
2246
2247#[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! {
2248 name: "Emoji";
2249 short_name: "Emoji";
2250 ident: Emoji;
2251 data_marker: crate::provider::PropertyBinaryEmojiV1;
2252 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_V1;
2253 }
2268
2269#[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! {
2270 name: "Emoji_Presentation";
2271 short_name: "EPres";
2272 ident: EmojiPresentation;
2273 data_marker: crate::provider::PropertyBinaryEmojiPresentationV1;
2274 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_PRESENTATION_V1;
2275 }
2290
2291#[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! {
2292 name: "Extender";
2293 short_name: "Ext";
2294 ident: Extender;
2295 data_marker: crate::provider::PropertyBinaryExtenderV1;
2296 singleton: SINGLETON_PROPERTY_BINARY_EXTENDER_V1;
2297 }
2314
2315#[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! {
2316 name: "Extended_Pictographic";
2317 short_name: "ExtPict";
2318 ident: ExtendedPictographic;
2319 data_marker: crate::provider::PropertyBinaryExtendedPictographicV1;
2320 singleton: SINGLETON_PROPERTY_BINARY_EXTENDED_PICTOGRAPHIC_V1;
2321 }
2337
2338#[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! {
2339 name: "Graph";
2340 short_name: "Graph";
2341 ident: Graph;
2342 data_marker: crate::provider::PropertyBinaryGraphV1;
2343 singleton: SINGLETON_PROPERTY_BINARY_GRAPH_V1;
2344 }
2349
2350#[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! {
2351 name: "Grapheme_Base";
2352 short_name: "Gr_Base";
2353 ident: GraphemeBase;
2354 data_marker: crate::provider::PropertyBinaryGraphemeBaseV1;
2355 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_BASE_V1;
2356 }
2375
2376#[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! {
2377 name: "Grapheme_Extend";
2378 short_name: "Gr_Ext";
2379 ident: GraphemeExtend;
2380 data_marker: crate::provider::PropertyBinaryGraphemeExtendV1;
2381 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_EXTEND_V1;
2382 }
2401
2402#[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! {
2403 name: "Grapheme_Link";
2404 short_name: "Gr_Link";
2405 ident: GraphemeLink;
2406 data_marker: crate::provider::PropertyBinaryGraphemeLinkV1;
2407 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_LINK_V1;
2408 }
2413
2414#[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! {
2415 name: "Hex_Digit";
2416 short_name: "Hex";
2417 ident: HexDigit;
2418 data_marker: crate::provider::PropertyBinaryHexDigitV1;
2419 singleton: SINGLETON_PROPERTY_BINARY_HEX_DIGIT_V1;
2420 }
2439
2440#[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! {
2441 name: "Hyphen";
2442 short_name: "Hyphen";
2443 ident: Hyphen;
2444 data_marker: crate::provider::PropertyBinaryHyphenV1;
2445 singleton: SINGLETON_PROPERTY_BINARY_HYPHEN_V1;
2446 }
2451
2452#[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! {
2453 name: "ID_Compat_Math_Continue";
2454 short_name: "ID_Compat_Math_Continue";
2455 ident: IdCompatMathContinue;
2456 data_marker: crate::provider::PropertyBinaryIdCompatMathContinueV1;
2457 singleton: SINGLETON_PROPERTY_BINARY_ID_COMPAT_MATH_CONTINUE_V1;
2458 }
2460
2461#[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! {
2462 name: "ID_Compat_Math_Start";
2463 short_name: "ID_Compat_Math_Start";
2464 ident: IdCompatMathStart;
2465 data_marker: crate::provider::PropertyBinaryIdCompatMathStartV1;
2466 singleton: SINGLETON_PROPERTY_BINARY_ID_COMPAT_MATH_START_V1;
2467 }
2469
2470#[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! {
2471 name: "Id_Continue";
2472 short_name: "IDC";
2473 ident: IdContinue;
2474 data_marker: crate::provider::PropertyBinaryIdContinueV1;
2475 singleton: SINGLETON_PROPERTY_BINARY_ID_CONTINUE_V1;
2476 }
2499
2500#[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! {
2501 name: "Ideographic";
2502 short_name: "Ideo";
2503 ident: Ideographic;
2504 data_marker: crate::provider::PropertyBinaryIdeographicV1;
2505 singleton: SINGLETON_PROPERTY_BINARY_IDEOGRAPHIC_V1;
2506 }
2521
2522#[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! {
2523 name: "Id_Start";
2524 short_name: "IDS";
2525 ident: IdStart;
2526 data_marker: crate::provider::PropertyBinaryIdStartV1;
2527 singleton: SINGLETON_PROPERTY_BINARY_ID_START_V1;
2528 }
2550
2551#[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! {
2552 name: "Ids_Binary_Operator";
2553 short_name: "IDSB";
2554 ident: IdsBinaryOperator;
2555 data_marker: crate::provider::PropertyBinaryIdsBinaryOperatorV1;
2556 singleton: SINGLETON_PROPERTY_BINARY_IDS_BINARY_OPERATOR_V1;
2557 }
2571
2572#[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! {
2573 name: "Ids_Trinary_Operator";
2574 short_name: "IDST";
2575 ident: IdsTrinaryOperator;
2576 data_marker: crate::provider::PropertyBinaryIdsTrinaryOperatorV1;
2577 singleton: SINGLETON_PROPERTY_BINARY_IDS_TRINARY_OPERATOR_V1;
2578 }
2595
2596#[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! {
2597 name: "IDS_Unary_Operator";
2598 short_name: "IDSU";
2599 ident: IdsUnaryOperator;
2600 data_marker: crate::provider::PropertyBinaryIdsUnaryOperatorV1;
2601 singleton: SINGLETON_PROPERTY_BINARY_IDS_UNARY_OPERATOR_V1;
2602 }
2604
2605#[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! {
2606 name: "Join_Control";
2607 short_name: "Join_C";
2608 ident: JoinControl;
2609 data_marker: crate::provider::PropertyBinaryJoinControlV1;
2610 singleton: SINGLETON_PROPERTY_BINARY_JOIN_CONTROL_V1;
2611 }
2627
2628#[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! {
2629 name: "Logical_Order_Exception";
2630 short_name: "LOE";
2631 ident: LogicalOrderException;
2632 data_marker: crate::provider::PropertyBinaryLogicalOrderExceptionV1;
2633 singleton: SINGLETON_PROPERTY_BINARY_LOGICAL_ORDER_EXCEPTION_V1;
2634 }
2648
2649#[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! {
2650 name: "Lowercase";
2651 short_name: "Lower";
2652 ident: Lowercase;
2653 data_marker: crate::provider::PropertyBinaryLowercaseV1;
2654 singleton: SINGLETON_PROPERTY_BINARY_LOWERCASE_V1;
2655 }
2669
2670#[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! {
2671 name: "Math";
2672 short_name: "Math";
2673 ident: Math;
2674 data_marker: crate::provider::PropertyBinaryMathV1;
2675 singleton: SINGLETON_PROPERTY_BINARY_MATH_V1;
2676 }
2694
2695#[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! {
2696 name: "Modifier_Combining_Mark";
2697 short_name: "MCM";
2698 ident: ModifierCombiningMark;
2699 data_marker: crate::provider::PropertyBinaryModifierCombiningMarkV1;
2700 singleton: SINGLETON_PROPERTY_BINARY_MODIFIER_COMBINING_MARK_V1;
2701 }
2703
2704#[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! {
2705 name: "Noncharacter_Code_Point";
2706 short_name: "NChar";
2707 ident: NoncharacterCodePoint;
2708 data_marker: crate::provider::PropertyBinaryNoncharacterCodePointV1;
2709 singleton: SINGLETON_PROPERTY_BINARY_NONCHARACTER_CODE_POINT_V1;
2710 }
2725
2726#[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] = "NFC_Inert".as_bytes();
}make_binary_property! {
2727 name: "NFC_Inert";
2728 short_name: "NFC_Inert";
2729 ident: NfcInert;
2730 data_marker: crate::provider::PropertyBinaryNfcInertV1;
2731 singleton: SINGLETON_PROPERTY_BINARY_NFC_INERT_V1;
2732 }
2734
2735#[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] = "NFD_Inert".as_bytes();
}make_binary_property! {
2736 name: "NFD_Inert";
2737 short_name: "NFD_Inert";
2738 ident: NfdInert;
2739 data_marker: crate::provider::PropertyBinaryNfdInertV1;
2740 singleton: SINGLETON_PROPERTY_BINARY_NFD_INERT_V1;
2741 }
2743
2744#[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] = "NFKC_Inert".as_bytes();
}make_binary_property! {
2745 name: "NFKC_Inert";
2746 short_name: "NFKC_Inert";
2747 ident: NfkcInert;
2748 data_marker: crate::provider::PropertyBinaryNfkcInertV1;
2749 singleton: SINGLETON_PROPERTY_BINARY_NFKC_INERT_V1;
2750 }
2752
2753#[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] = "NFKD_Inert".as_bytes();
}make_binary_property! {
2754 name: "NFKD_Inert";
2755 short_name: "NFKD_Inert";
2756 ident: NfkdInert;
2757 data_marker: crate::provider::PropertyBinaryNfkdInertV1;
2758 singleton: SINGLETON_PROPERTY_BINARY_NFKD_INERT_V1;
2759 }
2761
2762#[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! {
2763 name: "Pattern_Syntax";
2764 short_name: "Pat_Syn";
2765 ident: PatternSyntax;
2766 data_marker: crate::provider::PropertyBinaryPatternSyntaxV1;
2767 singleton: SINGLETON_PROPERTY_BINARY_PATTERN_SYNTAX_V1;
2768 }
2787
2788#[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! {
2789 name: "Pattern_White_Space";
2790 short_name: "Pat_WS";
2791 ident: PatternWhiteSpace;
2792 data_marker: crate::provider::PropertyBinaryPatternWhiteSpaceV1;
2793 singleton: SINGLETON_PROPERTY_BINARY_PATTERN_WHITE_SPACE_V1;
2794 }
2814
2815#[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! {
2816 name: "Prepended_Concatenation_Mark";
2817 short_name: "PCM";
2818 ident: PrependedConcatenationMark;
2819 data_marker: crate::provider::PropertyBinaryPrependedConcatenationMarkV1;
2820 singleton: SINGLETON_PROPERTY_BINARY_PREPENDED_CONCATENATION_MARK_V1;
2821 }
2824
2825#[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! {
2826 name: "Print";
2827 short_name: "Print";
2828 ident: Print;
2829 data_marker: crate::provider::PropertyBinaryPrintV1;
2830 singleton: SINGLETON_PROPERTY_BINARY_PRINT_V1;
2831 }
2835
2836#[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! {
2837 name: "Quotation_Mark";
2838 short_name: "QMark";
2839 ident: QuotationMark;
2840 data_marker: crate::provider::PropertyBinaryQuotationMarkV1;
2841 singleton: SINGLETON_PROPERTY_BINARY_QUOTATION_MARK_V1;
2842 }
2857
2858#[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! {
2859 name: "Radical";
2860 short_name: "Radical";
2861 ident: Radical;
2862 data_marker: crate::provider::PropertyBinaryRadicalV1;
2863 singleton: SINGLETON_PROPERTY_BINARY_RADICAL_V1;
2864 }
2878
2879#[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! {
2880 name: "Regional_Indicator";
2881 short_name: "RI";
2882 ident: RegionalIndicator;
2883 data_marker: crate::provider::PropertyBinaryRegionalIndicatorV1;
2884 singleton: SINGLETON_PROPERTY_BINARY_REGIONAL_INDICATOR_V1;
2885 }
2900
2901#[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! {
2902 name: "Soft_Dotted";
2903 short_name: "SD";
2904 ident: SoftDotted;
2905 data_marker: crate::provider::PropertyBinarySoftDottedV1;
2906 singleton: SINGLETON_PROPERTY_BINARY_SOFT_DOTTED_V1;
2907 }
2924
2925#[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] = "Segment_Starter".as_bytes();
}make_binary_property! {
2926 name: "Segment_Starter";
2927 short_name: "Segment_Starter";
2928 ident: SegmentStarter;
2929 data_marker: crate::provider::PropertyBinarySegmentStarterV1;
2930 singleton: SINGLETON_PROPERTY_BINARY_SEGMENT_STARTER_V1;
2931 }
2934
2935#[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] = "Case_Sensitive".as_bytes();
}make_binary_property! {
2936 name: "Case_Sensitive";
2937 short_name: "Case_Sensitive";
2938 ident: CaseSensitive;
2939 data_marker: crate::provider::PropertyBinaryCaseSensitiveV1;
2940 singleton: SINGLETON_PROPERTY_BINARY_CASE_SENSITIVE_V1;
2941 }
2944
2945#[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! {
2946 name: "Sentence_Terminal";
2947 short_name: "STerm";
2948 ident: SentenceTerminal;
2949 data_marker: crate::provider::PropertyBinarySentenceTerminalV1;
2950 singleton: SINGLETON_PROPERTY_BINARY_SENTENCE_TERMINAL_V1;
2951 }
2968
2969#[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! {
2970 name: "Terminal_Punctuation";
2971 short_name: "Term";
2972 ident: TerminalPunctuation;
2973 data_marker: crate::provider::PropertyBinaryTerminalPunctuationV1;
2974 singleton: SINGLETON_PROPERTY_BINARY_TERMINAL_PUNCTUATION_V1;
2975 }
2992
2993#[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! {
2994 name: "Unified_Ideograph";
2995 short_name: "UIdeo";
2996 ident: UnifiedIdeograph;
2997 data_marker: crate::provider::PropertyBinaryUnifiedIdeographV1;
2998 singleton: SINGLETON_PROPERTY_BINARY_UNIFIED_IDEOGRAPH_V1;
2999 }
3014
3015#[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! {
3016 name: "Uppercase";
3017 short_name: "Upper";
3018 ident: Uppercase;
3019 data_marker: crate::provider::PropertyBinaryUppercaseV1;
3020 singleton: SINGLETON_PROPERTY_BINARY_UPPERCASE_V1;
3021 }
3035
3036#[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! {
3037 name: "Variation_Selector";
3038 short_name: "VS";
3039 ident: VariationSelector;
3040 data_marker: crate::provider::PropertyBinaryVariationSelectorV1;
3041 singleton: SINGLETON_PROPERTY_BINARY_VARIATION_SELECTOR_V1;
3042 }
3059
3060#[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] = "space".as_bytes();
}make_binary_property! {
3061 name: "White_Space";
3062 short_name: "space";
3063 ident: WhiteSpace;
3064 data_marker: crate::provider::PropertyBinaryWhiteSpaceV1;
3065 singleton: SINGLETON_PROPERTY_BINARY_WHITE_SPACE_V1;
3066 }
3083
3084#[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! {
3085 name: "Xdigit";
3086 short_name: "Xdigit";
3087 ident: Xdigit;
3088 data_marker: crate::provider::PropertyBinaryXdigitV1;
3089 singleton: SINGLETON_PROPERTY_BINARY_XDIGIT_V1;
3090 }
3094
3095#[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! {
3096 name: "XID_Continue";
3097 short_name: "XIDC";
3098 ident: XidContinue;
3099 data_marker: crate::provider::PropertyBinaryXidContinueV1;
3100 singleton: SINGLETON_PROPERTY_BINARY_XID_CONTINUE_V1;
3101 }
3122
3123#[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! {
3124 name: "XID_Start";
3125 short_name: "XIDS";
3126 ident: XidStart;
3127 data_marker: crate::provider::PropertyBinaryXidStartV1;
3128 singleton: SINGLETON_PROPERTY_BINARY_XID_START_V1;
3129 }
3151
3152pub use crate::emoji::EmojiSet;
3153
3154macro_rules! make_emoji_set {
3155 (
3156 ident: $ident:ident;
3157 data_marker: $data_marker:ty;
3158 singleton: $singleton:ident;
3159 $(#[$doc:meta])+
3160 ) => {
3161 $(#[$doc])+
3162 #[derive(Debug)]
3163 #[non_exhaustive]
3164 pub struct $ident;
3165
3166 impl crate::private::Sealed for $ident {}
3167
3168 impl EmojiSet for $ident {
3169 type DataMarker = $data_marker;
3170 #[cfg(feature = "compiled_data")]
3171 const SINGLETON: &'static crate::provider::PropertyUnicodeSet<'static> =
3172 &crate::provider::Baked::$singleton;
3173 }
3174 }
3175}
3176
3177#[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;
}make_emoji_set! {
3178 ident: BasicEmoji;
3179 data_marker: crate::provider::PropertyBinaryBasicEmojiV1;
3180 singleton: SINGLETON_PROPERTY_BINARY_BASIC_EMOJI_V1;
3181 }
3202
3203#[cfg(test)]
3204mod test_enumerated_property_completeness {
3205 use super::*;
3206 use std::collections::BTreeMap;
3207
3208 fn check_enum<'a, T: NamedEnumeratedProperty>(
3209 lookup: &crate::provider::names::PropertyValueNameToEnumMap<'static>,
3210 consts: impl IntoIterator<Item = &'a T>,
3211 ) where
3212 u16: From<T>,
3213 {
3214 let mut data: BTreeMap<_, _> = lookup
3215 .map
3216 .iter()
3217 .map(|(name, value)| (value, (name, "Data")))
3218 .collect();
3219
3220 let names = crate::PropertyNamesLong::<T>::new();
3221 let consts = consts.into_iter().map(|value| {
3222 (
3223 u16::from(*value) as usize,
3224 (
3225 names.get(*value).unwrap_or("<unknown>").to_string(),
3226 "Consts",
3227 ),
3228 )
3229 });
3230
3231 let mut diff = Vec::new();
3232 for t @ (value, _) in consts {
3233 if data.remove(&value).is_none() {
3234 diff.push(t);
3235 }
3236 }
3237 diff.extend(data);
3238
3239 let mut fmt_diff = String::new();
3240 for (value, (name, source)) in diff {
3241 fmt_diff.push_str(&format!("{source}:\t{name} = {value:?}\n"));
3242 }
3243
3244 assert!(
3245 fmt_diff.is_empty(),
3246 "Values defined in data do not match values defined in consts. Difference:\n{fmt_diff}"
3247 );
3248 }
3249
3250 #[test]
3251 fn test_ea() {
3252 check_enum(
3253 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_EAST_ASIAN_WIDTH_V1,
3254 EastAsianWidth::ALL_VALUES,
3255 );
3256 }
3257
3258 #[test]
3259 fn test_ccc() {
3260 check_enum(
3261 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_CANONICAL_COMBINING_CLASS_V1,
3262 CanonicalCombiningClass::ALL_VALUES,
3263 );
3264 }
3265
3266 #[test]
3267 fn test_jt() {
3268 check_enum(
3269 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_JOINING_TYPE_V1,
3270 JoiningType::ALL_VALUES,
3271 );
3272 }
3273
3274 #[test]
3275 fn test_insc() {
3276 check_enum(
3277 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_INDIC_SYLLABIC_CATEGORY_V1,
3278 IndicSyllabicCategory::ALL_VALUES,
3279 );
3280 }
3281
3282 #[test]
3283 fn test_sb() {
3284 check_enum(
3285 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_SENTENCE_BREAK_V1,
3286 SentenceBreak::ALL_VALUES,
3287 );
3288 }
3289
3290 #[test]
3291 fn test_wb() {
3292 check_enum(
3293 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_WORD_BREAK_V1,
3294 WordBreak::ALL_VALUES,
3295 );
3296 }
3297
3298 #[test]
3299 fn test_bc() {
3300 check_enum(
3301 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_BIDI_CLASS_V1,
3302 BidiClass::ALL_VALUES,
3303 );
3304 }
3305
3306 #[test]
3307 fn test_hst() {
3308 check_enum(
3309 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_HANGUL_SYLLABLE_TYPE_V1,
3310 HangulSyllableType::ALL_VALUES,
3311 );
3312 }
3313
3314 #[test]
3315 fn test_vo() {
3316 check_enum(
3317 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_VERTICAL_ORIENTATION_V1,
3318 VerticalOrientation::ALL_VALUES,
3319 );
3320 }
3321}