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