]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_baked_icu_data/src/data/mod.rs
New upstream version 1.71.1+dfsg1
[rustc.git] / compiler / rustc_baked_icu_data / src / data / mod.rs
CommitLineData
487cf647 1// @generated
49aad941 2#[clippy::msrv = "1.61"]
487cf647 3mod fallback;
49aad941 4#[clippy::msrv = "1.61"]
487cf647 5mod list;
49aad941
FG
6#[clippy::msrv = "1.61"]
7use icu_provider::prelude::*;
9ffffee4
FG
8/// Implement [`DataProvider<M>`] on the given struct using the data
9/// hardcoded in this module. This allows the struct to be used with
10/// `icu`'s `_unstable` constructors.
11///
12/// This macro can only be called from its definition-site, i.e. right
13/// after `include!`-ing the generated module.
14///
15/// ```compile_fail
16/// struct MyDataProvider;
17/// include!("/path/to/generated/mod.rs");
18/// impl_data_provider(MyDataProvider);
19/// ```
20#[allow(unused_macros)]
21macro_rules! impl_data_provider {
22 ($ provider : path) => {
49aad941 23 #[clippy::msrv = "1.61"]
9ffffee4
FG
24 impl DataProvider<::icu_list::provider::AndListV1Marker> for $provider {
25 fn load(&self, req: DataRequest) -> Result<DataResponse<::icu_list::provider::AndListV1Marker>, DataError> {
26 list::and_v1::lookup(&req.locale)
27 .map(zerofrom::ZeroFrom::zero_from)
28 .map(DataPayload::from_owned)
29 .map(|payload| DataResponse { metadata: Default::default(), payload: Some(payload) })
30 .ok_or_else(|| DataErrorKind::MissingLocale.with_req(::icu_list::provider::AndListV1Marker::KEY, req))
31 }
32 }
49aad941 33 #[clippy::msrv = "1.61"]
9ffffee4
FG
34 impl DataProvider<::icu_provider_adapters::fallback::provider::CollationFallbackSupplementV1Marker> for $provider {
35 fn load(
36 &self,
37 req: DataRequest,
38 ) -> Result<DataResponse<::icu_provider_adapters::fallback::provider::CollationFallbackSupplementV1Marker>, DataError> {
39 fallback::supplement::co_v1::lookup(&req.locale)
40 .map(zerofrom::ZeroFrom::zero_from)
41 .map(DataPayload::from_owned)
42 .map(|payload| DataResponse { metadata: Default::default(), payload: Some(payload) })
487cf647
FG
43 .ok_or_else(|| {
44 DataErrorKind::MissingLocale
9ffffee4
FG
45 .with_req(::icu_provider_adapters::fallback::provider::CollationFallbackSupplementV1Marker::KEY, req)
46 })
47 }
48 }
49aad941 49 #[clippy::msrv = "1.61"]
9ffffee4
FG
50 impl DataProvider<::icu_provider_adapters::fallback::provider::LocaleFallbackLikelySubtagsV1Marker> for $provider {
51 fn load(
52 &self,
53 req: DataRequest,
54 ) -> Result<DataResponse<::icu_provider_adapters::fallback::provider::LocaleFallbackLikelySubtagsV1Marker>, DataError> {
55 fallback::likelysubtags_v1::lookup(&req.locale)
56 .map(zerofrom::ZeroFrom::zero_from)
57 .map(DataPayload::from_owned)
58 .map(|payload| DataResponse { metadata: Default::default(), payload: Some(payload) })
59 .ok_or_else(|| {
60 DataErrorKind::MissingLocale
61 .with_req(::icu_provider_adapters::fallback::provider::LocaleFallbackLikelySubtagsV1Marker::KEY, req)
62 })
63 }
64 }
49aad941 65 #[clippy::msrv = "1.61"]
9ffffee4
FG
66 impl DataProvider<::icu_provider_adapters::fallback::provider::LocaleFallbackParentsV1Marker> for $provider {
67 fn load(
68 &self,
69 req: DataRequest,
70 ) -> Result<DataResponse<::icu_provider_adapters::fallback::provider::LocaleFallbackParentsV1Marker>, DataError> {
71 fallback::parents_v1::lookup(&req.locale)
72 .map(zerofrom::ZeroFrom::zero_from)
73 .map(DataPayload::from_owned)
74 .map(|payload| DataResponse { metadata: Default::default(), payload: Some(payload) })
75 .ok_or_else(|| {
76 DataErrorKind::MissingLocale.with_req(::icu_provider_adapters::fallback::provider::LocaleFallbackParentsV1Marker::KEY, req)
77 })
78 }
79 }
80 };
487cf647 81}
9ffffee4
FG
82/// Implement [`AnyProvider`] on the given struct using the data
83/// hardcoded in this module. This allows the struct to be used with
84/// `icu`'s `_any` constructors.
85///
86/// This macro can only be called from its definition-site, i.e. right
87/// after `include!`-ing the generated module.
88///
89/// ```compile_fail
90/// struct MyAnyProvider;
91/// include!("/path/to/generated/mod.rs");
92/// impl_any_provider(MyAnyProvider);
93/// ```
94#[allow(unused_macros)]
95macro_rules! impl_any_provider {
96 ($ provider : path) => {
49aad941 97 #[clippy::msrv = "1.61"]
9ffffee4
FG
98 impl AnyProvider for $provider {
99 fn load_any(&self, key: DataKey, req: DataRequest) -> Result<AnyResponse, DataError> {
100 const ANDLISTV1MARKER: ::icu_provider::DataKeyHash = ::icu_list::provider::AndListV1Marker::KEY.hashed();
101 const COLLATIONFALLBACKSUPPLEMENTV1MARKER: ::icu_provider::DataKeyHash =
102 ::icu_provider_adapters::fallback::provider::CollationFallbackSupplementV1Marker::KEY.hashed();
103 const LOCALEFALLBACKLIKELYSUBTAGSV1MARKER: ::icu_provider::DataKeyHash =
104 ::icu_provider_adapters::fallback::provider::LocaleFallbackLikelySubtagsV1Marker::KEY.hashed();
105 const LOCALEFALLBACKPARENTSV1MARKER: ::icu_provider::DataKeyHash =
106 ::icu_provider_adapters::fallback::provider::LocaleFallbackParentsV1Marker::KEY.hashed();
107 match key.hashed() {
108 ANDLISTV1MARKER => list::and_v1::lookup(&req.locale).map(AnyPayload::from_static_ref),
109 COLLATIONFALLBACKSUPPLEMENTV1MARKER => fallback::supplement::co_v1::lookup(&req.locale).map(AnyPayload::from_static_ref),
110 LOCALEFALLBACKLIKELYSUBTAGSV1MARKER => fallback::likelysubtags_v1::lookup(&req.locale).map(AnyPayload::from_static_ref),
111 LOCALEFALLBACKPARENTSV1MARKER => fallback::parents_v1::lookup(&req.locale).map(AnyPayload::from_static_ref),
112 _ => return Err(DataErrorKind::MissingDataKey.with_req(key, req)),
113 }
114 .map(|payload| AnyResponse { payload: Some(payload), metadata: Default::default() })
115 .ok_or_else(|| DataErrorKind::MissingLocale.with_req(key, req))
116 }
117 }
118 };
487cf647 119}
49aad941 120#[clippy::msrv = "1.61"]
9ffffee4
FG
121pub struct BakedDataProvider;
122impl_data_provider!(BakedDataProvider);