diff --git a/components/datetime/src/neo.rs b/components/datetime/src/neo.rs index 2adbed8ae80..c914fb33ef2 100644 --- a/components/datetime/src/neo.rs +++ b/components/datetime/src/neo.rs @@ -12,8 +12,6 @@ use crate::input::ExtractedInput; use crate::neo_pattern::DateTimePattern; use crate::neo_skeleton::{NeoComponents, NeoSkeletonLength}; use crate::options::preferences::HourCycle; -use crate::provider::neo::*; -use crate::provider::ErasedPackedPatterns; use crate::raw::neo::*; use crate::scaffold::*; use crate::scaffold::{ @@ -25,12 +23,7 @@ use crate::MismatchedCalendarError; use core::fmt; use core::marker::PhantomData; use icu_calendar::any_calendar::IntoAnyCalendar; -use icu_calendar::provider::{ - ChineseCacheV1Marker, DangiCacheV1Marker, IslamicObservationalCacheV1Marker, - IslamicUmmAlQuraCacheV1Marker, JapaneseErasV1Marker, JapaneseExtendedErasV1Marker, -}; use icu_calendar::AnyCalendar; -use icu_decimal::provider::DecimalSymbolsV1Marker; use icu_provider::prelude::*; use icu_timezone::scaffold::IntoOption; use writeable::TryWriteable; @@ -206,22 +199,7 @@ where #[cfg(feature = "compiled_data")] pub fn try_new(locale: &DataLocale, field_set: FSet) -> Result where - crate::provider::Baked: Sized - // Date formatting markers - + DataProvider<>::YearNamesV1Marker> - + DataProvider<>::MonthNamesV1Marker> - + DataProvider<>::DateSkeletonPatternsV1Marker> - + DataProvider<>::WeekdayNamesV1Marker> - + DataProvider<::DayPeriodNamesV1Marker> - + DataProvider<::TimeSkeletonPatternsV1Marker> - + DataProvider<::EssentialsV1Marker> - + DataProvider<::LocationsV1Marker> - + DataProvider<::GenericLongV1Marker> - + DataProvider<::GenericShortV1Marker> - + DataProvider<::SpecificLongV1Marker> - + DataProvider<::SpecificShortV1Marker> - + DataProvider<::MetazonePeriodV1Marker> - + DataProvider, + crate::provider::Baked: AllFixedCalendarFormattingDataMarkers, { Self::try_new_internal( &crate::provider::Baked, @@ -249,23 +227,8 @@ where ) -> Result where P: ?Sized - // Date formatting markers - + DataProvider<>::YearNamesV1Marker> - + DataProvider<>::MonthNamesV1Marker> - + DataProvider<>::DateSkeletonPatternsV1Marker> - + DataProvider<>::WeekdayNamesV1Marker> - + DataProvider<::DayPeriodNamesV1Marker> - + DataProvider<::TimeSkeletonPatternsV1Marker> - + DataProvider<::EssentialsV1Marker> - + DataProvider<::LocationsV1Marker> - + DataProvider<::GenericLongV1Marker> - + DataProvider<::GenericShortV1Marker> - + DataProvider<::SpecificLongV1Marker> - + DataProvider<::SpecificShortV1Marker> - + DataProvider<::MetazonePeriodV1Marker> - + DataProvider - // FixedDecimalFormatter markers - + DataProvider, + + AllFixedCalendarFormattingDataMarkers + + AllFixedCalendarExternalDataMarkers, { Self::try_new_internal( provider, @@ -394,22 +357,7 @@ where #[cfg(feature = "compiled_data")] pub fn try_new_with_skeleton(locale: &DataLocale, skeleton: FSet) -> Result where - crate::provider::Baked: Sized - // Date formatting markers - + DataProvider<>::YearNamesV1Marker> - + DataProvider<>::MonthNamesV1Marker> - + DataProvider<>::DateSkeletonPatternsV1Marker> - + DataProvider<>::WeekdayNamesV1Marker> - + DataProvider<::DayPeriodNamesV1Marker> - + DataProvider<::TimeSkeletonPatternsV1Marker> - + DataProvider<::EssentialsV1Marker> - + DataProvider<::LocationsV1Marker> - + DataProvider<::GenericLongV1Marker> - + DataProvider<::GenericShortV1Marker> - + DataProvider<::SpecificLongV1Marker> - + DataProvider<::SpecificShortV1Marker> - + DataProvider<::MetazonePeriodV1Marker> - + DataProvider, + crate::provider::Baked: AllFixedCalendarFormattingDataMarkers, { Self::try_new_internal( &crate::provider::Baked, @@ -437,23 +385,8 @@ where ) -> Result where P: ?Sized - // Date formatting markers - + DataProvider<>::YearNamesV1Marker> - + DataProvider<>::MonthNamesV1Marker> - + DataProvider<>::DateSkeletonPatternsV1Marker> - + DataProvider<>::WeekdayNamesV1Marker> - + DataProvider<::DayPeriodNamesV1Marker> - + DataProvider<::TimeSkeletonPatternsV1Marker> - + DataProvider<::EssentialsV1Marker> - + DataProvider<::LocationsV1Marker> - + DataProvider<::GenericLongV1Marker> - + DataProvider<::GenericShortV1Marker> - + DataProvider<::SpecificLongV1Marker> - + DataProvider<::SpecificShortV1Marker> - + DataProvider<::MetazonePeriodV1Marker> - + DataProvider - // FixedDecimalFormatter markers - + DataProvider, + + AllFixedCalendarFormattingDataMarkers + + AllFixedCalendarExternalDataMarkers, { Self::try_new_internal( provider, @@ -479,22 +412,7 @@ where components: NeoComponents, ) -> Result where - P: ?Sized - // Date formatting markers - + DataProvider<>::YearNamesV1Marker> - + DataProvider<>::MonthNamesV1Marker> - + DataProvider<>::DateSkeletonPatternsV1Marker> - + DataProvider<>::WeekdayNamesV1Marker> - + DataProvider<::DayPeriodNamesV1Marker> - + DataProvider<::TimeSkeletonPatternsV1Marker> - + DataProvider<::EssentialsV1Marker> - + DataProvider<::LocationsV1Marker> - + DataProvider<::GenericLongV1Marker> - + DataProvider<::GenericShortV1Marker> - + DataProvider<::SpecificLongV1Marker> - + DataProvider<::SpecificShortV1Marker> - + DataProvider<::MetazonePeriodV1Marker> - + DataProvider, + P: ?Sized + AllFixedCalendarFormattingDataMarkers, L: FixedDecimalFormatterLoader, { // TODO: Remove this when NeoOptions is gone @@ -676,70 +594,7 @@ where #[cfg(feature = "compiled_data")] pub fn try_new(locale: &DataLocale, field_set: FSet) -> Result where - crate::provider::Baked: Sized - // Date formatting markers - + DataProvider<<::Year as CalMarkers>::Buddhist> - + DataProvider<<::Year as CalMarkers>::Chinese> - + DataProvider<<::Year as CalMarkers>::Coptic> - + DataProvider<<::Year as CalMarkers>::Dangi> - + DataProvider<<::Year as CalMarkers>::Ethiopian> - + DataProvider<<::Year as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Year as CalMarkers>::Gregorian> - + DataProvider<<::Year as CalMarkers>::Hebrew> - + DataProvider<<::Year as CalMarkers>::Indian> - + DataProvider<<::Year as CalMarkers>::IslamicCivil> - + DataProvider<<::Year as CalMarkers>::IslamicObservational> - + DataProvider<<::Year as CalMarkers>::IslamicTabular> - + DataProvider<<::Year as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Year as CalMarkers>::Japanese> - + DataProvider<<::Year as CalMarkers>::JapaneseExtended> - + DataProvider<<::Year as CalMarkers>::Persian> - + DataProvider<<::Year as CalMarkers>::Roc> - + DataProvider<<::Month as CalMarkers>::Buddhist> - + DataProvider<<::Month as CalMarkers>::Chinese> - + DataProvider<<::Month as CalMarkers>::Coptic> - + DataProvider<<::Month as CalMarkers>::Dangi> - + DataProvider<<::Month as CalMarkers>::Ethiopian> - + DataProvider<<::Month as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Month as CalMarkers>::Gregorian> - + DataProvider<<::Month as CalMarkers>::Hebrew> - + DataProvider<<::Month as CalMarkers>::Indian> - + DataProvider<<::Month as CalMarkers>::IslamicCivil> - + DataProvider<<::Month as CalMarkers>::IslamicObservational> - + DataProvider<<::Month as CalMarkers>::IslamicTabular> - + DataProvider<<::Month as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Month as CalMarkers>::Japanese> - + DataProvider<<::Month as CalMarkers>::JapaneseExtended> - + DataProvider<<::Month as CalMarkers>::Persian> - + DataProvider<<::Month as CalMarkers>::Roc> - + DataProvider<<::Skel as CalMarkers>::Buddhist> - + DataProvider<<::Skel as CalMarkers>::Chinese> - + DataProvider<<::Skel as CalMarkers>::Coptic> - + DataProvider<<::Skel as CalMarkers>::Dangi> - + DataProvider<<::Skel as CalMarkers>::Ethiopian> - + DataProvider<<::Skel as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Skel as CalMarkers>::Gregorian> - + DataProvider<<::Skel as CalMarkers>::Hebrew> - + DataProvider<<::Skel as CalMarkers>::Indian> - + DataProvider<<::Skel as CalMarkers>::IslamicCivil> - + DataProvider<<::Skel as CalMarkers>::IslamicObservational> - + DataProvider<<::Skel as CalMarkers>::IslamicTabular> - + DataProvider<<::Skel as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Skel as CalMarkers>::Japanese> - + DataProvider<<::Skel as CalMarkers>::JapaneseExtended> - + DataProvider<<::Skel as CalMarkers>::Persian> - + DataProvider<<::Skel as CalMarkers>::Roc> - + DataProvider<::WeekdayNamesV1Marker> - + DataProvider<::DayPeriodNamesV1Marker> - + DataProvider<::TimeSkeletonPatternsV1Marker> - + DataProvider<::EssentialsV1Marker> - + DataProvider<::LocationsV1Marker> - + DataProvider<::GenericLongV1Marker> - + DataProvider<::GenericShortV1Marker> - + DataProvider<::SpecificLongV1Marker> - + DataProvider<::SpecificShortV1Marker> - + DataProvider<::MetazonePeriodV1Marker> - + DataProvider, + crate::provider::Baked: AllAnyCalendarFormattingDataMarkers, { Self::try_new_internal( &crate::provider::Baked, @@ -766,79 +621,7 @@ where field_set: FSet, ) -> Result where - P: ?Sized - // Date formatting markers - + DataProvider<<::Year as CalMarkers>::Buddhist> - + DataProvider<<::Year as CalMarkers>::Chinese> - + DataProvider<<::Year as CalMarkers>::Coptic> - + DataProvider<<::Year as CalMarkers>::Dangi> - + DataProvider<<::Year as CalMarkers>::Ethiopian> - + DataProvider<<::Year as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Year as CalMarkers>::Gregorian> - + DataProvider<<::Year as CalMarkers>::Hebrew> - + DataProvider<<::Year as CalMarkers>::Indian> - + DataProvider<<::Year as CalMarkers>::IslamicCivil> - + DataProvider<<::Year as CalMarkers>::IslamicObservational> - + DataProvider<<::Year as CalMarkers>::IslamicTabular> - + DataProvider<<::Year as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Year as CalMarkers>::Japanese> - + DataProvider<<::Year as CalMarkers>::JapaneseExtended> - + DataProvider<<::Year as CalMarkers>::Persian> - + DataProvider<<::Year as CalMarkers>::Roc> - + DataProvider<<::Month as CalMarkers>::Buddhist> - + DataProvider<<::Month as CalMarkers>::Chinese> - + DataProvider<<::Month as CalMarkers>::Coptic> - + DataProvider<<::Month as CalMarkers>::Dangi> - + DataProvider<<::Month as CalMarkers>::Ethiopian> - + DataProvider<<::Month as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Month as CalMarkers>::Gregorian> - + DataProvider<<::Month as CalMarkers>::Hebrew> - + DataProvider<<::Month as CalMarkers>::Indian> - + DataProvider<<::Month as CalMarkers>::IslamicCivil> - + DataProvider<<::Month as CalMarkers>::IslamicObservational> - + DataProvider<<::Month as CalMarkers>::IslamicTabular> - + DataProvider<<::Month as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Month as CalMarkers>::Japanese> - + DataProvider<<::Month as CalMarkers>::JapaneseExtended> - + DataProvider<<::Month as CalMarkers>::Persian> - + DataProvider<<::Month as CalMarkers>::Roc> - + DataProvider<<::Skel as CalMarkers>::Buddhist> - + DataProvider<<::Skel as CalMarkers>::Chinese> - + DataProvider<<::Skel as CalMarkers>::Coptic> - + DataProvider<<::Skel as CalMarkers>::Dangi> - + DataProvider<<::Skel as CalMarkers>::Ethiopian> - + DataProvider<<::Skel as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Skel as CalMarkers>::Gregorian> - + DataProvider<<::Skel as CalMarkers>::Hebrew> - + DataProvider<<::Skel as CalMarkers>::Indian> - + DataProvider<<::Skel as CalMarkers>::IslamicCivil> - + DataProvider<<::Skel as CalMarkers>::IslamicObservational> - + DataProvider<<::Skel as CalMarkers>::IslamicTabular> - + DataProvider<<::Skel as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Skel as CalMarkers>::Japanese> - + DataProvider<<::Skel as CalMarkers>::JapaneseExtended> - + DataProvider<<::Skel as CalMarkers>::Persian> - + DataProvider<<::Skel as CalMarkers>::Roc> - + DataProvider<::WeekdayNamesV1Marker> - + DataProvider<::DayPeriodNamesV1Marker> - + DataProvider<::TimeSkeletonPatternsV1Marker> - + DataProvider<::EssentialsV1Marker> - + DataProvider<::LocationsV1Marker> - + DataProvider<::GenericLongV1Marker> - + DataProvider<::GenericShortV1Marker> - + DataProvider<::SpecificLongV1Marker> - + DataProvider<::SpecificShortV1Marker> - + DataProvider<::MetazonePeriodV1Marker> - + DataProvider - // AnyCalendar constructor markers - + DataProvider - + DataProvider - + DataProvider - + DataProvider - + DataProvider - + DataProvider - // FixedDecimalFormatter markers - + DataProvider + P: ?Sized + AllAnyCalendarFormattingDataMarkers + AllAnyCalendarExternalDataMarkers, { Self::try_new_internal( provider, @@ -963,70 +746,7 @@ where #[cfg(feature = "compiled_data")] pub fn try_new_with_skeleton(locale: &DataLocale, skeleton: FSet) -> Result where - crate::provider::Baked: Sized - // Date formatting markers - + DataProvider<<::Year as CalMarkers>::Buddhist> - + DataProvider<<::Year as CalMarkers>::Chinese> - + DataProvider<<::Year as CalMarkers>::Coptic> - + DataProvider<<::Year as CalMarkers>::Dangi> - + DataProvider<<::Year as CalMarkers>::Ethiopian> - + DataProvider<<::Year as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Year as CalMarkers>::Gregorian> - + DataProvider<<::Year as CalMarkers>::Hebrew> - + DataProvider<<::Year as CalMarkers>::Indian> - + DataProvider<<::Year as CalMarkers>::IslamicCivil> - + DataProvider<<::Year as CalMarkers>::IslamicObservational> - + DataProvider<<::Year as CalMarkers>::IslamicTabular> - + DataProvider<<::Year as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Year as CalMarkers>::Japanese> - + DataProvider<<::Year as CalMarkers>::JapaneseExtended> - + DataProvider<<::Year as CalMarkers>::Persian> - + DataProvider<<::Year as CalMarkers>::Roc> - + DataProvider<<::Month as CalMarkers>::Buddhist> - + DataProvider<<::Month as CalMarkers>::Chinese> - + DataProvider<<::Month as CalMarkers>::Coptic> - + DataProvider<<::Month as CalMarkers>::Dangi> - + DataProvider<<::Month as CalMarkers>::Ethiopian> - + DataProvider<<::Month as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Month as CalMarkers>::Gregorian> - + DataProvider<<::Month as CalMarkers>::Hebrew> - + DataProvider<<::Month as CalMarkers>::Indian> - + DataProvider<<::Month as CalMarkers>::IslamicCivil> - + DataProvider<<::Month as CalMarkers>::IslamicObservational> - + DataProvider<<::Month as CalMarkers>::IslamicTabular> - + DataProvider<<::Month as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Month as CalMarkers>::Japanese> - + DataProvider<<::Month as CalMarkers>::JapaneseExtended> - + DataProvider<<::Month as CalMarkers>::Persian> - + DataProvider<<::Month as CalMarkers>::Roc> - + DataProvider<<::Skel as CalMarkers>::Buddhist> - + DataProvider<<::Skel as CalMarkers>::Chinese> - + DataProvider<<::Skel as CalMarkers>::Coptic> - + DataProvider<<::Skel as CalMarkers>::Dangi> - + DataProvider<<::Skel as CalMarkers>::Ethiopian> - + DataProvider<<::Skel as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Skel as CalMarkers>::Gregorian> - + DataProvider<<::Skel as CalMarkers>::Hebrew> - + DataProvider<<::Skel as CalMarkers>::Indian> - + DataProvider<<::Skel as CalMarkers>::IslamicCivil> - + DataProvider<<::Skel as CalMarkers>::IslamicObservational> - + DataProvider<<::Skel as CalMarkers>::IslamicTabular> - + DataProvider<<::Skel as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Skel as CalMarkers>::Japanese> - + DataProvider<<::Skel as CalMarkers>::JapaneseExtended> - + DataProvider<<::Skel as CalMarkers>::Persian> - + DataProvider<<::Skel as CalMarkers>::Roc> - + DataProvider<::WeekdayNamesV1Marker> - + DataProvider<::DayPeriodNamesV1Marker> - + DataProvider<::TimeSkeletonPatternsV1Marker> - + DataProvider<::EssentialsV1Marker> - + DataProvider<::LocationsV1Marker> - + DataProvider<::GenericLongV1Marker> - + DataProvider<::GenericShortV1Marker> - + DataProvider<::SpecificLongV1Marker> - + DataProvider<::SpecificShortV1Marker> - + DataProvider<::MetazonePeriodV1Marker> - + DataProvider + crate::provider::Baked: AllAnyCalendarFormattingDataMarkers, { Self::try_new_internal( &crate::provider::Baked, @@ -1053,79 +773,7 @@ where skeleton: FSet, ) -> Result where - P: ?Sized - // Date formatting markers - + DataProvider<<::Year as CalMarkers>::Buddhist> - + DataProvider<<::Year as CalMarkers>::Chinese> - + DataProvider<<::Year as CalMarkers>::Coptic> - + DataProvider<<::Year as CalMarkers>::Dangi> - + DataProvider<<::Year as CalMarkers>::Ethiopian> - + DataProvider<<::Year as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Year as CalMarkers>::Gregorian> - + DataProvider<<::Year as CalMarkers>::Hebrew> - + DataProvider<<::Year as CalMarkers>::Indian> - + DataProvider<<::Year as CalMarkers>::IslamicCivil> - + DataProvider<<::Year as CalMarkers>::IslamicObservational> - + DataProvider<<::Year as CalMarkers>::IslamicTabular> - + DataProvider<<::Year as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Year as CalMarkers>::Japanese> - + DataProvider<<::Year as CalMarkers>::JapaneseExtended> - + DataProvider<<::Year as CalMarkers>::Persian> - + DataProvider<<::Year as CalMarkers>::Roc> - + DataProvider<<::Month as CalMarkers>::Buddhist> - + DataProvider<<::Month as CalMarkers>::Chinese> - + DataProvider<<::Month as CalMarkers>::Coptic> - + DataProvider<<::Month as CalMarkers>::Dangi> - + DataProvider<<::Month as CalMarkers>::Ethiopian> - + DataProvider<<::Month as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Month as CalMarkers>::Gregorian> - + DataProvider<<::Month as CalMarkers>::Hebrew> - + DataProvider<<::Month as CalMarkers>::Indian> - + DataProvider<<::Month as CalMarkers>::IslamicCivil> - + DataProvider<<::Month as CalMarkers>::IslamicObservational> - + DataProvider<<::Month as CalMarkers>::IslamicTabular> - + DataProvider<<::Month as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Month as CalMarkers>::Japanese> - + DataProvider<<::Month as CalMarkers>::JapaneseExtended> - + DataProvider<<::Month as CalMarkers>::Persian> - + DataProvider<<::Month as CalMarkers>::Roc> - + DataProvider<<::Skel as CalMarkers>::Buddhist> - + DataProvider<<::Skel as CalMarkers>::Chinese> - + DataProvider<<::Skel as CalMarkers>::Coptic> - + DataProvider<<::Skel as CalMarkers>::Dangi> - + DataProvider<<::Skel as CalMarkers>::Ethiopian> - + DataProvider<<::Skel as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Skel as CalMarkers>::Gregorian> - + DataProvider<<::Skel as CalMarkers>::Hebrew> - + DataProvider<<::Skel as CalMarkers>::Indian> - + DataProvider<<::Skel as CalMarkers>::IslamicCivil> - + DataProvider<<::Skel as CalMarkers>::IslamicObservational> - + DataProvider<<::Skel as CalMarkers>::IslamicTabular> - + DataProvider<<::Skel as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Skel as CalMarkers>::Japanese> - + DataProvider<<::Skel as CalMarkers>::JapaneseExtended> - + DataProvider<<::Skel as CalMarkers>::Persian> - + DataProvider<<::Skel as CalMarkers>::Roc> - + DataProvider<::WeekdayNamesV1Marker> - + DataProvider<::DayPeriodNamesV1Marker> - + DataProvider<::TimeSkeletonPatternsV1Marker> - + DataProvider<::EssentialsV1Marker> - + DataProvider<::LocationsV1Marker> - + DataProvider<::GenericLongV1Marker> - + DataProvider<::GenericShortV1Marker> - + DataProvider<::SpecificLongV1Marker> - + DataProvider<::SpecificShortV1Marker> - + DataProvider<::MetazonePeriodV1Marker> - + DataProvider - // AnyCalendar constructor markers - + DataProvider - + DataProvider - + DataProvider - + DataProvider - + DataProvider - + DataProvider - // FixedDecimalFormatter markers - + DataProvider + P: ?Sized + AllAnyCalendarFormattingDataMarkers + AllAnyCalendarExternalDataMarkers, { Self::try_new_internal( provider, @@ -1151,70 +799,7 @@ where components: NeoComponents, ) -> Result where - P: ?Sized - // Date formatting markers - + DataProvider<<::Year as CalMarkers>::Buddhist> - + DataProvider<<::Year as CalMarkers>::Chinese> - + DataProvider<<::Year as CalMarkers>::Coptic> - + DataProvider<<::Year as CalMarkers>::Dangi> - + DataProvider<<::Year as CalMarkers>::Ethiopian> - + DataProvider<<::Year as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Year as CalMarkers>::Gregorian> - + DataProvider<<::Year as CalMarkers>::Hebrew> - + DataProvider<<::Year as CalMarkers>::Indian> - + DataProvider<<::Year as CalMarkers>::IslamicCivil> - + DataProvider<<::Year as CalMarkers>::IslamicObservational> - + DataProvider<<::Year as CalMarkers>::IslamicTabular> - + DataProvider<<::Year as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Year as CalMarkers>::Japanese> - + DataProvider<<::Year as CalMarkers>::JapaneseExtended> - + DataProvider<<::Year as CalMarkers>::Persian> - + DataProvider<<::Year as CalMarkers>::Roc> - + DataProvider<<::Month as CalMarkers>::Buddhist> - + DataProvider<<::Month as CalMarkers>::Chinese> - + DataProvider<<::Month as CalMarkers>::Coptic> - + DataProvider<<::Month as CalMarkers>::Dangi> - + DataProvider<<::Month as CalMarkers>::Ethiopian> - + DataProvider<<::Month as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Month as CalMarkers>::Gregorian> - + DataProvider<<::Month as CalMarkers>::Hebrew> - + DataProvider<<::Month as CalMarkers>::Indian> - + DataProvider<<::Month as CalMarkers>::IslamicCivil> - + DataProvider<<::Month as CalMarkers>::IslamicObservational> - + DataProvider<<::Month as CalMarkers>::IslamicTabular> - + DataProvider<<::Month as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Month as CalMarkers>::Japanese> - + DataProvider<<::Month as CalMarkers>::JapaneseExtended> - + DataProvider<<::Month as CalMarkers>::Persian> - + DataProvider<<::Month as CalMarkers>::Roc> - + DataProvider<<::Skel as CalMarkers>::Buddhist> - + DataProvider<<::Skel as CalMarkers>::Chinese> - + DataProvider<<::Skel as CalMarkers>::Coptic> - + DataProvider<<::Skel as CalMarkers>::Dangi> - + DataProvider<<::Skel as CalMarkers>::Ethiopian> - + DataProvider<<::Skel as CalMarkers>::EthiopianAmeteAlem> - + DataProvider<<::Skel as CalMarkers>::Gregorian> - + DataProvider<<::Skel as CalMarkers>::Hebrew> - + DataProvider<<::Skel as CalMarkers>::Indian> - + DataProvider<<::Skel as CalMarkers>::IslamicCivil> - + DataProvider<<::Skel as CalMarkers>::IslamicObservational> - + DataProvider<<::Skel as CalMarkers>::IslamicTabular> - + DataProvider<<::Skel as CalMarkers>::IslamicUmmAlQura> - + DataProvider<<::Skel as CalMarkers>::Japanese> - + DataProvider<<::Skel as CalMarkers>::JapaneseExtended> - + DataProvider<<::Skel as CalMarkers>::Persian> - + DataProvider<<::Skel as CalMarkers>::Roc> - + DataProvider<::WeekdayNamesV1Marker> - + DataProvider<::DayPeriodNamesV1Marker> - + DataProvider<::TimeSkeletonPatternsV1Marker> - + DataProvider<::EssentialsV1Marker> - + DataProvider<::LocationsV1Marker> - + DataProvider<::GenericLongV1Marker> - + DataProvider<::GenericShortV1Marker> - + DataProvider<::SpecificLongV1Marker> - + DataProvider<::SpecificShortV1Marker> - + DataProvider<::MetazonePeriodV1Marker> - + DataProvider, + P: ?Sized + AllAnyCalendarFormattingDataMarkers, L: FixedDecimalFormatterLoader + AnyCalendarLoader, { // TODO: Remove this when NeoOptions is gone diff --git a/components/datetime/src/scaffold/fieldset_traits.rs b/components/datetime/src/scaffold/fieldset_traits.rs index 38c276dff29..d8ab610c99e 100644 --- a/components/datetime/src/scaffold/fieldset_traits.rs +++ b/components/datetime/src/scaffold/fieldset_traits.rs @@ -9,11 +9,16 @@ use crate::{ scaffold::*, }; use icu_calendar::{ + provider::{ + ChineseCacheV1Marker, DangiCacheV1Marker, IslamicObservationalCacheV1Marker, + IslamicUmmAlQuraCacheV1Marker, JapaneseErasV1Marker, JapaneseExtendedErasV1Marker, + }, types::{ DayOfMonth, IsoHour, IsoMinute, IsoSecond, IsoWeekday, MonthInfo, NanoSecond, YearInfo, }, AnyCalendarKind, Date, Iso, Time, }; +use icu_decimal::provider::DecimalSymbolsV1Marker; use icu_provider::{marker::NeverMarker, prelude::*}; use icu_timezone::scaffold::IntoOption; use icu_timezone::{TimeZoneBcp47Id, UtcOffset, ZoneVariant}; @@ -203,6 +208,233 @@ where { } +/// Trait to consolidate data provider markers defined by this crate +/// for datetime formatting with a fixed calendar. +pub trait AllFixedCalendarFormattingDataMarkers: + DataProvider<>::YearNamesV1Marker> + + DataProvider<>::MonthNamesV1Marker> + + DataProvider<>::DateSkeletonPatternsV1Marker> + + DataProvider<>::WeekdayNamesV1Marker> + + DataProvider<::DayPeriodNamesV1Marker> + + DataProvider<::TimeSkeletonPatternsV1Marker> + + DataProvider<::EssentialsV1Marker> + + DataProvider<::LocationsV1Marker> + + DataProvider<::GenericLongV1Marker> + + DataProvider<::GenericShortV1Marker> + + DataProvider<::SpecificLongV1Marker> + + DataProvider<::SpecificShortV1Marker> + + DataProvider<::MetazonePeriodV1Marker> + + DataProvider +where + FSet::D: TypedDateDataMarkers, + FSet::T: TimeMarkers, + FSet::Z: ZoneMarkers, +{ +} + +impl AllFixedCalendarFormattingDataMarkers for T +where + C: CldrCalendar, + FSet: DateTimeMarkers, + FSet::D: TypedDateDataMarkers, + FSet::T: TimeMarkers, + FSet::Z: ZoneMarkers, + T: ?Sized + + DataProvider<>::YearNamesV1Marker> + + DataProvider<>::MonthNamesV1Marker> + + DataProvider<>::DateSkeletonPatternsV1Marker> + + DataProvider<>::WeekdayNamesV1Marker> + + DataProvider<::DayPeriodNamesV1Marker> + + DataProvider<::TimeSkeletonPatternsV1Marker> + + DataProvider<::EssentialsV1Marker> + + DataProvider<::LocationsV1Marker> + + DataProvider<::GenericLongV1Marker> + + DataProvider<::GenericShortV1Marker> + + DataProvider<::SpecificLongV1Marker> + + DataProvider<::SpecificShortV1Marker> + + DataProvider<::MetazonePeriodV1Marker> + + DataProvider, +{ +} + +/// Trait to consolidate data provider markers defined by this crate +/// for datetime formatting with any calendar. +pub trait AllAnyCalendarFormattingDataMarkers: + DataProvider<<::Year as CalMarkers>::Buddhist> + + DataProvider<<::Year as CalMarkers>::Chinese> + + DataProvider<<::Year as CalMarkers>::Coptic> + + DataProvider<<::Year as CalMarkers>::Dangi> + + DataProvider<<::Year as CalMarkers>::Ethiopian> + + DataProvider<<::Year as CalMarkers>::EthiopianAmeteAlem> + + DataProvider<<::Year as CalMarkers>::Gregorian> + + DataProvider<<::Year as CalMarkers>::Hebrew> + + DataProvider<<::Year as CalMarkers>::Indian> + + DataProvider<<::Year as CalMarkers>::IslamicCivil> + + DataProvider<<::Year as CalMarkers>::IslamicObservational> + + DataProvider<<::Year as CalMarkers>::IslamicTabular> + + DataProvider<<::Year as CalMarkers>::IslamicUmmAlQura> + + DataProvider<<::Year as CalMarkers>::Japanese> + + DataProvider<<::Year as CalMarkers>::JapaneseExtended> + + DataProvider<<::Year as CalMarkers>::Persian> + + DataProvider<<::Year as CalMarkers>::Roc> + + DataProvider<<::Month as CalMarkers>::Buddhist> + + DataProvider<<::Month as CalMarkers>::Chinese> + + DataProvider<<::Month as CalMarkers>::Coptic> + + DataProvider<<::Month as CalMarkers>::Dangi> + + DataProvider<<::Month as CalMarkers>::Ethiopian> + + DataProvider<<::Month as CalMarkers>::EthiopianAmeteAlem> + + DataProvider<<::Month as CalMarkers>::Gregorian> + + DataProvider<<::Month as CalMarkers>::Hebrew> + + DataProvider<<::Month as CalMarkers>::Indian> + + DataProvider<<::Month as CalMarkers>::IslamicCivil> + + DataProvider<<::Month as CalMarkers>::IslamicObservational> + + DataProvider<<::Month as CalMarkers>::IslamicTabular> + + DataProvider<<::Month as CalMarkers>::IslamicUmmAlQura> + + DataProvider<<::Month as CalMarkers>::Japanese> + + DataProvider<<::Month as CalMarkers>::JapaneseExtended> + + DataProvider<<::Month as CalMarkers>::Persian> + + DataProvider<<::Month as CalMarkers>::Roc> + + DataProvider<<::Skel as CalMarkers>::Buddhist> + + DataProvider<<::Skel as CalMarkers>::Chinese> + + DataProvider<<::Skel as CalMarkers>::Coptic> + + DataProvider<<::Skel as CalMarkers>::Dangi> + + DataProvider<<::Skel as CalMarkers>::Ethiopian> + + DataProvider<<::Skel as CalMarkers>::EthiopianAmeteAlem> + + DataProvider<<::Skel as CalMarkers>::Gregorian> + + DataProvider<<::Skel as CalMarkers>::Hebrew> + + DataProvider<<::Skel as CalMarkers>::Indian> + + DataProvider<<::Skel as CalMarkers>::IslamicCivil> + + DataProvider<<::Skel as CalMarkers>::IslamicObservational> + + DataProvider<<::Skel as CalMarkers>::IslamicTabular> + + DataProvider<<::Skel as CalMarkers>::IslamicUmmAlQura> + + DataProvider<<::Skel as CalMarkers>::Japanese> + + DataProvider<<::Skel as CalMarkers>::JapaneseExtended> + + DataProvider<<::Skel as CalMarkers>::Persian> + + DataProvider<<::Skel as CalMarkers>::Roc> + + DataProvider<::WeekdayNamesV1Marker> + + DataProvider<::DayPeriodNamesV1Marker> + + DataProvider<::TimeSkeletonPatternsV1Marker> + + DataProvider<::EssentialsV1Marker> + + DataProvider<::LocationsV1Marker> + + DataProvider<::GenericLongV1Marker> + + DataProvider<::GenericShortV1Marker> + + DataProvider<::SpecificLongV1Marker> + + DataProvider<::SpecificShortV1Marker> + + DataProvider<::MetazonePeriodV1Marker> + + DataProvider +where + FSet::D: DateDataMarkers, + FSet::T: TimeMarkers, + FSet::Z: ZoneMarkers, +{ +} + +impl AllAnyCalendarFormattingDataMarkers for T +where + FSet: DateTimeMarkers, + FSet::D: DateDataMarkers, + FSet::T: TimeMarkers, + FSet::Z: ZoneMarkers, + T: ?Sized + + DataProvider<<::Year as CalMarkers>::Buddhist> + + DataProvider<<::Year as CalMarkers>::Chinese> + + DataProvider<<::Year as CalMarkers>::Coptic> + + DataProvider<<::Year as CalMarkers>::Dangi> + + DataProvider<<::Year as CalMarkers>::Ethiopian> + + DataProvider<<::Year as CalMarkers>::EthiopianAmeteAlem> + + DataProvider<<::Year as CalMarkers>::Gregorian> + + DataProvider<<::Year as CalMarkers>::Hebrew> + + DataProvider<<::Year as CalMarkers>::Indian> + + DataProvider<<::Year as CalMarkers>::IslamicCivil> + + DataProvider<<::Year as CalMarkers>::IslamicObservational> + + DataProvider<<::Year as CalMarkers>::IslamicTabular> + + DataProvider<<::Year as CalMarkers>::IslamicUmmAlQura> + + DataProvider<<::Year as CalMarkers>::Japanese> + + DataProvider<<::Year as CalMarkers>::JapaneseExtended> + + DataProvider<<::Year as CalMarkers>::Persian> + + DataProvider<<::Year as CalMarkers>::Roc> + + DataProvider<<::Month as CalMarkers>::Buddhist> + + DataProvider<<::Month as CalMarkers>::Chinese> + + DataProvider<<::Month as CalMarkers>::Coptic> + + DataProvider<<::Month as CalMarkers>::Dangi> + + DataProvider<<::Month as CalMarkers>::Ethiopian> + + DataProvider<<::Month as CalMarkers>::EthiopianAmeteAlem> + + DataProvider<<::Month as CalMarkers>::Gregorian> + + DataProvider<<::Month as CalMarkers>::Hebrew> + + DataProvider<<::Month as CalMarkers>::Indian> + + DataProvider<<::Month as CalMarkers>::IslamicCivil> + + DataProvider<<::Month as CalMarkers>::IslamicObservational> + + DataProvider<<::Month as CalMarkers>::IslamicTabular> + + DataProvider<<::Month as CalMarkers>::IslamicUmmAlQura> + + DataProvider<<::Month as CalMarkers>::Japanese> + + DataProvider<<::Month as CalMarkers>::JapaneseExtended> + + DataProvider<<::Month as CalMarkers>::Persian> + + DataProvider<<::Month as CalMarkers>::Roc> + + DataProvider<<::Skel as CalMarkers>::Buddhist> + + DataProvider<<::Skel as CalMarkers>::Chinese> + + DataProvider<<::Skel as CalMarkers>::Coptic> + + DataProvider<<::Skel as CalMarkers>::Dangi> + + DataProvider<<::Skel as CalMarkers>::Ethiopian> + + DataProvider<<::Skel as CalMarkers>::EthiopianAmeteAlem> + + DataProvider<<::Skel as CalMarkers>::Gregorian> + + DataProvider<<::Skel as CalMarkers>::Hebrew> + + DataProvider<<::Skel as CalMarkers>::Indian> + + DataProvider<<::Skel as CalMarkers>::IslamicCivil> + + DataProvider<<::Skel as CalMarkers>::IslamicObservational> + + DataProvider<<::Skel as CalMarkers>::IslamicTabular> + + DataProvider<<::Skel as CalMarkers>::IslamicUmmAlQura> + + DataProvider<<::Skel as CalMarkers>::Japanese> + + DataProvider<<::Skel as CalMarkers>::JapaneseExtended> + + DataProvider<<::Skel as CalMarkers>::Persian> + + DataProvider<<::Skel as CalMarkers>::Roc> + + DataProvider<::WeekdayNamesV1Marker> + + DataProvider<::DayPeriodNamesV1Marker> + + DataProvider<::TimeSkeletonPatternsV1Marker> + + DataProvider<::EssentialsV1Marker> + + DataProvider<::LocationsV1Marker> + + DataProvider<::GenericLongV1Marker> + + DataProvider<::GenericShortV1Marker> + + DataProvider<::SpecificLongV1Marker> + + DataProvider<::SpecificShortV1Marker> + + DataProvider<::MetazonePeriodV1Marker> + + DataProvider +{ +} + +/// Trait to consolidate data provider markers external to this crate +/// for datetime formatting with a fixed calendar. +pub trait AllFixedCalendarExternalDataMarkers: DataProvider {} + +impl AllFixedCalendarExternalDataMarkers for T where + T: ?Sized + DataProvider +{ +} + +/// Trait to consolidate data provider markers external to this crate +/// for datetime formatting with any calendar. +pub trait AllAnyCalendarExternalDataMarkers: + DataProvider + + DataProvider + + DataProvider + + DataProvider + + DataProvider + + DataProvider + + DataProvider +{ +} + +impl AllAnyCalendarExternalDataMarkers for T where + T: ?Sized + + DataProvider + + DataProvider + + DataProvider + + DataProvider + + DataProvider + + DataProvider + + DataProvider +{ +} + /// A struct implementing traits for never loading data. #[derive(Debug)] #[allow(clippy::exhaustive_enums)] // empty marker enum diff --git a/components/datetime/src/scaffold/mod.rs b/components/datetime/src/scaffold/mod.rs index 159f257aa8d..bd4ba24aa8a 100644 --- a/components/datetime/src/scaffold/mod.rs +++ b/components/datetime/src/scaffold/mod.rs @@ -21,6 +21,10 @@ pub use calendar::IsInCalendar; pub use calendar::NoDataCalMarkers; pub(crate) use fieldset_traits::datetime_marker_helper; +pub use fieldset_traits::AllAnyCalendarExternalDataMarkers; +pub use fieldset_traits::AllAnyCalendarFormattingDataMarkers; +pub use fieldset_traits::AllFixedCalendarExternalDataMarkers; +pub use fieldset_traits::AllFixedCalendarFormattingDataMarkers; pub use fieldset_traits::AllInputMarkers; pub use fieldset_traits::DateDataMarkers; pub use fieldset_traits::DateInputMarkers;