icu_datetime/provider/
mod.rs

1// This file is part of ICU4X. For terms of use, please see the file
2// called LICENSE at the top level of the ICU4X source tree
3// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
4
5// Provider structs must be stable
6#![allow(clippy::exhaustive_structs, clippy::exhaustive_enums)]
7
8//! 🚧 \[Unstable\] Data provider struct definitions for this ICU4X component.
9//!
10//! <div class="stab unstable">
11//! 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
12//! including in SemVer minor releases. While the serde representation of data structs is guaranteed
13//! to be stable, their Rust representation might not be. Use with caution.
14//! </div>
15//!
16//! Read more about data providers: [`icu_provider`]
17
18#[cfg(feature = "serde")]
19pub(crate) mod compat;
20pub mod fields;
21pub mod neo;
22pub(crate) mod packed_pattern;
23pub mod pattern;
24#[cfg(feature = "datagen")]
25pub mod skeleton;
26pub mod time_zones;
27
28pub use packed_pattern::*;
29
30pub(crate) type ErasedPackedPatterns = icu_provider::marker::ErasedMarker<PackedPatterns<'static>>;
31
32#[cfg(feature = "compiled_data")]
33#[derive(Debug)]
34/// Baked data
35///
36/// <div class="stab unstable">
37/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
38/// including in SemVer minor releases. In particular, the `DataProvider` implementations are only
39/// guaranteed to match with this version's `*_unstable` providers. Use with caution.
40/// </div>
41pub struct Baked;
42
43#[cfg(feature = "compiled_data")]
44#[allow(unused_imports)]
45const _: () = {
46    use icu_datetime_data::*;
47    pub mod icu {
48        pub use crate as datetime;
49        pub use icu_locale as locale;
50    }
51    make_provider!(Baked);
52
53    impl_timezone_names_cities_override_v1!(Baked);
54    impl_timezone_names_cities_root_v1!(Baked);
55    impl_timezone_names_essentials_v1!(Baked);
56    impl_timezone_names_generic_long_v1!(Baked);
57    impl_timezone_names_generic_short_v1!(Baked);
58    impl_timezone_names_locations_override_v1!(Baked);
59    impl_timezone_names_locations_root_v1!(Baked);
60    impl_timezone_names_specific_long_v1!(Baked);
61    impl_timezone_names_specific_short_v1!(Baked);
62    impl_timezone_names_standard_long_v1!(Baked);
63
64    impl_datetime_patterns_glue_v1!(Baked);
65    impl_datetime_patterns_time_v1!(Baked);
66
67    impl_datetime_names_weekday_v1!(Baked);
68    impl_datetime_names_dayperiod_v1!(Baked);
69
70    impl_datetime_names_year_buddhist_v1!(Baked);
71    impl_datetime_names_year_chinese_v1!(Baked);
72    impl_datetime_names_year_coptic_v1!(Baked);
73    impl_datetime_names_year_dangi_v1!(Baked);
74    impl_datetime_names_year_ethiopian_v1!(Baked);
75    impl_datetime_names_year_gregorian_v1!(Baked);
76    impl_datetime_names_year_hebrew_v1!(Baked);
77    impl_datetime_names_year_indian_v1!(Baked);
78    impl_datetime_names_year_hijri_v1!(Baked);
79    impl_datetime_names_year_japanese_v1!(Baked);
80    impl_datetime_names_year_japanext_v1!(Baked);
81    impl_datetime_names_year_persian_v1!(Baked);
82    impl_datetime_names_year_roc_v1!(Baked);
83
84    impl_datetime_names_month_buddhist_v1!(Baked);
85    impl_datetime_names_month_chinese_v1!(Baked);
86    impl_datetime_names_month_coptic_v1!(Baked);
87    impl_datetime_names_month_dangi_v1!(Baked);
88    impl_datetime_names_month_ethiopian_v1!(Baked);
89    impl_datetime_names_month_gregorian_v1!(Baked);
90    impl_datetime_names_month_hebrew_v1!(Baked);
91    impl_datetime_names_month_indian_v1!(Baked);
92    impl_datetime_names_month_hijri_v1!(Baked);
93    impl_datetime_names_month_japanese_v1!(Baked);
94    impl_datetime_names_month_japanext_v1!(Baked);
95    impl_datetime_names_month_persian_v1!(Baked);
96    impl_datetime_names_month_roc_v1!(Baked);
97
98    impl_datetime_patterns_date_buddhist_v1!(Baked);
99    impl_datetime_patterns_date_chinese_v1!(Baked);
100    impl_datetime_patterns_date_coptic_v1!(Baked);
101    impl_datetime_patterns_date_dangi_v1!(Baked);
102    impl_datetime_patterns_date_ethiopian_v1!(Baked);
103    impl_datetime_patterns_date_gregorian_v1!(Baked);
104    impl_datetime_patterns_date_hebrew_v1!(Baked);
105    impl_datetime_patterns_date_indian_v1!(Baked);
106    impl_datetime_patterns_date_hijri_v1!(Baked);
107    impl_datetime_patterns_date_japanese_v1!(Baked);
108    impl_datetime_patterns_date_japanext_v1!(Baked);
109    impl_datetime_patterns_date_persian_v1!(Baked);
110    impl_datetime_patterns_date_roc_v1!(Baked);
111};
112
113#[cfg(feature = "compiled_data")]
114impl icu_provider::DataProvider<icu_time::provider::TimezonePeriodsV1> for Baked {
115    #[inline]
116    fn load(
117        &self,
118        req: icu_provider::DataRequest,
119    ) -> Result<
120        icu_provider::DataResponse<icu_time::provider::TimezonePeriodsV1>,
121        icu_provider::DataError,
122    > {
123        icu_time::provider::Baked.load(req)
124    }
125}
126
127#[cfg(feature = "datagen")]
128use icu_provider::prelude::*;
129
130#[cfg(feature = "datagen")]
131/// The latest minimum set of markers required by this component.
132pub const MARKERS: &[DataMarkerInfo] = &[
133    time_zones::TimezoneNamesLocationsOverrideV1::INFO,
134    time_zones::TimezoneNamesLocationsRootV1::INFO,
135    time_zones::TimezoneNamesCitiesOverrideV1::INFO,
136    time_zones::TimezoneNamesCitiesRootV1::INFO,
137    time_zones::TimezoneNamesGenericLongV1::INFO,
138    time_zones::TimezoneNamesStandardLongV1::INFO,
139    time_zones::TimezoneNamesGenericShortV1::INFO,
140    time_zones::TimezoneNamesSpecificLongV1::INFO,
141    time_zones::TimezoneNamesSpecificShortV1::INFO,
142    time_zones::TimezoneNamesEssentialsV1::INFO,
143    neo::DatetimeNamesWeekdayV1::INFO,
144    neo::DatetimeNamesDayperiodV1::INFO,
145    neo::DatetimePatternsGlueV1::INFO,
146    DatetimePatternsTimeV1::INFO,
147    neo::DatetimeNamesYearBuddhistV1::INFO,
148    neo::DatetimeNamesYearChineseV1::INFO,
149    neo::DatetimeNamesYearCopticV1::INFO,
150    neo::DatetimeNamesYearDangiV1::INFO,
151    neo::DatetimeNamesYearEthiopianV1::INFO,
152    neo::DatetimeNamesYearGregorianV1::INFO,
153    neo::DatetimeNamesYearHebrewV1::INFO,
154    neo::DatetimeNamesYearIndianV1::INFO,
155    neo::DatetimeNamesYearHijriV1::INFO,
156    neo::DatetimeNamesYearJapaneseV1::INFO,
157    neo::DatetimeNamesYearJapanextV1::INFO,
158    neo::DatetimeNamesYearPersianV1::INFO,
159    neo::DatetimeNamesYearRocV1::INFO,
160    neo::DatetimeNamesMonthBuddhistV1::INFO,
161    neo::DatetimeNamesMonthChineseV1::INFO,
162    neo::DatetimeNamesMonthCopticV1::INFO,
163    neo::DatetimeNamesMonthDangiV1::INFO,
164    neo::DatetimeNamesMonthEthiopianV1::INFO,
165    neo::DatetimeNamesMonthGregorianV1::INFO,
166    neo::DatetimeNamesMonthHebrewV1::INFO,
167    neo::DatetimeNamesMonthIndianV1::INFO,
168    neo::DatetimeNamesMonthHijriV1::INFO,
169    neo::DatetimeNamesMonthJapaneseV1::INFO,
170    neo::DatetimeNamesMonthJapanextV1::INFO,
171    neo::DatetimeNamesMonthPersianV1::INFO,
172    neo::DatetimeNamesMonthRocV1::INFO,
173    DatetimePatternsDateBuddhistV1::INFO,
174    DatetimePatternsDateChineseV1::INFO,
175    DatetimePatternsDateCopticV1::INFO,
176    DatetimePatternsDateDangiV1::INFO,
177    DatetimePatternsDateEthiopianV1::INFO,
178    DatetimePatternsDateGregorianV1::INFO,
179    DatetimePatternsDateHebrewV1::INFO,
180    DatetimePatternsDateIndianV1::INFO,
181    DatetimePatternsDateHijriV1::INFO,
182    DatetimePatternsDateJapaneseV1::INFO,
183    DatetimePatternsDateJapanextV1::INFO,
184    DatetimePatternsDatePersianV1::INFO,
185    DatetimePatternsDateRocV1::INFO,
186];