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);