1pub use crate::names::{NamedEnumeratedProperty, ParseableEnumeratedProperty};
21
22pub use crate::bidi::{BidiMirroringGlyph, BidiPairedBracketType};
23
24macro_rules! create_const_array {
36 (
37 $ ( #[$meta:meta] )*
38 impl $enum_ty:ident {
39 $( $(#[$const_meta:meta])* $v:vis const $i:ident: $t:ty = $e:expr; )*
40 }
41 #[test]
42 fn $consts_test:ident();
43 ) => {
44 $( #[$meta] )*
45 impl $enum_ty {
46 $(
47 $(#[$const_meta])*
48 $v const $i: $t = $e;
49 )*
50
51 pub const ALL_VALUES: &'static [$enum_ty] = &[
54 $($enum_ty::$i),*
55 ];
56 }
57
58 #[cfg(feature = "datagen")]
59 impl databake::Bake for $enum_ty {
60 fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
61 env.insert("icu_properties");
62 match *self {
63 $(
64 Self::$i => databake::quote!(icu_properties::props::$enum_ty::$i),
65 )*
66 Self(v) => databake::quote!(icu_properties::props::$enum_ty::from_icu4c_value(#v)),
67 }
68 }
69 }
70
71
72 impl From<$enum_ty> for u16 {
73 fn from(other: $enum_ty) -> Self {
74 other.0 as u16
75 }
76 }
77
78 #[test]
79 fn $consts_test() {
80 $(
81 assert_eq!(
82 crate::names::PropertyNamesLong::<$enum_ty>::new().get($enum_ty::$i).unwrap()
83 .replace('_', "")
85 .replace("Ethiopic", "Ethiopian")
87 .replace("Aran", "Nastaliq")
89 .replace("LVSyllable", "LeadingVowelSyllable")
91 .replace("LVTSyllable", "LeadingVowelTrailingSyllable"),
92 stringify!($i)
93 );
94 )*
95 }
96 }
97}
98
99pub use crate::code_point_map::EnumeratedProperty;
100
101macro_rules! make_enumerated_property {
102 (
103 name: $name:literal;
104 short_name: $short_name:literal;
105 ident: $value_ty:path;
106 data_marker: $data_marker:ty;
107 singleton: $singleton:ident;
108 $(ule_ty: $ule_ty:ty;)?
109 ) => {
110 impl crate::private::Sealed for $value_ty {}
111
112 impl EnumeratedProperty for $value_ty {
113 type DataMarker = $data_marker;
114 #[cfg(feature = "compiled_data")]
115 const SINGLETON: &'static crate::provider::PropertyCodePointMap<'static, Self> =
116 crate::provider::Baked::$singleton;
117 const NAME: &'static [u8] = $name.as_bytes();
118 const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
119 }
120
121 $(
122 impl zerovec::ule::AsULE for $value_ty {
123 type ULE = $ule_ty;
124
125 fn to_unaligned(self) -> Self::ULE {
126 self.0.to_unaligned()
127 }
128 fn from_unaligned(unaligned: Self::ULE) -> Self {
129 Self(zerovec::ule::AsULE::from_unaligned(unaligned))
130 }
131 }
132 )?
133 };
134}
135
136#[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)]
157#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
158#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
160pub struct BidiClass(pub(crate) u8);
161
162impl BidiClass {
163 pub const fn to_icu4c_value(self) -> u8 {
165 self.0
166 }
167 pub const fn from_icu4c_value(value: u8) -> Self {
169 Self(value)
170 }
171}
172
173#[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! {
174#[allow(non_upper_case_globals)]
175impl BidiClass {
176 pub const LeftToRight: BidiClass = BidiClass(0);
178 pub const RightToLeft: BidiClass = BidiClass(1);
180 pub const EuropeanNumber: BidiClass = BidiClass(2);
182 pub const EuropeanSeparator: BidiClass = BidiClass(3);
184 pub const EuropeanTerminator: BidiClass = BidiClass(4);
186 pub const ArabicNumber: BidiClass = BidiClass(5);
188 pub const CommonSeparator: BidiClass = BidiClass(6);
190 pub const ParagraphSeparator: BidiClass = BidiClass(7);
192 pub const SegmentSeparator: BidiClass = BidiClass(8);
194 pub const WhiteSpace: BidiClass = BidiClass(9);
196 pub const OtherNeutral: BidiClass = BidiClass(10);
198 pub const LeftToRightEmbedding: BidiClass = BidiClass(11);
200 pub const LeftToRightOverride: BidiClass = BidiClass(12);
202 pub const ArabicLetter: BidiClass = BidiClass(13);
204 pub const RightToLeftEmbedding: BidiClass = BidiClass(14);
206 pub const RightToLeftOverride: BidiClass = BidiClass(15);
208 pub const PopDirectionalFormat: BidiClass = BidiClass(16);
210 pub const NonspacingMark: BidiClass = BidiClass(17);
212 pub const BoundaryNeutral: BidiClass = BidiClass(18);
214 pub const FirstStrongIsolate: BidiClass = BidiClass(19);
216 pub const LeftToRightIsolate: BidiClass = BidiClass(20);
218 pub const RightToLeftIsolate: BidiClass = BidiClass(21);
220 pub const PopDirectionalIsolate: BidiClass = BidiClass(22);
222}
223#[test]
224fn bidi_props_consts();
225}
226
227impl 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! {
228 name: "Bidi_Class";
229 short_name: "bc";
230 ident: BidiClass;
231 data_marker: crate::provider::PropertyEnumBidiClassV1;
232 singleton: SINGLETON_PROPERTY_ENUM_BIDI_CLASS_V1;
233 ule_ty: u8;
234}
235
236pub(crate) mod gc {
238 #[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)]
263 #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
264 #[cfg_attr(feature = "datagen", derive(databake::Bake))]
265 #[cfg_attr(feature = "datagen", databake(path = icu_properties::props))]
266 #[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)]
268 #[cfg_attr(not(feature = "alloc"), zerovec::skip_derive(ZeroMapKV))]
269 #[repr(u8)]
270 pub enum GeneralCategory {
271 Unassigned = 0,
273
274 UppercaseLetter = 1,
276 LowercaseLetter = 2,
278 TitlecaseLetter = 3,
280 ModifierLetter = 4,
282 OtherLetter = 5,
284
285 NonspacingMark = 6,
287 SpacingMark = 8,
289 EnclosingMark = 7,
291
292 DecimalNumber = 9,
294 LetterNumber = 10,
296 OtherNumber = 11,
298
299 SpaceSeparator = 12,
301 LineSeparator = 13,
303 ParagraphSeparator = 14,
305
306 Control = 15,
308 Format = 16,
310 PrivateUse = 17,
312 Surrogate = 18,
314
315 DashPunctuation = 19,
317 OpenPunctuation = 20,
319 ClosePunctuation = 21,
321 ConnectorPunctuation = 22,
323 InitialPunctuation = 28,
325 FinalPunctuation = 29,
327 OtherPunctuation = 23,
329
330 MathSymbol = 24,
332 CurrencySymbol = 25,
334 ModifierSymbol = 26,
336 OtherSymbol = 27,
338 }
339}
340
341pub use gc::GeneralCategory;
342
343impl GeneralCategory {
344 pub const ALL_VALUES: &'static [GeneralCategory] = &[
346 GeneralCategory::Unassigned,
347 GeneralCategory::UppercaseLetter,
348 GeneralCategory::LowercaseLetter,
349 GeneralCategory::TitlecaseLetter,
350 GeneralCategory::ModifierLetter,
351 GeneralCategory::OtherLetter,
352 GeneralCategory::NonspacingMark,
353 GeneralCategory::SpacingMark,
354 GeneralCategory::EnclosingMark,
355 GeneralCategory::DecimalNumber,
356 GeneralCategory::LetterNumber,
357 GeneralCategory::OtherNumber,
358 GeneralCategory::SpaceSeparator,
359 GeneralCategory::LineSeparator,
360 GeneralCategory::ParagraphSeparator,
361 GeneralCategory::Control,
362 GeneralCategory::Format,
363 GeneralCategory::PrivateUse,
364 GeneralCategory::Surrogate,
365 GeneralCategory::DashPunctuation,
366 GeneralCategory::OpenPunctuation,
367 GeneralCategory::ClosePunctuation,
368 GeneralCategory::ConnectorPunctuation,
369 GeneralCategory::InitialPunctuation,
370 GeneralCategory::FinalPunctuation,
371 GeneralCategory::OtherPunctuation,
372 GeneralCategory::MathSymbol,
373 GeneralCategory::CurrencySymbol,
374 GeneralCategory::ModifierSymbol,
375 GeneralCategory::OtherSymbol,
376 ];
377}
378
379#[test]
380fn gc_variants() {
381 for &variant in GeneralCategory::ALL_VALUES {
382 assert_eq!(
383 crate::names::PropertyNamesLong::<GeneralCategory>::new()
384 .get(variant)
385 .unwrap()
386 .replace('_', ""),
388 format!("{variant:?}")
389 );
390 }
391}
392
393#[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)]
394#[non_exhaustive]
396pub struct GeneralCategoryOutOfBoundsError;
397
398impl TryFrom<u8> for GeneralCategory {
399 type Error = GeneralCategoryOutOfBoundsError;
400 fn try_from(val: u8) -> Result<Self, GeneralCategoryOutOfBoundsError> {
403 GeneralCategory::new_from_u8(val).ok_or(GeneralCategoryOutOfBoundsError)
404 }
405}
406
407impl 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! {
408 name: "General_Category";
409 short_name: "gc";
410 ident: GeneralCategory;
411 data_marker: crate::provider::PropertyEnumGeneralCategoryV1;
412 singleton: SINGLETON_PROPERTY_ENUM_GENERAL_CATEGORY_V1;
413}
414
415#[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)]
431#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
433pub struct GeneralCategoryGroup(pub(crate) u32);
434
435impl crate::private::Sealed for GeneralCategoryGroup {}
436
437use GeneralCategory as GC;
438use GeneralCategoryGroup as GCG;
439
440#[allow(non_upper_case_globals)]
441impl GeneralCategoryGroup {
442 pub const UppercaseLetter: GeneralCategoryGroup = GCG(1 << (GC::UppercaseLetter as u32));
444 pub const LowercaseLetter: GeneralCategoryGroup = GCG(1 << (GC::LowercaseLetter as u32));
446 pub const TitlecaseLetter: GeneralCategoryGroup = GCG(1 << (GC::TitlecaseLetter as u32));
448 pub const ModifierLetter: GeneralCategoryGroup = GCG(1 << (GC::ModifierLetter as u32));
450 pub const OtherLetter: GeneralCategoryGroup = GCG(1 << (GC::OtherLetter as u32));
452 pub const CasedLetter: GeneralCategoryGroup = GCG((1 << (GC::UppercaseLetter as u32))
454 | (1 << (GC::LowercaseLetter as u32))
455 | (1 << (GC::TitlecaseLetter as u32)));
456 pub const Letter: GeneralCategoryGroup = GCG((1 << (GC::UppercaseLetter as u32))
458 | (1 << (GC::LowercaseLetter as u32))
459 | (1 << (GC::TitlecaseLetter as u32))
460 | (1 << (GC::ModifierLetter as u32))
461 | (1 << (GC::OtherLetter as u32)));
462
463 pub const NonspacingMark: GeneralCategoryGroup = GCG(1 << (GC::NonspacingMark as u32));
465 pub const EnclosingMark: GeneralCategoryGroup = GCG(1 << (GC::EnclosingMark as u32));
467 pub const SpacingMark: GeneralCategoryGroup = GCG(1 << (GC::SpacingMark as u32));
469 pub const Mark: GeneralCategoryGroup = GCG((1 << (GC::NonspacingMark as u32))
471 | (1 << (GC::EnclosingMark as u32))
472 | (1 << (GC::SpacingMark as u32)));
473
474 pub const DecimalNumber: GeneralCategoryGroup = GCG(1 << (GC::DecimalNumber as u32));
476 pub const LetterNumber: GeneralCategoryGroup = GCG(1 << (GC::LetterNumber as u32));
478 pub const OtherNumber: GeneralCategoryGroup = GCG(1 << (GC::OtherNumber as u32));
480 pub const Number: GeneralCategoryGroup = GCG((1 << (GC::DecimalNumber as u32))
482 | (1 << (GC::LetterNumber as u32))
483 | (1 << (GC::OtherNumber as u32)));
484
485 pub const SpaceSeparator: GeneralCategoryGroup = GCG(1 << (GC::SpaceSeparator as u32));
487 pub const LineSeparator: GeneralCategoryGroup = GCG(1 << (GC::LineSeparator as u32));
489 pub const ParagraphSeparator: GeneralCategoryGroup = GCG(1 << (GC::ParagraphSeparator as u32));
491 pub const Separator: GeneralCategoryGroup = GCG((1 << (GC::SpaceSeparator as u32))
493 | (1 << (GC::LineSeparator as u32))
494 | (1 << (GC::ParagraphSeparator as u32)));
495
496 pub const Control: GeneralCategoryGroup = GCG(1 << (GC::Control as u32));
498 pub const Format: GeneralCategoryGroup = GCG(1 << (GC::Format as u32));
500 pub const PrivateUse: GeneralCategoryGroup = GCG(1 << (GC::PrivateUse as u32));
502 pub const Surrogate: GeneralCategoryGroup = GCG(1 << (GC::Surrogate as u32));
504 pub const Unassigned: GeneralCategoryGroup = GCG(1 << (GC::Unassigned as u32));
506 pub const Other: GeneralCategoryGroup = GCG((1 << (GC::Control as u32))
508 | (1 << (GC::Format as u32))
509 | (1 << (GC::PrivateUse as u32))
510 | (1 << (GC::Surrogate as u32))
511 | (1 << (GC::Unassigned as u32)));
512
513 pub const DashPunctuation: GeneralCategoryGroup = GCG(1 << (GC::DashPunctuation as u32));
515 pub const OpenPunctuation: GeneralCategoryGroup = GCG(1 << (GC::OpenPunctuation as u32));
517 pub const ClosePunctuation: GeneralCategoryGroup = GCG(1 << (GC::ClosePunctuation as u32));
519 pub const ConnectorPunctuation: GeneralCategoryGroup =
521 GCG(1 << (GC::ConnectorPunctuation as u32));
522 pub const InitialPunctuation: GeneralCategoryGroup = GCG(1 << (GC::InitialPunctuation as u32));
524 pub const FinalPunctuation: GeneralCategoryGroup = GCG(1 << (GC::FinalPunctuation as u32));
526 pub const OtherPunctuation: GeneralCategoryGroup = GCG(1 << (GC::OtherPunctuation as u32));
528 pub const Punctuation: GeneralCategoryGroup = GCG((1 << (GC::DashPunctuation as u32))
530 | (1 << (GC::OpenPunctuation as u32))
531 | (1 << (GC::ClosePunctuation as u32))
532 | (1 << (GC::ConnectorPunctuation as u32))
533 | (1 << (GC::OtherPunctuation as u32))
534 | (1 << (GC::InitialPunctuation as u32))
535 | (1 << (GC::FinalPunctuation as u32)));
536
537 pub const MathSymbol: GeneralCategoryGroup = GCG(1 << (GC::MathSymbol as u32));
539 pub const CurrencySymbol: GeneralCategoryGroup = GCG(1 << (GC::CurrencySymbol as u32));
541 pub const ModifierSymbol: GeneralCategoryGroup = GCG(1 << (GC::ModifierSymbol as u32));
543 pub const OtherSymbol: GeneralCategoryGroup = GCG(1 << (GC::OtherSymbol as u32));
545 pub const Symbol: GeneralCategoryGroup = GCG((1 << (GC::MathSymbol as u32))
547 | (1 << (GC::CurrencySymbol as u32))
548 | (1 << (GC::ModifierSymbol as u32))
549 | (1 << (GC::OtherSymbol as u32)));
550
551 const ALL: u32 = (1 << (GC::FinalPunctuation as u32 + 1)) - 1;
552
553 pub const fn contains(self, val: GeneralCategory) -> bool {
597 0 != (1 << (val as u32)) & self.0
598 }
599
600 pub const fn complement(self) -> Self {
618 GeneralCategoryGroup(!self.0 & Self::ALL)
621 }
622
623 pub const fn all() -> Self {
637 Self(Self::ALL)
638 }
639
640 pub const fn empty() -> Self {
654 Self(0)
655 }
656
657 pub const fn union(self, other: Self) -> Self {
673 Self(self.0 | other.0)
674 }
675
676 pub const fn intersection(self, other: Self) -> Self {
693 Self(self.0 & other.0)
694 }
695}
696
697impl From<GeneralCategory> for GeneralCategoryGroup {
698 fn from(subcategory: GeneralCategory) -> Self {
699 GeneralCategoryGroup(1 << (subcategory as u32))
700 }
701}
702impl From<u32> for GeneralCategoryGroup {
703 fn from(mask: u32) -> Self {
704 GeneralCategoryGroup(mask & Self::ALL)
707 }
708}
709impl From<GeneralCategoryGroup> for u32 {
710 fn from(group: GeneralCategoryGroup) -> Self {
711 group.0
712 }
713}
714
715#[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)]
738#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
739#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
741pub struct Script(pub(crate) u16);
742
743impl Script {
744 pub const fn to_icu4c_value(self) -> u16 {
746 self.0
747 }
748 pub const fn from_icu4c_value(value: u16) -> Self {
750 Self(value)
751 }
752}
753
754#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl Script {
pub const Adlam: Script = Script(167);
pub const Ahom: Script = Script(161);
pub const AnatolianHieroglyphs: Script = Script(156);
pub const Arabic: Script = Script(2);
pub const Armenian: Script = Script(3);
pub const Avestan: Script = Script(117);
pub const Balinese: Script = Script(62);
pub const Bamum: Script = Script(130);
pub const BassaVah: Script = Script(134);
pub const Batak: Script = Script(63);
pub const Bengali: Script = Script(4);
pub const BeriaErfe: Script = Script(208);
pub const Bhaiksuki: Script = Script(168);
pub const Bopomofo: Script = Script(5);
pub const Brahmi: Script = Script(65);
pub const Braille: Script = Script(46);
pub const Buginese: Script = Script(55);
pub const Buhid: Script = Script(44);
pub const CanadianAboriginal: Script = Script(40);
pub const Carian: Script = Script(104);
pub const CaucasianAlbanian: Script = Script(159);
pub const Chakma: Script = Script(118);
pub const Cham: Script = Script(66);
pub const Cherokee: Script = Script(6);
pub const Chorasmian: Script = Script(189);
pub const Common: Script = Script(0);
pub const Coptic: Script = Script(7);
pub const Cuneiform: Script = Script(101);
pub const Cypriot: Script = Script(47);
pub const CyproMinoan: Script = Script(193);
pub const Cyrillic: Script = Script(8);
pub const Deseret: Script = Script(9);
pub const Devanagari: Script = Script(10);
pub const DivesAkuru: Script = Script(190);
pub const Dogra: Script = Script(178);
pub const Duployan: Script = Script(135);
pub const EgyptianHieroglyphs: Script = Script(71);
pub const Elbasan: Script = Script(136);
pub const Elymaic: Script = Script(185);
pub const Ethiopian: Script = Script(11);
pub const Garay: Script = Script(201);
pub const Georgian: Script = Script(12);
pub const Glagolitic: Script = Script(56);
pub const Gothic: Script = Script(13);
pub const Grantha: Script = Script(137);
pub const Greek: Script = Script(14);
pub const Gujarati: Script = Script(15);
pub const GunjalaGondi: Script = Script(179);
pub const Gurmukhi: Script = Script(16);
pub const GurungKhema: Script = Script(202);
pub const Han: Script = Script(17);
pub const Hangul: Script = Script(18);
pub const HanifiRohingya: Script = Script(182);
pub const Hanunoo: Script = Script(43);
pub const Hatran: Script = Script(162);
pub const Hebrew: Script = Script(19);
pub const Hiragana: Script = Script(20);
pub const ImperialAramaic: Script = Script(116);
pub const Inherited: Script = Script(1);
pub const InscriptionalPahlavi: Script = Script(122);
pub const InscriptionalParthian: Script = Script(125);
pub const Javanese: Script = Script(78);
pub const Kaithi: Script = Script(120);
pub const Kannada: Script = Script(21);
pub const Katakana: Script = Script(22);
pub const Kawi: Script = Script(198);
pub const KayahLi: Script = Script(79);
pub const Kharoshthi: Script = Script(57);
pub const KhitanSmallScript: Script = Script(191);
pub const Khmer: Script = Script(23);
pub const Khojki: Script = Script(157);
pub const Khudawadi: Script = Script(145);
pub const KiratRai: Script = Script(203);
pub const Lao: Script = Script(24);
pub const Latin: Script = Script(25);
pub const Lepcha: Script = Script(82);
pub const Limbu: Script = Script(48);
pub const LinearA: Script = Script(83);
pub const LinearB: Script = Script(49);
pub const Lisu: Script = Script(131);
pub const Lycian: Script = Script(107);
pub const Lydian: Script = Script(108);
pub const Mahajani: Script = Script(160);
pub const Makasar: Script = Script(180);
pub const Malayalam: Script = Script(26);
pub const Mandaic: Script = Script(84);
pub const Manichaean: Script = Script(121);
pub const Marchen: Script = Script(169);
pub const MasaramGondi: Script = Script(175);
pub const Medefaidrin: Script = Script(181);
pub const MeeteiMayek: Script = Script(115);
pub const MendeKikakui: Script = Script(140);
pub const MeroiticCursive: Script = Script(141);
pub const MeroiticHieroglyphs: Script = Script(86);
pub const Miao: Script = Script(92);
pub const Modi: Script = Script(163);
pub const Mongolian: Script = Script(27);
pub const Mro: Script = Script(149);
pub const Multani: Script = Script(164);
pub const Myanmar: Script = Script(28);
pub const Nabataean: Script = Script(143);
pub const NagMundari: Script = Script(199);
pub const Nandinagari: Script = Script(187);
pub const Nastaliq: Script = Script(200);
pub const Newa: Script = Script(170);
pub const NewTaiLue: Script = Script(59);
pub const Nko: Script = Script(87);
pub const Nushu: Script = Script(150);
pub const NyiakengPuachueHmong: Script = Script(186);
pub const Ogham: Script = Script(29);
pub const OlChiki: Script = Script(109);
pub const OldHungarian: Script = Script(76);
pub const OldItalic: Script = Script(30);
pub const OldNorthArabian: Script = Script(142);
pub const OldPermic: Script = Script(89);
pub const OldPersian: Script = Script(61);
pub const OldSogdian: Script = Script(184);
pub const OldSouthArabian: Script = Script(133);
pub const OldTurkic: Script = Script(88);
pub const OldUyghur: Script = Script(194);
pub const OlOnal: Script = Script(204);
pub const Oriya: Script = Script(31);
pub const Osage: Script = Script(171);
pub const Osmanya: Script = Script(50);
pub const PahawhHmong: Script = Script(75);
pub const Palmyrene: Script = Script(144);
pub const PauCinHau: Script = Script(165);
pub const PhagsPa: Script = Script(90);
pub const Phoenician: Script = Script(91);
pub const PsalterPahlavi: Script = Script(123);
pub const Rejang: Script = Script(110);
pub const Runic: Script = Script(32);
pub const Samaritan: Script = Script(126);
pub const Saurashtra: Script = Script(111);
pub const Sharada: Script = Script(151);
pub const Shavian: Script = Script(51);
pub const Siddham: Script = Script(166);
pub const Sidetic: Script = Script(209);
pub const SignWriting: Script = Script(112);
pub const Sinhala: Script = Script(33);
pub const Sogdian: Script = Script(183);
pub const SoraSompeng: Script = Script(152);
pub const Soyombo: Script = Script(176);
pub const Sundanese: Script = Script(113);
pub const Sunuwar: Script = Script(205);
pub const SylotiNagri: Script = Script(58);
pub const Syriac: Script = Script(34);
pub const Tagalog: Script = Script(42);
pub const Tagbanwa: Script = Script(45);
pub const TaiLe: Script = Script(52);
pub const TaiTham: Script = Script(106);
pub const TaiViet: Script = Script(127);
pub const TaiYo: Script = Script(210);
pub const Takri: Script = Script(153);
pub const Tamil: Script = Script(35);
pub const Tangsa: Script = Script(195);
pub const Tangut: Script = Script(154);
pub const Telugu: Script = Script(36);
pub const Thaana: Script = Script(37);
pub const Thai: Script = Script(38);
pub const Tibetan: Script = Script(39);
pub const Tifinagh: Script = Script(60);
pub const Tirhuta: Script = Script(158);
pub const Todhri: Script = Script(206);
pub const TolongSiki: Script = Script(211);
pub const Toto: Script = Script(196);
pub const TuluTigalari: Script = Script(207);
pub const Ugaritic: Script = Script(53);
pub const Unknown: Script = Script(103);
pub const Vai: Script = Script(99);
pub const Vithkuqi: Script = Script(197);
pub const Wancho: Script = Script(188);
pub const WarangCiti: Script = Script(146);
pub const Yezidi: Script = Script(192);
pub const Yi: Script = Script(41);
pub const ZanabazarSquare: Script = Script(177);
pub const ALL_VALUES: &'static [Script] =
&[Script::Adlam, Script::Ahom, Script::AnatolianHieroglyphs,
Script::Arabic, Script::Armenian, Script::Avestan,
Script::Balinese, Script::Bamum, Script::BassaVah,
Script::Batak, Script::Bengali, Script::BeriaErfe,
Script::Bhaiksuki, Script::Bopomofo, Script::Brahmi,
Script::Braille, Script::Buginese, Script::Buhid,
Script::CanadianAboriginal, Script::Carian,
Script::CaucasianAlbanian, Script::Chakma, Script::Cham,
Script::Cherokee, Script::Chorasmian, Script::Common,
Script::Coptic, Script::Cuneiform, Script::Cypriot,
Script::CyproMinoan, Script::Cyrillic, Script::Deseret,
Script::Devanagari, Script::DivesAkuru, Script::Dogra,
Script::Duployan, Script::EgyptianHieroglyphs,
Script::Elbasan, Script::Elymaic, Script::Ethiopian,
Script::Garay, Script::Georgian, Script::Glagolitic,
Script::Gothic, Script::Grantha, Script::Greek,
Script::Gujarati, Script::GunjalaGondi, Script::Gurmukhi,
Script::GurungKhema, Script::Han, Script::Hangul,
Script::HanifiRohingya, Script::Hanunoo, Script::Hatran,
Script::Hebrew, Script::Hiragana, Script::ImperialAramaic,
Script::Inherited, Script::InscriptionalPahlavi,
Script::InscriptionalParthian, Script::Javanese,
Script::Kaithi, Script::Kannada, Script::Katakana,
Script::Kawi, Script::KayahLi, Script::Kharoshthi,
Script::KhitanSmallScript, Script::Khmer, Script::Khojki,
Script::Khudawadi, Script::KiratRai, Script::Lao,
Script::Latin, Script::Lepcha, Script::Limbu,
Script::LinearA, Script::LinearB, Script::Lisu,
Script::Lycian, Script::Lydian, Script::Mahajani,
Script::Makasar, Script::Malayalam, Script::Mandaic,
Script::Manichaean, Script::Marchen, Script::MasaramGondi,
Script::Medefaidrin, Script::MeeteiMayek,
Script::MendeKikakui, Script::MeroiticCursive,
Script::MeroiticHieroglyphs, Script::Miao, Script::Modi,
Script::Mongolian, Script::Mro, Script::Multani,
Script::Myanmar, Script::Nabataean, Script::NagMundari,
Script::Nandinagari, Script::Nastaliq, Script::Newa,
Script::NewTaiLue, Script::Nko, Script::Nushu,
Script::NyiakengPuachueHmong, Script::Ogham,
Script::OlChiki, Script::OldHungarian, Script::OldItalic,
Script::OldNorthArabian, Script::OldPermic,
Script::OldPersian, Script::OldSogdian,
Script::OldSouthArabian, Script::OldTurkic,
Script::OldUyghur, Script::OlOnal, Script::Oriya,
Script::Osage, Script::Osmanya, Script::PahawhHmong,
Script::Palmyrene, Script::PauCinHau, Script::PhagsPa,
Script::Phoenician, Script::PsalterPahlavi, Script::Rejang,
Script::Runic, Script::Samaritan, Script::Saurashtra,
Script::Sharada, Script::Shavian, Script::Siddham,
Script::Sidetic, Script::SignWriting, Script::Sinhala,
Script::Sogdian, Script::SoraSompeng, Script::Soyombo,
Script::Sundanese, Script::Sunuwar, Script::SylotiNagri,
Script::Syriac, Script::Tagalog, Script::Tagbanwa,
Script::TaiLe, Script::TaiTham, Script::TaiViet,
Script::TaiYo, Script::Takri, Script::Tamil, Script::Tangsa,
Script::Tangut, Script::Telugu, Script::Thaana,
Script::Thai, Script::Tibetan, Script::Tifinagh,
Script::Tirhuta, Script::Todhri, Script::TolongSiki,
Script::Toto, Script::TuluTigalari, Script::Ugaritic,
Script::Unknown, Script::Vai, Script::Vithkuqi,
Script::Wancho, Script::WarangCiti, Script::Yezidi,
Script::Yi, Script::ZanabazarSquare];
}
impl From<Script> for u16 {
fn from(other: Script) -> Self { other.0 as u16 }
}create_const_array! {
755#[allow(missing_docs)] #[allow(non_upper_case_globals)]
757impl Script {
758 pub const Adlam: Script = Script(167);
759 pub const Ahom: Script = Script(161);
760 pub const AnatolianHieroglyphs: Script = Script(156);
761 pub const Arabic: Script = Script(2);
762 pub const Armenian: Script = Script(3);
763 pub const Avestan: Script = Script(117);
764 pub const Balinese: Script = Script(62);
765 pub const Bamum: Script = Script(130);
766 pub const BassaVah: Script = Script(134);
767 pub const Batak: Script = Script(63);
768 pub const Bengali: Script = Script(4);
769 pub const BeriaErfe: Script = Script(208);
770 pub const Bhaiksuki: Script = Script(168);
771 pub const Bopomofo: Script = Script(5);
772 pub const Brahmi: Script = Script(65);
773 pub const Braille: Script = Script(46);
774 pub const Buginese: Script = Script(55);
775 pub const Buhid: Script = Script(44);
776 pub const CanadianAboriginal: Script = Script(40);
777 pub const Carian: Script = Script(104);
778 pub const CaucasianAlbanian: Script = Script(159);
779 pub const Chakma: Script = Script(118);
780 pub const Cham: Script = Script(66);
781 pub const Cherokee: Script = Script(6);
782 pub const Chorasmian: Script = Script(189);
783 pub const Common: Script = Script(0);
784 pub const Coptic: Script = Script(7);
785 pub const Cuneiform: Script = Script(101);
786 pub const Cypriot: Script = Script(47);
787 pub const CyproMinoan: Script = Script(193);
788 pub const Cyrillic: Script = Script(8);
789 pub const Deseret: Script = Script(9);
790 pub const Devanagari: Script = Script(10);
791 pub const DivesAkuru: Script = Script(190);
792 pub const Dogra: Script = Script(178);
793 pub const Duployan: Script = Script(135);
794 pub const EgyptianHieroglyphs: Script = Script(71);
795 pub const Elbasan: Script = Script(136);
796 pub const Elymaic: Script = Script(185);
797 pub const Ethiopian: Script = Script(11);
798 pub const Garay: Script = Script(201);
799 pub const Georgian: Script = Script(12);
800 pub const Glagolitic: Script = Script(56);
801 pub const Gothic: Script = Script(13);
802 pub const Grantha: Script = Script(137);
803 pub const Greek: Script = Script(14);
804 pub const Gujarati: Script = Script(15);
805 pub const GunjalaGondi: Script = Script(179);
806 pub const Gurmukhi: Script = Script(16);
807 pub const GurungKhema: Script = Script(202);
808 pub const Han: Script = Script(17);
809 pub const Hangul: Script = Script(18);
810 pub const HanifiRohingya: Script = Script(182);
811 pub const Hanunoo: Script = Script(43);
812 pub const Hatran: Script = Script(162);
813 pub const Hebrew: Script = Script(19);
814 pub const Hiragana: Script = Script(20);
815 pub const ImperialAramaic: Script = Script(116);
816 pub const Inherited: Script = Script(1);
817 pub const InscriptionalPahlavi: Script = Script(122);
818 pub const InscriptionalParthian: Script = Script(125);
819 pub const Javanese: Script = Script(78);
820 pub const Kaithi: Script = Script(120);
821 pub const Kannada: Script = Script(21);
822 pub const Katakana: Script = Script(22);
823 pub const Kawi: Script = Script(198);
824 pub const KayahLi: Script = Script(79);
825 pub const Kharoshthi: Script = Script(57);
826 pub const KhitanSmallScript: Script = Script(191);
827 pub const Khmer: Script = Script(23);
828 pub const Khojki: Script = Script(157);
829 pub const Khudawadi: Script = Script(145);
830 pub const KiratRai: Script = Script(203);
831 pub const Lao: Script = Script(24);
832 pub const Latin: Script = Script(25);
833 pub const Lepcha: Script = Script(82);
834 pub const Limbu: Script = Script(48);
835 pub const LinearA: Script = Script(83);
836 pub const LinearB: Script = Script(49);
837 pub const Lisu: Script = Script(131);
838 pub const Lycian: Script = Script(107);
839 pub const Lydian: Script = Script(108);
840 pub const Mahajani: Script = Script(160);
841 pub const Makasar: Script = Script(180);
842 pub const Malayalam: Script = Script(26);
843 pub const Mandaic: Script = Script(84);
844 pub const Manichaean: Script = Script(121);
845 pub const Marchen: Script = Script(169);
846 pub const MasaramGondi: Script = Script(175);
847 pub const Medefaidrin: Script = Script(181);
848 pub const MeeteiMayek: Script = Script(115);
849 pub const MendeKikakui: Script = Script(140);
850 pub const MeroiticCursive: Script = Script(141);
851 pub const MeroiticHieroglyphs: Script = Script(86);
852 pub const Miao: Script = Script(92);
853 pub const Modi: Script = Script(163);
854 pub const Mongolian: Script = Script(27);
855 pub const Mro: Script = Script(149);
856 pub const Multani: Script = Script(164);
857 pub const Myanmar: Script = Script(28);
858 pub const Nabataean: Script = Script(143);
859 pub const NagMundari: Script = Script(199);
860 pub const Nandinagari: Script = Script(187);
861 pub const Nastaliq: Script = Script(200);
862 pub const Newa: Script = Script(170);
863 pub const NewTaiLue: Script = Script(59);
864 pub const Nko: Script = Script(87);
865 pub const Nushu: Script = Script(150);
866 pub const NyiakengPuachueHmong: Script = Script(186);
867 pub const Ogham: Script = Script(29);
868 pub const OlChiki: Script = Script(109);
869 pub const OldHungarian: Script = Script(76);
870 pub const OldItalic: Script = Script(30);
871 pub const OldNorthArabian: Script = Script(142);
872 pub const OldPermic: Script = Script(89);
873 pub const OldPersian: Script = Script(61);
874 pub const OldSogdian: Script = Script(184);
875 pub const OldSouthArabian: Script = Script(133);
876 pub const OldTurkic: Script = Script(88);
877 pub const OldUyghur: Script = Script(194);
878 pub const OlOnal: Script = Script(204);
879 pub const Oriya: Script = Script(31);
880 pub const Osage: Script = Script(171);
881 pub const Osmanya: Script = Script(50);
882 pub const PahawhHmong: Script = Script(75);
883 pub const Palmyrene: Script = Script(144);
884 pub const PauCinHau: Script = Script(165);
885 pub const PhagsPa: Script = Script(90);
886 pub const Phoenician: Script = Script(91);
887 pub const PsalterPahlavi: Script = Script(123);
888 pub const Rejang: Script = Script(110);
889 pub const Runic: Script = Script(32);
890 pub const Samaritan: Script = Script(126);
891 pub const Saurashtra: Script = Script(111);
892 pub const Sharada: Script = Script(151);
893 pub const Shavian: Script = Script(51);
894 pub const Siddham: Script = Script(166);
895 pub const Sidetic: Script = Script(209);
896 pub const SignWriting: Script = Script(112);
897 pub const Sinhala: Script = Script(33);
898 pub const Sogdian: Script = Script(183);
899 pub const SoraSompeng: Script = Script(152);
900 pub const Soyombo: Script = Script(176);
901 pub const Sundanese: Script = Script(113);
902 pub const Sunuwar: Script = Script(205);
903 pub const SylotiNagri: Script = Script(58);
904 pub const Syriac: Script = Script(34);
905 pub const Tagalog: Script = Script(42);
906 pub const Tagbanwa: Script = Script(45);
907 pub const TaiLe: Script = Script(52);
908 pub const TaiTham: Script = Script(106);
909 pub const TaiViet: Script = Script(127);
910 pub const TaiYo: Script = Script(210);
911 pub const Takri: Script = Script(153);
912 pub const Tamil: Script = Script(35);
913 pub const Tangsa: Script = Script(195);
914 pub const Tangut: Script = Script(154);
915 pub const Telugu: Script = Script(36);
916 pub const Thaana: Script = Script(37);
917 pub const Thai: Script = Script(38);
918 pub const Tibetan: Script = Script(39);
919 pub const Tifinagh: Script = Script(60);
920 pub const Tirhuta: Script = Script(158);
921 pub const Todhri: Script = Script(206);
922 pub const TolongSiki: Script = Script(211);
923 pub const Toto: Script = Script(196);
924 pub const TuluTigalari: Script = Script(207);
925 pub const Ugaritic: Script = Script(53);
926 pub const Unknown: Script = Script(103);
927 pub const Vai: Script = Script(99);
928 pub const Vithkuqi: Script = Script(197);
929 pub const Wancho: Script = Script(188);
930 pub const WarangCiti: Script = Script(146);
931 pub const Yezidi: Script = Script(192);
932 pub const Yi: Script = Script(41);
933 pub const ZanabazarSquare: Script = Script(177);
934}
935#[test]
936fn script_consts();
937}
938
939impl Script {
940 #[doc(hidden)]
942 #[allow(non_upper_case_globals)]
943 #[deprecated]
944 pub const Chisoi: Script = Self(60_000);
946}
947
948#[cfg(feature = "compiled_data")]
950impl From<Script> for icu_locale_core::subtags::Script {
951 fn from(value: Script) -> Self {
952 crate::PropertyNamesShort::new()
953 .get_locale_script(value)
954 .unwrap_or(const {
use ::icu_locale_core::subtags::Script;
match Script::try_from_utf8("Zzzz".as_bytes()) {
Ok(r) => r,
_ => {
::core::panicking::panic_fmt(format_args!("Invalid subtags::Script: Zzzz"));
}
}
}icu_locale_core::subtags::script!("Zzzz"))
955 }
956}
957
958#[cfg(feature = "compiled_data")]
960impl From<icu_locale_core::subtags::Script> for Script {
961 fn from(value: icu_locale_core::subtags::Script) -> Self {
962 crate::PropertyParser::new()
963 .get_strict(value.as_str())
964 .unwrap_or(Self::Unknown)
965 }
966}
967
968impl 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! {
969 name: "Script";
970 short_name: "sc";
971 ident: Script;
972 data_marker: crate::provider::PropertyEnumScriptV1;
973 singleton: SINGLETON_PROPERTY_ENUM_SCRIPT_V1;
974 ule_ty: <u16 as zerovec::ule::AsULE>::ULE;
975}
976
977#[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)]
999#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1000#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1002pub struct HangulSyllableType(pub(crate) u8);
1003
1004impl HangulSyllableType {
1005 pub const fn to_icu4c_value(self) -> u8 {
1007 self.0
1008 }
1009 pub const fn from_icu4c_value(value: u8) -> Self {
1011 Self(value)
1012 }
1013}
1014
1015#[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! {
1016#[allow(non_upper_case_globals)]
1017impl HangulSyllableType {
1018 pub const NotApplicable: HangulSyllableType = HangulSyllableType(0);
1020 pub const LeadingJamo: HangulSyllableType = HangulSyllableType(1);
1022 pub const VowelJamo: HangulSyllableType = HangulSyllableType(2);
1024 pub const TrailingJamo: HangulSyllableType = HangulSyllableType(3);
1026 pub const LeadingVowelSyllable: HangulSyllableType = HangulSyllableType(4);
1028 pub const LeadingVowelTrailingSyllable: HangulSyllableType = HangulSyllableType(5);
1030}
1031#[test]
1032fn hangul_syllable_type_consts();
1033}
1034
1035impl 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! {
1036 name: "Hangul_Syllable_Type";
1037 short_name: "hst";
1038 ident: HangulSyllableType;
1039 data_marker: crate::provider::PropertyEnumHangulSyllableTypeV1;
1040 singleton: SINGLETON_PROPERTY_ENUM_HANGUL_SYLLABLE_TYPE_V1;
1041 ule_ty: u8;
1042
1043}
1044
1045#[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)]
1065#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1066#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1068pub struct EastAsianWidth(pub(crate) u8);
1069
1070impl EastAsianWidth {
1071 pub const fn to_icu4c_value(self) -> u8 {
1073 self.0
1074 }
1075 pub const fn from_icu4c_value(value: u8) -> Self {
1077 Self(value)
1078 }
1079}
1080
1081#[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! {
1082#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1084impl EastAsianWidth {
1085 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); }
1092#[test]
1093fn east_asian_width_consts();
1094}
1095
1096impl 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! {
1097 name: "East_Asian_Width";
1098 short_name: "ea";
1099 ident: EastAsianWidth;
1100 data_marker: crate::provider::PropertyEnumEastAsianWidthV1;
1101 singleton: SINGLETON_PROPERTY_ENUM_EAST_ASIAN_WIDTH_V1;
1102 ule_ty: u8;
1103}
1104
1105#[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)]
1129#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1130#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1132pub struct LineBreak(pub(crate) u8);
1133
1134impl LineBreak {
1135 pub const fn to_icu4c_value(self) -> u8 {
1137 self.0
1138 }
1139 pub const fn from_icu4c_value(value: u8) -> Self {
1141 Self(value)
1142 }
1143}
1144
1145#[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! {
1146#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1148impl LineBreak {
1149 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); }
1203#[test]
1204fn line_break_consts();
1205}
1206
1207impl 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! {
1208 name: "Line_Break";
1209 short_name: "lb";
1210 ident: LineBreak;
1211 data_marker: crate::provider::PropertyEnumLineBreakV1;
1212 singleton: SINGLETON_PROPERTY_ENUM_LINE_BREAK_V1;
1213 ule_ty: u8;
1214}
1215
1216#[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)]
1239#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1240#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1242pub struct GraphemeClusterBreak(pub(crate) u8);
1243
1244impl GraphemeClusterBreak {
1245 pub const fn to_icu4c_value(self) -> u8 {
1247 self.0
1248 }
1249 pub const fn from_icu4c_value(value: u8) -> Self {
1251 Self(value)
1252 }
1253}
1254
1255#[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! {
1256#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1258impl GraphemeClusterBreak {
1259 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); }
1282#[test]
1283fn gcb_consts();
1284}
1285
1286impl 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! {
1287 name: "Grapheme_Cluster_Break";
1288 short_name: "GCB";
1289 ident: GraphemeClusterBreak;
1290 data_marker: crate::provider::PropertyEnumGraphemeClusterBreakV1;
1291 singleton: SINGLETON_PROPERTY_ENUM_GRAPHEME_CLUSTER_BREAK_V1;
1292 ule_ty: u8;
1293}
1294
1295#[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)]
1318#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1319#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1321pub struct WordBreak(pub(crate) u8);
1322
1323impl WordBreak {
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 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! {
1335#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1337impl WordBreak {
1338 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); }
1366#[test]
1367fn word_break_consts();
1368}
1369
1370impl 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! {
1371 name: "Word_Break";
1372 short_name: "WB";
1373 ident: WordBreak;
1374 data_marker: crate::provider::PropertyEnumWordBreakV1;
1375 singleton: SINGLETON_PROPERTY_ENUM_WORD_BREAK_V1;
1376 ule_ty: u8;
1377}
1378
1379#[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)]
1402#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1403#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1405pub struct SentenceBreak(pub(crate) u8);
1406
1407impl SentenceBreak {
1408 pub const fn to_icu4c_value(self) -> u8 {
1410 self.0
1411 }
1412 pub const fn from_icu4c_value(value: u8) -> Self {
1414 Self(value)
1415 }
1416}
1417
1418#[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! {
1419#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1421impl SentenceBreak {
1422 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); }
1438#[test]
1439fn sentence_break_consts();
1440}
1441
1442impl 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! {
1443 name: "Sentence_Break";
1444 short_name: "SB";
1445 ident: SentenceBreak;
1446 data_marker: crate::provider::PropertyEnumSentenceBreakV1;
1447 singleton: SINGLETON_PROPERTY_ENUM_SENTENCE_BREAK_V1;
1448 ule_ty: u8;
1449}
1450
1451#[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)]
1481#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1482#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1484pub struct CanonicalCombiningClass(pub(crate) u8);
1485
1486impl CanonicalCombiningClass {
1487 pub const fn to_icu4c_value(self) -> u8 {
1489 self.0
1490 }
1491 pub const fn from_icu4c_value(value: u8) -> Self {
1493 Self(value)
1494 }
1495}
1496
1497#[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! {
1498#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1501impl CanonicalCombiningClass {
1502 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); }
1561#[test]
1562fn ccc_consts();
1563}
1564
1565impl 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! {
1566 name: "Canonical_Combining_Class";
1567 short_name: "ccc";
1568 ident: CanonicalCombiningClass;
1569 data_marker: crate::provider::PropertyEnumCanonicalCombiningClassV1;
1570 singleton: SINGLETON_PROPERTY_ENUM_CANONICAL_COMBINING_CLASS_V1;
1571 ule_ty: u8;
1572}
1573
1574#[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)]
1601#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1602#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1604pub struct IndicConjunctBreak(pub(crate) u8);
1605
1606impl IndicConjunctBreak {
1607 pub const fn to_icu4c_value(self) -> u8 {
1609 self.0
1610 }
1611 pub const fn from_icu4c_value(value: u8) -> Self {
1613 Self(value)
1614 }
1615}
1616
1617#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl IndicConjunctBreak {
pub const None: IndicConjunctBreak = IndicConjunctBreak(0);
pub const Consonant: IndicConjunctBreak = IndicConjunctBreak(1);
pub const Extend: IndicConjunctBreak = IndicConjunctBreak(2);
pub const Linker: IndicConjunctBreak = IndicConjunctBreak(3);
pub const ALL_VALUES: &'static [IndicConjunctBreak] =
&[IndicConjunctBreak::None, IndicConjunctBreak::Consonant,
IndicConjunctBreak::Extend, IndicConjunctBreak::Linker];
}
impl From<IndicConjunctBreak> for u16 {
fn from(other: IndicConjunctBreak) -> Self { other.0 as u16 }
}create_const_array! {
1618#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1620impl IndicConjunctBreak {
1621 pub const None: IndicConjunctBreak = IndicConjunctBreak(0);
1622 pub const Consonant: IndicConjunctBreak = IndicConjunctBreak(1);
1623 pub const Extend: IndicConjunctBreak = IndicConjunctBreak(2);
1624 pub const Linker: IndicConjunctBreak = IndicConjunctBreak(3);
1625}
1626#[test]
1627fn indic_conjunct_break_consts();
1628}
1629
1630impl 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! {
1631 name: "Indic_Conjunct_Break";
1632 short_name: "InCB";
1633 ident: IndicConjunctBreak;
1634 data_marker: crate::provider::PropertyEnumIndicConjunctBreakV1;
1635 singleton: SINGLETON_PROPERTY_ENUM_INDIC_CONJUNCT_BREAK_V1;
1636 ule_ty: u8;
1637}
1638
1639#[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)]
1658#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1659#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1661pub struct IndicSyllabicCategory(pub(crate) u8);
1662
1663impl IndicSyllabicCategory {
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 IndicSyllabicCategory {
pub const Other: IndicSyllabicCategory = IndicSyllabicCategory(0);
pub const Avagraha: IndicSyllabicCategory = IndicSyllabicCategory(1);
pub const Bindu: IndicSyllabicCategory = IndicSyllabicCategory(2);
pub const BrahmiJoiningNumber: IndicSyllabicCategory =
IndicSyllabicCategory(3);
pub const CantillationMark: IndicSyllabicCategory =
IndicSyllabicCategory(4);
pub const Consonant: IndicSyllabicCategory = IndicSyllabicCategory(5);
pub const ConsonantDead: IndicSyllabicCategory = IndicSyllabicCategory(6);
pub const ConsonantFinal: IndicSyllabicCategory =
IndicSyllabicCategory(7);
pub const ConsonantHeadLetter: IndicSyllabicCategory =
IndicSyllabicCategory(8);
pub const ConsonantInitialPostfixed: IndicSyllabicCategory =
IndicSyllabicCategory(9);
pub const ConsonantKiller: IndicSyllabicCategory =
IndicSyllabicCategory(10);
pub const ConsonantMedial: IndicSyllabicCategory =
IndicSyllabicCategory(11);
pub const ConsonantPlaceholder: IndicSyllabicCategory =
IndicSyllabicCategory(12);
pub const ConsonantPrecedingRepha: IndicSyllabicCategory =
IndicSyllabicCategory(13);
pub const ConsonantPrefixed: IndicSyllabicCategory =
IndicSyllabicCategory(14);
pub const ConsonantSubjoined: IndicSyllabicCategory =
IndicSyllabicCategory(15);
pub const ConsonantSucceedingRepha: IndicSyllabicCategory =
IndicSyllabicCategory(16);
pub const ConsonantWithStacker: IndicSyllabicCategory =
IndicSyllabicCategory(17);
pub const GeminationMark: IndicSyllabicCategory =
IndicSyllabicCategory(18);
pub const InvisibleStacker: IndicSyllabicCategory =
IndicSyllabicCategory(19);
pub const Joiner: IndicSyllabicCategory = IndicSyllabicCategory(20);
pub const ModifyingLetter: IndicSyllabicCategory =
IndicSyllabicCategory(21);
pub const NonJoiner: IndicSyllabicCategory = IndicSyllabicCategory(22);
pub const Nukta: IndicSyllabicCategory = IndicSyllabicCategory(23);
pub const Number: IndicSyllabicCategory = IndicSyllabicCategory(24);
pub const NumberJoiner: IndicSyllabicCategory = IndicSyllabicCategory(25);
pub const PureKiller: IndicSyllabicCategory = IndicSyllabicCategory(26);
pub const RegisterShifter: IndicSyllabicCategory =
IndicSyllabicCategory(27);
pub const SyllableModifier: IndicSyllabicCategory =
IndicSyllabicCategory(28);
pub const ToneLetter: IndicSyllabicCategory = IndicSyllabicCategory(29);
pub const ToneMark: IndicSyllabicCategory = IndicSyllabicCategory(30);
pub const Virama: IndicSyllabicCategory = IndicSyllabicCategory(31);
pub const Visarga: IndicSyllabicCategory = IndicSyllabicCategory(32);
pub const Vowel: IndicSyllabicCategory = IndicSyllabicCategory(33);
pub const VowelDependent: IndicSyllabicCategory =
IndicSyllabicCategory(34);
pub const VowelIndependent: IndicSyllabicCategory =
IndicSyllabicCategory(35);
pub const ReorderingKiller: IndicSyllabicCategory =
IndicSyllabicCategory(36);
pub const ALL_VALUES: &'static [IndicSyllabicCategory] =
&[IndicSyllabicCategory::Other, IndicSyllabicCategory::Avagraha,
IndicSyllabicCategory::Bindu,
IndicSyllabicCategory::BrahmiJoiningNumber,
IndicSyllabicCategory::CantillationMark,
IndicSyllabicCategory::Consonant,
IndicSyllabicCategory::ConsonantDead,
IndicSyllabicCategory::ConsonantFinal,
IndicSyllabicCategory::ConsonantHeadLetter,
IndicSyllabicCategory::ConsonantInitialPostfixed,
IndicSyllabicCategory::ConsonantKiller,
IndicSyllabicCategory::ConsonantMedial,
IndicSyllabicCategory::ConsonantPlaceholder,
IndicSyllabicCategory::ConsonantPrecedingRepha,
IndicSyllabicCategory::ConsonantPrefixed,
IndicSyllabicCategory::ConsonantSubjoined,
IndicSyllabicCategory::ConsonantSucceedingRepha,
IndicSyllabicCategory::ConsonantWithStacker,
IndicSyllabicCategory::GeminationMark,
IndicSyllabicCategory::InvisibleStacker,
IndicSyllabicCategory::Joiner,
IndicSyllabicCategory::ModifyingLetter,
IndicSyllabicCategory::NonJoiner,
IndicSyllabicCategory::Nukta, IndicSyllabicCategory::Number,
IndicSyllabicCategory::NumberJoiner,
IndicSyllabicCategory::PureKiller,
IndicSyllabicCategory::RegisterShifter,
IndicSyllabicCategory::SyllableModifier,
IndicSyllabicCategory::ToneLetter,
IndicSyllabicCategory::ToneMark,
IndicSyllabicCategory::Virama,
IndicSyllabicCategory::Visarga,
IndicSyllabicCategory::Vowel,
IndicSyllabicCategory::VowelDependent,
IndicSyllabicCategory::VowelIndependent,
IndicSyllabicCategory::ReorderingKiller];
}
impl From<IndicSyllabicCategory> for u16 {
fn from(other: IndicSyllabicCategory) -> Self { other.0 as u16 }
}create_const_array! {
1675#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1677impl IndicSyllabicCategory {
1678 pub const Other: IndicSyllabicCategory = IndicSyllabicCategory(0);
1679 pub const Avagraha: IndicSyllabicCategory = IndicSyllabicCategory(1);
1680 pub const Bindu: IndicSyllabicCategory = IndicSyllabicCategory(2);
1681 pub const BrahmiJoiningNumber: IndicSyllabicCategory = IndicSyllabicCategory(3);
1682 pub const CantillationMark: IndicSyllabicCategory = IndicSyllabicCategory(4);
1683 pub const Consonant: IndicSyllabicCategory = IndicSyllabicCategory(5);
1684 pub const ConsonantDead: IndicSyllabicCategory = IndicSyllabicCategory(6);
1685 pub const ConsonantFinal: IndicSyllabicCategory = IndicSyllabicCategory(7);
1686 pub const ConsonantHeadLetter: IndicSyllabicCategory = IndicSyllabicCategory(8);
1687 pub const ConsonantInitialPostfixed: IndicSyllabicCategory = IndicSyllabicCategory(9);
1688 pub const ConsonantKiller: IndicSyllabicCategory = IndicSyllabicCategory(10);
1689 pub const ConsonantMedial: IndicSyllabicCategory = IndicSyllabicCategory(11);
1690 pub const ConsonantPlaceholder: IndicSyllabicCategory = IndicSyllabicCategory(12);
1691 pub const ConsonantPrecedingRepha: IndicSyllabicCategory = IndicSyllabicCategory(13);
1692 pub const ConsonantPrefixed: IndicSyllabicCategory = IndicSyllabicCategory(14);
1693 pub const ConsonantSubjoined: IndicSyllabicCategory = IndicSyllabicCategory(15);
1694 pub const ConsonantSucceedingRepha: IndicSyllabicCategory = IndicSyllabicCategory(16);
1695 pub const ConsonantWithStacker: IndicSyllabicCategory = IndicSyllabicCategory(17);
1696 pub const GeminationMark: IndicSyllabicCategory = IndicSyllabicCategory(18);
1697 pub const InvisibleStacker: IndicSyllabicCategory = IndicSyllabicCategory(19);
1698 pub const Joiner: IndicSyllabicCategory = IndicSyllabicCategory(20);
1699 pub const ModifyingLetter: IndicSyllabicCategory = IndicSyllabicCategory(21);
1700 pub const NonJoiner: IndicSyllabicCategory = IndicSyllabicCategory(22);
1701 pub const Nukta: IndicSyllabicCategory = IndicSyllabicCategory(23);
1702 pub const Number: IndicSyllabicCategory = IndicSyllabicCategory(24);
1703 pub const NumberJoiner: IndicSyllabicCategory = IndicSyllabicCategory(25);
1704 pub const PureKiller: IndicSyllabicCategory = IndicSyllabicCategory(26);
1705 pub const RegisterShifter: IndicSyllabicCategory = IndicSyllabicCategory(27);
1706 pub const SyllableModifier: IndicSyllabicCategory = IndicSyllabicCategory(28);
1707 pub const ToneLetter: IndicSyllabicCategory = IndicSyllabicCategory(29);
1708 pub const ToneMark: IndicSyllabicCategory = IndicSyllabicCategory(30);
1709 pub const Virama: IndicSyllabicCategory = IndicSyllabicCategory(31);
1710 pub const Visarga: IndicSyllabicCategory = IndicSyllabicCategory(32);
1711 pub const Vowel: IndicSyllabicCategory = IndicSyllabicCategory(33);
1712 pub const VowelDependent: IndicSyllabicCategory = IndicSyllabicCategory(34);
1713 pub const VowelIndependent: IndicSyllabicCategory = IndicSyllabicCategory(35);
1714 pub const ReorderingKiller: IndicSyllabicCategory = IndicSyllabicCategory(36);
1715}
1716#[test]
1717fn indic_syllabic_category_consts();
1718}
1719
1720impl 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! {
1721 name: "Indic_Syllabic_Category";
1722 short_name: "InSC";
1723 ident: IndicSyllabicCategory;
1724 data_marker: crate::provider::PropertyEnumIndicSyllabicCategoryV1;
1725 singleton: SINGLETON_PROPERTY_ENUM_INDIC_SYLLABIC_CATEGORY_V1;
1726 ule_ty: u8;
1727}
1728
1729#[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)]
1749#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1750#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1752pub struct JoiningType(pub(crate) u8);
1753
1754impl JoiningType {
1755 pub const fn to_icu4c_value(self) -> u8 {
1757 self.0
1758 }
1759 pub const fn from_icu4c_value(value: u8) -> Self {
1761 Self(value)
1762 }
1763}
1764
1765#[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! {
1766#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1768impl JoiningType {
1769 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); }
1776#[test]
1777fn joining_type_consts();
1778}
1779
1780impl 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! {
1781 name: "Joining_Type";
1782 short_name: "jt";
1783 ident: JoiningType;
1784 data_marker: crate::provider::PropertyEnumJoiningTypeV1;
1785 singleton: SINGLETON_PROPERTY_ENUM_JOINING_TYPE_V1;
1786 ule_ty: u8;
1787}
1788
1789#[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)]
1817#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1818#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1820pub struct VerticalOrientation(pub(crate) u8);
1821
1822impl VerticalOrientation {
1823 pub const fn to_icu4c_value(self) -> u8 {
1825 self.0
1826 }
1827 pub const fn from_icu4c_value(value: u8) -> Self {
1829 Self(value)
1830 }
1831}
1832
1833#[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! {
1834#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1836impl VerticalOrientation {
1837 pub const Rotated: VerticalOrientation = VerticalOrientation(0); pub const TransformedRotated: VerticalOrientation = VerticalOrientation(1); pub const TransformedUpright: VerticalOrientation = VerticalOrientation(2); pub const Upright: VerticalOrientation = VerticalOrientation(3); }
1842#[test]
1843fn vertical_orientation_consts();
1844}
1845
1846impl 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! {
1847 name: "Vertical_Orientation";
1848 short_name: "vo";
1849 ident: VerticalOrientation;
1850 data_marker: crate::provider::PropertyEnumVerticalOrientationV1;
1851 singleton: SINGLETON_PROPERTY_ENUM_VERTICAL_ORIENTATION_V1;
1852 ule_ty: u8;
1853}
1854
1855pub use crate::code_point_set::BinaryProperty;
1856
1857macro_rules! make_binary_property {
1858 (
1859 name: $name:literal;
1860 short_name: $short_name:literal;
1861 ident: $ident:ident;
1862 data_marker: $data_marker:ty;
1863 singleton: $singleton:ident;
1864 $(#[$doc:meta])+
1865 ) => {
1866 $(#[$doc])+
1867 #[derive(Debug)]
1868 #[non_exhaustive]
1869 pub struct $ident;
1870
1871 impl crate::private::Sealed for $ident {}
1872
1873 impl BinaryProperty for $ident {
1874 type DataMarker = $data_marker;
1875 #[cfg(feature = "compiled_data")]
1876 const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
1877 &crate::provider::Baked::$singleton;
1878 const NAME: &'static [u8] = $name.as_bytes();
1879 const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
1880 }
1881 };
1882}
1883
1884#[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! {
1885 name: "ASCII_Hex_Digit";
1886 short_name: "AHex";
1887 ident: AsciiHexDigit;
1888 data_marker: crate::provider::PropertyBinaryAsciiHexDigitV1;
1889 singleton: SINGLETON_PROPERTY_BINARY_ASCII_HEX_DIGIT_V1;
1890 }
1906
1907#[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! {
1908 name: "alnum";
1909 short_name: "alnum";
1910 ident: Alnum;
1911 data_marker: crate::provider::PropertyBinaryAlnumV1;
1912 singleton: SINGLETON_PROPERTY_BINARY_ALNUM_V1;
1913 }
1917
1918#[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! {
1919 name: "Alphabetic";
1920 short_name: "Alpha";
1921 ident: Alphabetic;
1922 data_marker: crate::provider::PropertyBinaryAlphabeticV1;
1923 singleton: SINGLETON_PROPERTY_BINARY_ALPHABETIC_V1;
1924 }
1941
1942#[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! {
1943 name: "Bidi_Control";
1944 short_name: "Bidi_C";
1945 ident: BidiControl;
1946 data_marker: crate::provider::PropertyBinaryBidiControlV1;
1947 singleton: SINGLETON_PROPERTY_BINARY_BIDI_CONTROL_V1;
1948 }
1964
1965#[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! {
1966 name: "Bidi_Mirrored";
1967 short_name: "Bidi_M";
1968 ident: BidiMirrored;
1969 data_marker: crate::provider::PropertyBinaryBidiMirroredV1;
1970 singleton: SINGLETON_PROPERTY_BINARY_BIDI_MIRRORED_V1;
1971 }
1988
1989#[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! {
1990 name: "blank";
1991 short_name: "blank";
1992 ident: Blank;
1993 data_marker: crate::provider::PropertyBinaryBlankV1;
1994 singleton: SINGLETON_PROPERTY_BINARY_BLANK_V1;
1995 }
1998
1999#[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! {
2000 name: "Cased";
2001 short_name: "Cased";
2002 ident: Cased;
2003 data_marker: crate::provider::PropertyBinaryCasedV1;
2004 singleton: SINGLETON_PROPERTY_BINARY_CASED_V1;
2005 }
2020
2021#[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! {
2022 name: "Case_Ignorable";
2023 short_name: "CI";
2024 ident: CaseIgnorable;
2025 data_marker: crate::provider::PropertyBinaryCaseIgnorableV1;
2026 singleton: SINGLETON_PROPERTY_BINARY_CASE_IGNORABLE_V1;
2027 }
2042
2043#[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! {
2044 name: "Full_Composition_Exclusion";
2045 short_name: "Comp_Ex";
2046 ident: FullCompositionExclusion;
2047 data_marker: crate::provider::PropertyBinaryFullCompositionExclusionV1;
2048 singleton: SINGLETON_PROPERTY_BINARY_FULL_COMPOSITION_EXCLUSION_V1;
2049 }
2054
2055#[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! {
2056 name: "Changes_When_Casefolded";
2057 short_name: "CWCF";
2058 ident: ChangesWhenCasefolded;
2059 data_marker: crate::provider::PropertyBinaryChangesWhenCasefoldedV1;
2060 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEFOLDED_V1;
2061 }
2076
2077#[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! {
2078 name: "Changes_When_Casemapped";
2079 short_name: "CWCM";
2080 ident: ChangesWhenCasemapped;
2081 data_marker: crate::provider::PropertyBinaryChangesWhenCasemappedV1;
2082 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEMAPPED_V1;
2083 }
2086
2087#[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! {
2088 name: "Changes_When_NFKC_Casefolded";
2089 short_name: "CWKCF";
2090 ident: ChangesWhenNfkcCasefolded;
2091 data_marker: crate::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1;
2092 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_NFKC_CASEFOLDED_V1;
2093 }
2108
2109#[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! {
2110 name: "Changes_When_Lowercased";
2111 short_name: "CWL";
2112 ident: ChangesWhenLowercased;
2113 data_marker: crate::provider::PropertyBinaryChangesWhenLowercasedV1;
2114 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_LOWERCASED_V1;
2115 }
2130
2131#[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! {
2132 name: "Changes_When_Titlecased";
2133 short_name: "CWT";
2134 ident: ChangesWhenTitlecased;
2135 data_marker: crate::provider::PropertyBinaryChangesWhenTitlecasedV1;
2136 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_TITLECASED_V1;
2137 }
2152
2153#[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! {
2154 name: "Changes_When_Uppercased";
2155 short_name: "CWU";
2156 ident: ChangesWhenUppercased;
2157 data_marker: crate::provider::PropertyBinaryChangesWhenUppercasedV1;
2158 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_UPPERCASED_V1;
2159 }
2174
2175#[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! {
2176 name: "Dash";
2177 short_name: "Dash";
2178 ident: Dash;
2179 data_marker: crate::provider::PropertyBinaryDashV1;
2180 singleton: SINGLETON_PROPERTY_BINARY_DASH_V1;
2181 }
2198
2199#[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! {
2200 name: "Deprecated";
2201 short_name: "Dep";
2202 ident: Deprecated;
2203 data_marker: crate::provider::PropertyBinaryDeprecatedV1;
2204 singleton: SINGLETON_PROPERTY_BINARY_DEPRECATED_V1;
2205 }
2223
2224#[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! {
2225 name: "Default_Ignorable_Code_Point";
2226 short_name: "DI";
2227 ident: DefaultIgnorableCodePoint;
2228 data_marker: crate::provider::PropertyBinaryDefaultIgnorableCodePointV1;
2229 singleton: SINGLETON_PROPERTY_BINARY_DEFAULT_IGNORABLE_CODE_POINT_V1;
2230 }
2250
2251#[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! {
2252 name: "Diacritic";
2253 short_name: "Dia";
2254 ident: Diacritic;
2255 data_marker: crate::provider::PropertyBinaryDiacriticV1;
2256 singleton: SINGLETON_PROPERTY_BINARY_DIACRITIC_V1;
2257 }
2272
2273#[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! {
2274 name: "Emoji_Modifier_Base";
2275 short_name: "EBase";
2276 ident: EmojiModifierBase;
2277 data_marker: crate::provider::PropertyBinaryEmojiModifierBaseV1;
2278 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_BASE_V1;
2279 }
2294
2295#[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! {
2296 name: "Emoji_Component";
2297 short_name: "EComp";
2298 ident: EmojiComponent;
2299 data_marker: crate::provider::PropertyBinaryEmojiComponentV1;
2300 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_COMPONENT_V1;
2301 }
2319
2320#[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! {
2321 name: "Emoji_Modifier";
2322 short_name: "EMod";
2323 ident: EmojiModifier;
2324 data_marker: crate::provider::PropertyBinaryEmojiModifierV1;
2325 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_V1;
2326 }
2341
2342#[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! {
2343 name: "Emoji";
2344 short_name: "Emoji";
2345 ident: Emoji;
2346 data_marker: crate::provider::PropertyBinaryEmojiV1;
2347 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_V1;
2348 }
2363
2364#[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! {
2365 name: "Emoji_Presentation";
2366 short_name: "EPres";
2367 ident: EmojiPresentation;
2368 data_marker: crate::provider::PropertyBinaryEmojiPresentationV1;
2369 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_PRESENTATION_V1;
2370 }
2385
2386#[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! {
2387 name: "Extender";
2388 short_name: "Ext";
2389 ident: Extender;
2390 data_marker: crate::provider::PropertyBinaryExtenderV1;
2391 singleton: SINGLETON_PROPERTY_BINARY_EXTENDER_V1;
2392 }
2409
2410#[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! {
2411 name: "Extended_Pictographic";
2412 short_name: "ExtPict";
2413 ident: ExtendedPictographic;
2414 data_marker: crate::provider::PropertyBinaryExtendedPictographicV1;
2415 singleton: SINGLETON_PROPERTY_BINARY_EXTENDED_PICTOGRAPHIC_V1;
2416 }
2432
2433#[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! {
2434 name: "graph";
2435 short_name: "graph";
2436 ident: Graph;
2437 data_marker: crate::provider::PropertyBinaryGraphV1;
2438 singleton: SINGLETON_PROPERTY_BINARY_GRAPH_V1;
2439 }
2444
2445#[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! {
2446 name: "Grapheme_Base";
2447 short_name: "Gr_Base";
2448 ident: GraphemeBase;
2449 data_marker: crate::provider::PropertyBinaryGraphemeBaseV1;
2450 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_BASE_V1;
2451 }
2470
2471#[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! {
2472 name: "Grapheme_Extend";
2473 short_name: "Gr_Ext";
2474 ident: GraphemeExtend;
2475 data_marker: crate::provider::PropertyBinaryGraphemeExtendV1;
2476 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_EXTEND_V1;
2477 }
2496
2497#[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! {
2498 name: "Grapheme_Link";
2499 short_name: "Gr_Link";
2500 ident: GraphemeLink;
2501 data_marker: crate::provider::PropertyBinaryGraphemeLinkV1;
2502 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_LINK_V1;
2503 }
2508
2509#[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! {
2510 name: "Hex_Digit";
2511 short_name: "Hex";
2512 ident: HexDigit;
2513 data_marker: crate::provider::PropertyBinaryHexDigitV1;
2514 singleton: SINGLETON_PROPERTY_BINARY_HEX_DIGIT_V1;
2515 }
2534
2535#[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! {
2536 name: "Hyphen";
2537 short_name: "Hyphen";
2538 ident: Hyphen;
2539 data_marker: crate::provider::PropertyBinaryHyphenV1;
2540 singleton: SINGLETON_PROPERTY_BINARY_HYPHEN_V1;
2541 }
2546
2547#[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! {
2548 name: "ID_Compat_Math_Continue";
2549 short_name: "ID_Compat_Math_Continue";
2550 ident: IdCompatMathContinue;
2551 data_marker: crate::provider::PropertyBinaryIdCompatMathContinueV1;
2552 singleton: SINGLETON_PROPERTY_BINARY_ID_COMPAT_MATH_CONTINUE_V1;
2553 }
2555
2556#[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! {
2557 name: "ID_Compat_Math_Start";
2558 short_name: "ID_Compat_Math_Start";
2559 ident: IdCompatMathStart;
2560 data_marker: crate::provider::PropertyBinaryIdCompatMathStartV1;
2561 singleton: SINGLETON_PROPERTY_BINARY_ID_COMPAT_MATH_START_V1;
2562 }
2564
2565#[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! {
2566 name: "ID_Continue";
2567 short_name: "IDC";
2568 ident: IdContinue;
2569 data_marker: crate::provider::PropertyBinaryIdContinueV1;
2570 singleton: SINGLETON_PROPERTY_BINARY_ID_CONTINUE_V1;
2571 }
2594
2595#[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! {
2596 name: "Ideographic";
2597 short_name: "Ideo";
2598 ident: Ideographic;
2599 data_marker: crate::provider::PropertyBinaryIdeographicV1;
2600 singleton: SINGLETON_PROPERTY_BINARY_IDEOGRAPHIC_V1;
2601 }
2616
2617#[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! {
2618 name: "ID_Start";
2619 short_name: "IDS";
2620 ident: IdStart;
2621 data_marker: crate::provider::PropertyBinaryIdStartV1;
2622 singleton: SINGLETON_PROPERTY_BINARY_ID_START_V1;
2623 }
2645
2646#[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! {
2647 name: "IDS_Binary_Operator";
2648 short_name: "IDSB";
2649 ident: IdsBinaryOperator;
2650 data_marker: crate::provider::PropertyBinaryIdsBinaryOperatorV1;
2651 singleton: SINGLETON_PROPERTY_BINARY_IDS_BINARY_OPERATOR_V1;
2652 }
2666
2667#[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! {
2668 name: "IDS_Trinary_Operator";
2669 short_name: "IDST";
2670 ident: IdsTrinaryOperator;
2671 data_marker: crate::provider::PropertyBinaryIdsTrinaryOperatorV1;
2672 singleton: SINGLETON_PROPERTY_BINARY_IDS_TRINARY_OPERATOR_V1;
2673 }
2690
2691#[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! {
2692 name: "IDS_Unary_Operator";
2693 short_name: "IDSU";
2694 ident: IdsUnaryOperator;
2695 data_marker: crate::provider::PropertyBinaryIdsUnaryOperatorV1;
2696 singleton: SINGLETON_PROPERTY_BINARY_IDS_UNARY_OPERATOR_V1;
2697 }
2699
2700#[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! {
2701 name: "Join_Control";
2702 short_name: "Join_C";
2703 ident: JoinControl;
2704 data_marker: crate::provider::PropertyBinaryJoinControlV1;
2705 singleton: SINGLETON_PROPERTY_BINARY_JOIN_CONTROL_V1;
2706 }
2722
2723#[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! {
2724 name: "Logical_Order_Exception";
2725 short_name: "LOE";
2726 ident: LogicalOrderException;
2727 data_marker: crate::provider::PropertyBinaryLogicalOrderExceptionV1;
2728 singleton: SINGLETON_PROPERTY_BINARY_LOGICAL_ORDER_EXCEPTION_V1;
2729 }
2743
2744#[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! {
2745 name: "Lowercase";
2746 short_name: "Lower";
2747 ident: Lowercase;
2748 data_marker: crate::provider::PropertyBinaryLowercaseV1;
2749 singleton: SINGLETON_PROPERTY_BINARY_LOWERCASE_V1;
2750 }
2764
2765#[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! {
2766 name: "Math";
2767 short_name: "Math";
2768 ident: Math;
2769 data_marker: crate::provider::PropertyBinaryMathV1;
2770 singleton: SINGLETON_PROPERTY_BINARY_MATH_V1;
2771 }
2789
2790#[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! {
2791 name: "Modifier_Combining_Mark";
2792 short_name: "MCM";
2793 ident: ModifierCombiningMark;
2794 data_marker: crate::provider::PropertyBinaryModifierCombiningMarkV1;
2795 singleton: SINGLETON_PROPERTY_BINARY_MODIFIER_COMBINING_MARK_V1;
2796 }
2798
2799#[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! {
2800 name: "Noncharacter_Code_Point";
2801 short_name: "NChar";
2802 ident: NoncharacterCodePoint;
2803 data_marker: crate::provider::PropertyBinaryNoncharacterCodePointV1;
2804 singleton: SINGLETON_PROPERTY_BINARY_NONCHARACTER_CODE_POINT_V1;
2805 }
2820
2821#[doc =
r" Characters that are inert under NFC, i.e., they do not interact with adjacent characters."]
#[non_exhaustive]
pub struct NfcInert;
#[automatically_derived]
impl ::core::fmt::Debug for NfcInert {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NfcInert")
}
}
impl crate::private::Sealed for NfcInert {}
impl BinaryProperty for NfcInert {
type DataMarker = crate::provider::PropertyBinaryNfcInertV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NFC_INERT_V1;
const NAME: &'static [u8] = "NFC_Inert".as_bytes();
const SHORT_NAME: &'static [u8] = "nfcinert".as_bytes();
}make_binary_property! {
2822 name: "NFC_Inert";
2823 short_name: "nfcinert";
2824 ident: NfcInert;
2825 data_marker: crate::provider::PropertyBinaryNfcInertV1;
2826 singleton: SINGLETON_PROPERTY_BINARY_NFC_INERT_V1;
2827 }
2829
2830#[doc =
r" Characters that are inert under NFD, i.e., they do not interact with adjacent characters."]
#[non_exhaustive]
pub struct NfdInert;
#[automatically_derived]
impl ::core::fmt::Debug for NfdInert {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NfdInert")
}
}
impl crate::private::Sealed for NfdInert {}
impl BinaryProperty for NfdInert {
type DataMarker = crate::provider::PropertyBinaryNfdInertV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NFD_INERT_V1;
const NAME: &'static [u8] = "NFD_Inert".as_bytes();
const SHORT_NAME: &'static [u8] = "nfdinert".as_bytes();
}make_binary_property! {
2831 name: "NFD_Inert";
2832 short_name: "nfdinert";
2833 ident: NfdInert;
2834 data_marker: crate::provider::PropertyBinaryNfdInertV1;
2835 singleton: SINGLETON_PROPERTY_BINARY_NFD_INERT_V1;
2836 }
2838
2839#[doc =
r" Characters that are inert under NFKC, i.e., they do not interact with adjacent characters."]
#[non_exhaustive]
pub struct NfkcInert;
#[automatically_derived]
impl ::core::fmt::Debug for NfkcInert {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NfkcInert")
}
}
impl crate::private::Sealed for NfkcInert {}
impl BinaryProperty for NfkcInert {
type DataMarker = crate::provider::PropertyBinaryNfkcInertV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NFKC_INERT_V1;
const NAME: &'static [u8] = "NFKC_Inert".as_bytes();
const SHORT_NAME: &'static [u8] = "nfkcinert".as_bytes();
}make_binary_property! {
2840 name: "NFKC_Inert";
2841 short_name: "nfkcinert";
2842 ident: NfkcInert;
2843 data_marker: crate::provider::PropertyBinaryNfkcInertV1;
2844 singleton: SINGLETON_PROPERTY_BINARY_NFKC_INERT_V1;
2845 }
2847
2848#[doc =
r" Characters that are inert under NFKD, i.e., they do not interact with adjacent characters."]
#[non_exhaustive]
pub struct NfkdInert;
#[automatically_derived]
impl ::core::fmt::Debug for NfkdInert {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NfkdInert")
}
}
impl crate::private::Sealed for NfkdInert {}
impl BinaryProperty for NfkdInert {
type DataMarker = crate::provider::PropertyBinaryNfkdInertV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NFKD_INERT_V1;
const NAME: &'static [u8] = "NFKD_Inert".as_bytes();
const SHORT_NAME: &'static [u8] = "nfkdinert".as_bytes();
}make_binary_property! {
2849 name: "NFKD_Inert";
2850 short_name: "nfkdinert";
2851 ident: NfkdInert;
2852 data_marker: crate::provider::PropertyBinaryNfkdInertV1;
2853 singleton: SINGLETON_PROPERTY_BINARY_NFKD_INERT_V1;
2854 }
2856
2857#[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! {
2858 name: "Pattern_Syntax";
2859 short_name: "Pat_Syn";
2860 ident: PatternSyntax;
2861 data_marker: crate::provider::PropertyBinaryPatternSyntaxV1;
2862 singleton: SINGLETON_PROPERTY_BINARY_PATTERN_SYNTAX_V1;
2863 }
2882
2883#[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! {
2884 name: "Pattern_White_Space";
2885 short_name: "Pat_WS";
2886 ident: PatternWhiteSpace;
2887 data_marker: crate::provider::PropertyBinaryPatternWhiteSpaceV1;
2888 singleton: SINGLETON_PROPERTY_BINARY_PATTERN_WHITE_SPACE_V1;
2889 }
2909
2910#[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! {
2911 name: "Prepended_Concatenation_Mark";
2912 short_name: "PCM";
2913 ident: PrependedConcatenationMark;
2914 data_marker: crate::provider::PropertyBinaryPrependedConcatenationMarkV1;
2915 singleton: SINGLETON_PROPERTY_BINARY_PREPENDED_CONCATENATION_MARK_V1;
2916 }
2919
2920#[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! {
2921 name: "print";
2922 short_name: "print";
2923 ident: Print;
2924 data_marker: crate::provider::PropertyBinaryPrintV1;
2925 singleton: SINGLETON_PROPERTY_BINARY_PRINT_V1;
2926 }
2930
2931#[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! {
2932 name: "Quotation_Mark";
2933 short_name: "QMark";
2934 ident: QuotationMark;
2935 data_marker: crate::provider::PropertyBinaryQuotationMarkV1;
2936 singleton: SINGLETON_PROPERTY_BINARY_QUOTATION_MARK_V1;
2937 }
2952
2953#[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! {
2954 name: "Radical";
2955 short_name: "Radical";
2956 ident: Radical;
2957 data_marker: crate::provider::PropertyBinaryRadicalV1;
2958 singleton: SINGLETON_PROPERTY_BINARY_RADICAL_V1;
2959 }
2973
2974#[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! {
2975 name: "Regional_Indicator";
2976 short_name: "RI";
2977 ident: RegionalIndicator;
2978 data_marker: crate::provider::PropertyBinaryRegionalIndicatorV1;
2979 singleton: SINGLETON_PROPERTY_BINARY_REGIONAL_INDICATOR_V1;
2980 }
2995
2996#[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! {
2997 name: "Soft_Dotted";
2998 short_name: "SD";
2999 ident: SoftDotted;
3000 data_marker: crate::provider::PropertyBinarySoftDottedV1;
3001 singleton: SINGLETON_PROPERTY_BINARY_SOFT_DOTTED_V1;
3002 }
3019
3020#[doc =
r" Characters that are starters in terms of Unicode normalization and combining character"]
#[doc = r" sequences."]
#[non_exhaustive]
pub struct SegmentStarter;
#[automatically_derived]
impl ::core::fmt::Debug for SegmentStarter {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "SegmentStarter")
}
}
impl crate::private::Sealed for SegmentStarter {}
impl BinaryProperty for SegmentStarter {
type DataMarker = crate::provider::PropertyBinarySegmentStarterV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_SEGMENT_STARTER_V1;
const NAME: &'static [u8] = "Segment_Starter".as_bytes();
const SHORT_NAME: &'static [u8] = "segstart".as_bytes();
}make_binary_property! {
3021 name: "Segment_Starter";
3022 short_name: "segstart";
3023 ident: SegmentStarter;
3024 data_marker: crate::provider::PropertyBinarySegmentStarterV1;
3025 singleton: SINGLETON_PROPERTY_BINARY_SEGMENT_STARTER_V1;
3026 }
3029
3030#[doc =
r" Characters that are either the source of a case mapping or in the target of a case"]
#[doc = r" mapping."]
#[non_exhaustive]
pub struct CaseSensitive;
#[automatically_derived]
impl ::core::fmt::Debug for CaseSensitive {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "CaseSensitive")
}
}
impl crate::private::Sealed for CaseSensitive {}
impl BinaryProperty for CaseSensitive {
type DataMarker = crate::provider::PropertyBinaryCaseSensitiveV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CASE_SENSITIVE_V1;
const NAME: &'static [u8] = "Case_Sensitive".as_bytes();
const SHORT_NAME: &'static [u8] = "Sensitive".as_bytes();
}make_binary_property! {
3031 name: "Case_Sensitive";
3032 short_name: "Sensitive";
3033 ident: CaseSensitive;
3034 data_marker: crate::provider::PropertyBinaryCaseSensitiveV1;
3035 singleton: SINGLETON_PROPERTY_BINARY_CASE_SENSITIVE_V1;
3036 }
3039
3040#[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! {
3041 name: "Sentence_Terminal";
3042 short_name: "STerm";
3043 ident: SentenceTerminal;
3044 data_marker: crate::provider::PropertyBinarySentenceTerminalV1;
3045 singleton: SINGLETON_PROPERTY_BINARY_SENTENCE_TERMINAL_V1;
3046 }
3063
3064#[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! {
3065 name: "Terminal_Punctuation";
3066 short_name: "Term";
3067 ident: TerminalPunctuation;
3068 data_marker: crate::provider::PropertyBinaryTerminalPunctuationV1;
3069 singleton: SINGLETON_PROPERTY_BINARY_TERMINAL_PUNCTUATION_V1;
3070 }
3087
3088#[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! {
3089 name: "Unified_Ideograph";
3090 short_name: "UIdeo";
3091 ident: UnifiedIdeograph;
3092 data_marker: crate::provider::PropertyBinaryUnifiedIdeographV1;
3093 singleton: SINGLETON_PROPERTY_BINARY_UNIFIED_IDEOGRAPH_V1;
3094 }
3109
3110#[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! {
3111 name: "Uppercase";
3112 short_name: "Upper";
3113 ident: Uppercase;
3114 data_marker: crate::provider::PropertyBinaryUppercaseV1;
3115 singleton: SINGLETON_PROPERTY_BINARY_UPPERCASE_V1;
3116 }
3130
3131#[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! {
3132 name: "Variation_Selector";
3133 short_name: "VS";
3134 ident: VariationSelector;
3135 data_marker: crate::provider::PropertyBinaryVariationSelectorV1;
3136 singleton: SINGLETON_PROPERTY_BINARY_VARIATION_SELECTOR_V1;
3137 }
3154
3155#[doc =
r" Spaces, separator characters and other control characters which should be treated by"]
#[doc =
r#" programming languages as "white space" for the purpose of parsing elements."#]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::WhiteSpace;"]
#[doc = r""]
#[doc = r" let white_space = CodePointSetData::new::<WhiteSpace>();"]
#[doc = r""]
#[doc = r" assert!(white_space.contains(' '));"]
#[doc = r" assert!(white_space.contains('\u{000A}')); // NEW LINE"]
#[doc = r" assert!(white_space.contains('\u{00A0}')); // NO-BREAK SPACE"]
#[doc = r" assert!(!white_space.contains('\u{200B}')); // ZERO WIDTH SPACE"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct WhiteSpace;
#[automatically_derived]
impl ::core::fmt::Debug for WhiteSpace {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "WhiteSpace")
}
}
impl crate::private::Sealed for WhiteSpace {}
impl BinaryProperty for WhiteSpace {
type DataMarker = crate::provider::PropertyBinaryWhiteSpaceV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_WHITE_SPACE_V1;
const NAME: &'static [u8] = "White_Space".as_bytes();
const SHORT_NAME: &'static [u8] = "WSpace".as_bytes();
}make_binary_property! {
3156 name: "White_Space";
3157 short_name: "WSpace";
3158 ident: WhiteSpace;
3159 data_marker: crate::provider::PropertyBinaryWhiteSpaceV1;
3160 singleton: SINGLETON_PROPERTY_BINARY_WHITE_SPACE_V1;
3161 }
3178
3179#[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! {
3180 name: "xdigit";
3181 short_name: "xdigit";
3182 ident: Xdigit;
3183 data_marker: crate::provider::PropertyBinaryXdigitV1;
3184 singleton: SINGLETON_PROPERTY_BINARY_XDIGIT_V1;
3185 }
3189
3190#[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! {
3191 name: "XID_Continue";
3192 short_name: "XIDC";
3193 ident: XidContinue;
3194 data_marker: crate::provider::PropertyBinaryXidContinueV1;
3195 singleton: SINGLETON_PROPERTY_BINARY_XID_CONTINUE_V1;
3196 }
3217
3218#[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! {
3219 name: "XID_Start";
3220 short_name: "XIDS";
3221 ident: XidStart;
3222 data_marker: crate::provider::PropertyBinaryXidStartV1;
3223 singleton: SINGLETON_PROPERTY_BINARY_XID_START_V1;
3224 }
3246
3247pub use crate::emoji::EmojiSet;
3248
3249macro_rules! make_emoji_set {
3250 (
3251 name: $name:literal;
3252 short_name: $short_name:literal;
3253 ident: $ident:ident;
3254 data_marker: $data_marker:ty;
3255 singleton: $singleton:ident;
3256 $(#[$doc:meta])+
3257 ) => {
3258 $(#[$doc])+
3259 #[derive(Debug)]
3260 #[non_exhaustive]
3261 pub struct $ident;
3262
3263 impl crate::private::Sealed for $ident {}
3264
3265 impl EmojiSet for $ident {
3266 type DataMarker = $data_marker;
3267 #[cfg(feature = "compiled_data")]
3268 const SINGLETON: &'static crate::provider::PropertyUnicodeSet<'static> =
3269 &crate::provider::Baked::$singleton;
3270 const NAME: &'static [u8] = $name.as_bytes();
3271 const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
3272 }
3273 }
3274}
3275
3276#[doc =
r" Characters and character sequences intended for general-purpose, independent, direct input."]
#[doc = r""]
#[doc =
r" See [`Unicode Technical Standard #51`](https://unicode.org/reports/tr51/) for more"]
#[doc = r" details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::EmojiSetData;"]
#[doc = r" use icu::properties::props::BasicEmoji;"]
#[doc = r""]
#[doc = r" let basic_emoji = EmojiSetData::new::<BasicEmoji>();"]
#[doc = r""]
#[doc = r" assert!(!basic_emoji.contains('\u{0020}'));"]
#[doc = r" assert!(!basic_emoji.contains('\n'));"]
#[doc = r" assert!(basic_emoji.contains('🦃')); // U+1F983 TURKEY"]
#[doc = r#" assert!(basic_emoji.contains_str("\u{1F983}"));"#]
#[doc =
r#" assert!(basic_emoji.contains_str("\u{1F6E4}\u{FE0F}")); // railway track"#]
#[doc =
r#" assert!(!basic_emoji.contains_str("\u{0033}\u{FE0F}\u{20E3}")); // Emoji_Keycap_Sequence, keycap 3"#]
#[doc = r" ```"]
#[non_exhaustive]
pub struct BasicEmoji;
#[automatically_derived]
impl ::core::fmt::Debug for BasicEmoji {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "BasicEmoji")
}
}
impl crate::private::Sealed for BasicEmoji {}
impl EmojiSet for BasicEmoji {
type DataMarker = crate::provider::PropertyBinaryBasicEmojiV1;
const SINGLETON: &'static crate::provider::PropertyUnicodeSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_BASIC_EMOJI_V1;
const NAME: &'static [u8] = "Basic_Emoji".as_bytes();
const SHORT_NAME: &'static [u8] = "Basic_Emoji".as_bytes();
}make_emoji_set! {
3277 name: "Basic_Emoji";
3278 short_name: "Basic_Emoji";
3279 ident: BasicEmoji;
3280 data_marker: crate::provider::PropertyBinaryBasicEmojiV1;
3281 singleton: SINGLETON_PROPERTY_BINARY_BASIC_EMOJI_V1;
3282 }
3303
3304#[cfg(test)]
3305mod test_enumerated_property_completeness {
3306 use super::*;
3307 use std::collections::BTreeMap;
3308
3309 fn check_enum<'a, T: NamedEnumeratedProperty>(
3310 lookup: &crate::provider::names::PropertyValueNameToEnumMap<'static>,
3311 consts: impl IntoIterator<Item = &'a T>,
3312 ) where
3313 u16: From<T>,
3314 {
3315 let mut data: BTreeMap<_, _> = lookup
3316 .map
3317 .iter()
3318 .map(|(name, value)| (value, (name, "Data")))
3319 .collect();
3320
3321 let names = crate::PropertyNamesLong::<T>::new();
3322 let consts = consts.into_iter().map(|value| {
3323 (
3324 u16::from(*value) as usize,
3325 (
3326 names.get(*value).unwrap_or("<unknown>").to_string(),
3327 "Consts",
3328 ),
3329 )
3330 });
3331
3332 let mut diff = Vec::new();
3333 for t @ (value, _) in consts {
3334 if data.remove(&value).is_none() {
3335 diff.push(t);
3336 }
3337 }
3338 diff.extend(data);
3339
3340 let mut fmt_diff = String::new();
3341 for (value, (name, source)) in diff {
3342 fmt_diff.push_str(&format!("{source}:\t{name} = {value:?}\n"));
3343 }
3344
3345 assert!(
3346 fmt_diff.is_empty(),
3347 "Values defined in data do not match values defined in consts. Difference:\n{fmt_diff}"
3348 );
3349 }
3350
3351 #[test]
3352 fn test_ea() {
3353 check_enum(
3354 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_EAST_ASIAN_WIDTH_V1,
3355 EastAsianWidth::ALL_VALUES,
3356 );
3357 }
3358
3359 #[test]
3360 fn test_ccc() {
3361 check_enum(
3362 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_CANONICAL_COMBINING_CLASS_V1,
3363 CanonicalCombiningClass::ALL_VALUES,
3364 );
3365 }
3366
3367 #[test]
3368 fn test_jt() {
3369 check_enum(
3370 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_JOINING_TYPE_V1,
3371 JoiningType::ALL_VALUES,
3372 );
3373 }
3374
3375 #[test]
3376 fn test_insc() {
3377 check_enum(
3378 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_INDIC_SYLLABIC_CATEGORY_V1,
3379 IndicSyllabicCategory::ALL_VALUES,
3380 );
3381 }
3382
3383 #[test]
3384 fn test_sb() {
3385 check_enum(
3386 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_SENTENCE_BREAK_V1,
3387 SentenceBreak::ALL_VALUES,
3388 );
3389 }
3390
3391 #[test]
3392 fn test_wb() {
3393 check_enum(
3394 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_WORD_BREAK_V1,
3395 WordBreak::ALL_VALUES,
3396 );
3397 }
3398
3399 #[test]
3400 fn test_bc() {
3401 check_enum(
3402 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_BIDI_CLASS_V1,
3403 BidiClass::ALL_VALUES,
3404 );
3405 }
3406
3407 #[test]
3408 fn test_hst() {
3409 check_enum(
3410 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_HANGUL_SYLLABLE_TYPE_V1,
3411 HangulSyllableType::ALL_VALUES,
3412 );
3413 }
3414
3415 #[test]
3416 fn test_vo() {
3417 check_enum(
3418 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_VERTICAL_ORIENTATION_V1,
3419 VerticalOrientation::ALL_VALUES,
3420 );
3421 }
3422}