// @generated mod fallback; mod list; use ::icu_provider::prelude::*; /// Implement [`DataProvider`] on the given struct using the data /// hardcoded in this module. This allows the struct to be used with /// `icu`'s `_unstable` constructors. /// /// This macro can only be called from its definition-site, i.e. right /// after `include!`-ing the generated module. /// /// ```compile_fail /// struct MyDataProvider; /// include!("/path/to/generated/mod.rs"); /// impl_data_provider(MyDataProvider); /// ``` #[allow(unused_macros)] macro_rules! impl_data_provider { ($ provider : path) => { impl DataProvider<::icu_list::provider::AndListV1Marker> for $provider { fn load(&self, req: DataRequest) -> Result, DataError> { list::and_v1::lookup(&req.locale) .map(zerofrom::ZeroFrom::zero_from) .map(DataPayload::from_owned) .map(|payload| DataResponse { metadata: Default::default(), payload: Some(payload) }) .ok_or_else(|| DataErrorKind::MissingLocale.with_req(::icu_list::provider::AndListV1Marker::KEY, req)) } } impl DataProvider<::icu_provider_adapters::fallback::provider::CollationFallbackSupplementV1Marker> for $provider { fn load( &self, req: DataRequest, ) -> Result, DataError> { fallback::supplement::co_v1::lookup(&req.locale) .map(zerofrom::ZeroFrom::zero_from) .map(DataPayload::from_owned) .map(|payload| DataResponse { metadata: Default::default(), payload: Some(payload) }) .ok_or_else(|| { DataErrorKind::MissingLocale .with_req(::icu_provider_adapters::fallback::provider::CollationFallbackSupplementV1Marker::KEY, req) }) } } impl DataProvider<::icu_provider_adapters::fallback::provider::LocaleFallbackLikelySubtagsV1Marker> for $provider { fn load( &self, req: DataRequest, ) -> Result, DataError> { fallback::likelysubtags_v1::lookup(&req.locale) .map(zerofrom::ZeroFrom::zero_from) .map(DataPayload::from_owned) .map(|payload| DataResponse { metadata: Default::default(), payload: Some(payload) }) .ok_or_else(|| { DataErrorKind::MissingLocale .with_req(::icu_provider_adapters::fallback::provider::LocaleFallbackLikelySubtagsV1Marker::KEY, req) }) } } impl DataProvider<::icu_provider_adapters::fallback::provider::LocaleFallbackParentsV1Marker> for $provider { fn load( &self, req: DataRequest, ) -> Result, DataError> { fallback::parents_v1::lookup(&req.locale) .map(zerofrom::ZeroFrom::zero_from) .map(DataPayload::from_owned) .map(|payload| DataResponse { metadata: Default::default(), payload: Some(payload) }) .ok_or_else(|| { DataErrorKind::MissingLocale.with_req(::icu_provider_adapters::fallback::provider::LocaleFallbackParentsV1Marker::KEY, req) }) } } }; } /// Implement [`AnyProvider`] on the given struct using the data /// hardcoded in this module. This allows the struct to be used with /// `icu`'s `_any` constructors. /// /// This macro can only be called from its definition-site, i.e. right /// after `include!`-ing the generated module. /// /// ```compile_fail /// struct MyAnyProvider; /// include!("/path/to/generated/mod.rs"); /// impl_any_provider(MyAnyProvider); /// ``` #[allow(unused_macros)] macro_rules! impl_any_provider { ($ provider : path) => { impl AnyProvider for $provider { fn load_any(&self, key: DataKey, req: DataRequest) -> Result { const ANDLISTV1MARKER: ::icu_provider::DataKeyHash = ::icu_list::provider::AndListV1Marker::KEY.hashed(); const COLLATIONFALLBACKSUPPLEMENTV1MARKER: ::icu_provider::DataKeyHash = ::icu_provider_adapters::fallback::provider::CollationFallbackSupplementV1Marker::KEY.hashed(); const LOCALEFALLBACKLIKELYSUBTAGSV1MARKER: ::icu_provider::DataKeyHash = ::icu_provider_adapters::fallback::provider::LocaleFallbackLikelySubtagsV1Marker::KEY.hashed(); const LOCALEFALLBACKPARENTSV1MARKER: ::icu_provider::DataKeyHash = ::icu_provider_adapters::fallback::provider::LocaleFallbackParentsV1Marker::KEY.hashed(); match key.hashed() { ANDLISTV1MARKER => list::and_v1::lookup(&req.locale).map(AnyPayload::from_static_ref), COLLATIONFALLBACKSUPPLEMENTV1MARKER => fallback::supplement::co_v1::lookup(&req.locale).map(AnyPayload::from_static_ref), LOCALEFALLBACKLIKELYSUBTAGSV1MARKER => fallback::likelysubtags_v1::lookup(&req.locale).map(AnyPayload::from_static_ref), LOCALEFALLBACKPARENTSV1MARKER => fallback::parents_v1::lookup(&req.locale).map(AnyPayload::from_static_ref), _ => return Err(DataErrorKind::MissingDataKey.with_req(key, req)), } .map(|payload| AnyResponse { payload: Some(payload), metadata: Default::default() }) .ok_or_else(|| DataErrorKind::MissingLocale.with_req(key, req)) } } }; } pub struct BakedDataProvider; impl_data_provider!(BakedDataProvider);