icu_locid_transform/provider/
mod.rs1#![allow(clippy::exhaustive_structs, clippy::exhaustive_enums)]
7
8mod canonicalizer;
19pub use canonicalizer::*;
20use icu_locid::subtags::Language;
21mod directionality;
22pub use directionality::*;
23mod expander;
24pub use expander::*;
25mod fallback;
26pub use fallback::*;
27
28#[cfg(feature = "compiled_data")]
29#[derive(Debug)]
30pub struct Baked;
38
39#[cfg(feature = "compiled_data")]
40const _: () = {
41 pub mod icu {
42 pub use crate as locid_transform;
43 pub use icu_locid as locid;
44 }
45 icu_locid_transform_data::make_provider!(Baked);
46 icu_locid_transform_data::impl_fallback_likelysubtags_v1!(Baked);
47 icu_locid_transform_data::impl_fallback_parents_v1!(Baked);
48 icu_locid_transform_data::impl_fallback_supplement_co_v1!(Baked);
49 icu_locid_transform_data::impl_locid_transform_aliases_v2!(Baked);
50 icu_locid_transform_data::impl_locid_transform_likelysubtags_ext_v1!(Baked);
51 icu_locid_transform_data::impl_locid_transform_likelysubtags_l_v1!(Baked);
52 icu_locid_transform_data::impl_locid_transform_likelysubtags_sr_v1!(Baked);
53 icu_locid_transform_data::impl_locid_transform_script_dir_v1!(Baked);
54};
55
56#[cfg(feature = "datagen")]
57use icu_provider::prelude::*;
58
59#[cfg(feature = "datagen")]
60pub const KEYS: &[DataKey] = &[
62 AliasesV2Marker::KEY,
63 CollationFallbackSupplementV1Marker::KEY,
64 LikelySubtagsExtendedV1Marker::KEY,
65 LikelySubtagsForLanguageV1Marker::KEY,
66 LikelySubtagsForScriptRegionV1Marker::KEY,
67 LocaleFallbackLikelySubtagsV1Marker::KEY,
68 LocaleFallbackParentsV1Marker::KEY,
69 ScriptDirectionV1Marker::KEY,
70];
71
72use alloc::borrow::Cow;
73use tinystr::{TinyAsciiStr, UnvalidatedTinyAsciiStr};
74
75type UnvalidatedLanguage = UnvalidatedTinyAsciiStr<3>;
80type UnvalidatedScript = UnvalidatedTinyAsciiStr<4>;
81type UnvalidatedRegion = UnvalidatedTinyAsciiStr<3>;
82type UnvalidatedVariant = UnvalidatedTinyAsciiStr<8>;
83type UnvalidatedSubdivision = UnvalidatedTinyAsciiStr<7>;
84type SemivalidatedSubdivision = TinyAsciiStr<7>;
85
86type UnvalidatedLanguageIdentifier = str;
89type UnvalidatedLanguageIdentifierPair = StrStrPairVarULE;
90type UnvalidatedLanguageVariantsPair = LanguageStrStrPairVarULE;
91
92#[zerovec::make_varule(StrStrPairVarULE)]
93#[zerovec::derive(Debug)]
94#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug)]
95#[cfg_attr(
96 feature = "serde",
97 derive(serde::Deserialize),
98 zerovec::derive(Deserialize)
99)]
100#[cfg_attr(
101 feature = "datagen",
102 derive(serde::Serialize, databake::Bake),
103 zerovec::derive(Serialize),
104 databake(path = icu_locid_transform::provider),
105)]
106pub struct StrStrPair<'a>(
114 #[cfg_attr(feature = "serde", serde(borrow))] pub Cow<'a, str>,
115 #[cfg_attr(feature = "serde", serde(borrow))] pub Cow<'a, str>,
116);
117
118#[zerovec::make_varule(LanguageStrStrPairVarULE)]
119#[zerovec::derive(Debug)]
120#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug)]
121#[cfg_attr(
122 feature = "serde",
123 derive(serde::Deserialize),
124 zerovec::derive(Deserialize)
125)]
126#[cfg_attr(
127 feature = "datagen",
128 derive(serde::Serialize, databake::Bake),
129 zerovec::derive(Serialize),
130 databake(path = icu_locid_transform::provider),
131)]
132pub struct LanguageStrStrPair<'a>(
134 pub Language,
135 #[cfg_attr(feature = "serde", serde(borrow))] pub Cow<'a, str>,
136 #[cfg_attr(feature = "serde", serde(borrow))] pub Cow<'a, str>,
137);