1use crate::{
6 provider::{neo::*, time_zones::tz, *},
7 scaffold::*,
8};
9use icu_calendar::{
10 provider::{CalendarChineseV1, CalendarDangiV1, CalendarJapaneseModernV1},
11 types::{DayOfMonth, DayOfYear, MonthInfo, Weekday, YearInfo},
12};
13use icu_decimal::provider::{DecimalDigitsV1, DecimalSymbolsV1};
14use icu_provider::{marker::NeverMarker, prelude::*};
15use icu_time::{scaffold::IntoOption, zone::ZoneNameTimestamp};
16use icu_time::{
17 zone::{TimeZoneVariant, UtcOffset},
18 Hour, Minute, Nanosecond, Second, TimeZone,
19};
20
21pub trait DateInputMarkers: UnstableSealed {
33 type YearInput: IntoOption<YearInfo>;
35 type MonthInput: IntoOption<MonthInfo>;
37 type DayOfMonthInput: IntoOption<DayOfMonth>;
39 type DayOfYearInput: IntoOption<DayOfYear>;
41 type DayOfWeekInput: IntoOption<Weekday>;
43}
44
45pub trait TypedDateDataMarkers<C>: UnstableSealed {
55 type DateSkeletonPatternsV1: DataMarker<DataStruct = PackedPatterns<'static>>;
57 type YearNamesV1: DataMarker<DataStruct = YearNames<'static>>;
59 type MonthNamesV1: DataMarker<DataStruct = MonthNames<'static>>;
61 type WeekdayNamesV1: DataMarker<DataStruct = LinearNames<'static>>;
63}
64
65pub trait DateDataMarkers: UnstableSealed {
75 type Skel: CalMarkers<ErasedPackedPatterns>;
77 type Year: CalMarkers<YearNamesV1>;
79 type Month: CalMarkers<MonthNamesV1>;
81 type WeekdayNamesV1: DataMarker<DataStruct = LinearNames<'static>>;
83}
84
85pub trait TimeMarkers: UnstableSealed {
95 type HourInput: IntoOption<Hour>;
97 type MinuteInput: IntoOption<Minute>;
99 type SecondInput: IntoOption<Second>;
101 type NanosecondInput: IntoOption<Nanosecond>;
103 type TimeSkeletonPatternsV1: DataMarker<DataStruct = PackedPatterns<'static>>;
105 type DayPeriodNamesV1: DataMarker<DataStruct = LinearNames<'static>>;
107}
108
109pub trait ZoneMarkers: UnstableSealed {
119 type TimeZoneIdInput: IntoOption<TimeZone>;
121 type TimeZoneOffsetInput: IntoOption<UtcOffset>;
123 type TimeZoneVariantInput: IntoOption<TimeZoneVariant>;
125 type TimeZoneNameTimestampInput: IntoOption<ZoneNameTimestamp>;
127 type EssentialsV1: DataMarker<DataStruct = tz::Essentials<'static>>;
129 type LocationsV1: DataMarker<DataStruct = tz::Locations<'static>>;
131 type LocationsRootV1: DataMarker<DataStruct = tz::Locations<'static>>;
133 type ExemplarCitiesV1: DataMarker<DataStruct = tz::ExemplarCities<'static>>;
135 type ExemplarCitiesRootV1: DataMarker<DataStruct = tz::ExemplarCities<'static>>;
137 type GenericLongV1: DataMarker<DataStruct = tz::MzGeneric<'static>>;
139 type GenericShortV1: DataMarker<DataStruct = tz::MzGeneric<'static>>;
141 type StandardLongV1: DataMarker<DataStruct = tz::MzGeneric<'static>>;
143 type SpecificLongV1: DataMarker<DataStruct = tz::MzSpecific<'static>>;
145 type SpecificShortV1: DataMarker<DataStruct = tz::MzSpecific<'static>>;
147 type MetazonePeriodV1: DataMarker<DataStruct = tz::MzPeriod<'static>>;
149}
150
151pub trait DateTimeMarkers: UnstableSealed + DateTimeNamesMarker {
161 type D;
165 type T;
169 type Z;
173 type GluePatternV1: DataMarker<DataStruct = GluePattern<'static>>;
175}
176
177pub trait AllInputMarkers<R: DateTimeMarkers>:
196 GetField<<R::D as DateInputMarkers>::YearInput>
197 + GetField<<R::D as DateInputMarkers>::MonthInput>
198 + GetField<<R::D as DateInputMarkers>::DayOfMonthInput>
199 + GetField<<R::D as DateInputMarkers>::DayOfWeekInput>
200 + GetField<<R::D as DateInputMarkers>::DayOfYearInput>
201 + GetField<<R::T as TimeMarkers>::HourInput>
202 + GetField<<R::T as TimeMarkers>::MinuteInput>
203 + GetField<<R::T as TimeMarkers>::SecondInput>
204 + GetField<<R::T as TimeMarkers>::NanosecondInput>
205 + GetField<<R::Z as ZoneMarkers>::TimeZoneIdInput>
206 + GetField<<R::Z as ZoneMarkers>::TimeZoneOffsetInput>
207 + GetField<<R::Z as ZoneMarkers>::TimeZoneVariantInput>
208 + GetField<<R::Z as ZoneMarkers>::TimeZoneNameTimestampInput>
209where
210 R::D: DateInputMarkers,
211 R::T: TimeMarkers,
212 R::Z: ZoneMarkers,
213{
214}
215
216impl<T, R> AllInputMarkers<R> for T
217where
218 R: DateTimeMarkers,
219 R::D: DateInputMarkers,
220 R::T: TimeMarkers,
221 R::Z: ZoneMarkers,
222 T: GetField<<R::D as DateInputMarkers>::YearInput>
223 + GetField<<R::D as DateInputMarkers>::MonthInput>
224 + GetField<<R::D as DateInputMarkers>::DayOfMonthInput>
225 + GetField<<R::D as DateInputMarkers>::DayOfWeekInput>
226 + GetField<<R::D as DateInputMarkers>::DayOfYearInput>
227 + GetField<<R::T as TimeMarkers>::HourInput>
228 + GetField<<R::T as TimeMarkers>::MinuteInput>
229 + GetField<<R::T as TimeMarkers>::SecondInput>
230 + GetField<<R::T as TimeMarkers>::NanosecondInput>
231 + GetField<<R::Z as ZoneMarkers>::TimeZoneIdInput>
232 + GetField<<R::Z as ZoneMarkers>::TimeZoneOffsetInput>
233 + GetField<<R::Z as ZoneMarkers>::TimeZoneVariantInput>
234 + GetField<<R::Z as ZoneMarkers>::TimeZoneNameTimestampInput>,
235{
236}
237
238#[rustfmt::skip]
245pub trait AllFixedCalendarPatternDataMarkers<C: CldrCalendar, FSet: DateTimeMarkers>:
246DataProvider<<FSet::D as TypedDateDataMarkers<C>>::DateSkeletonPatternsV1>
247 + DataProvider<<FSet::T as TimeMarkers>::TimeSkeletonPatternsV1>
248 + DataProvider<FSet::GluePatternV1>
249where
250 FSet::D: TypedDateDataMarkers<C>,
251 FSet::T: TimeMarkers,
252 FSet::Z: ZoneMarkers,
253{
254}
255
256#[rustfmt::skip]
257impl<T, C, FSet> AllFixedCalendarPatternDataMarkers<C, FSet> for T
258where
259 C: CldrCalendar,
260 FSet: DateTimeMarkers,
261 FSet::D: TypedDateDataMarkers<C>,
262 FSet::T: TimeMarkers,
263 FSet::Z: ZoneMarkers,
264 T: ?Sized
265 + DataProvider<<FSet::D as TypedDateDataMarkers<C>>::DateSkeletonPatternsV1>
266 + DataProvider<<FSet::T as TimeMarkers>::TimeSkeletonPatternsV1>
267 + DataProvider<FSet::GluePatternV1>,
268{
269}
270
271#[rustfmt::skip]
278pub trait AllFixedCalendarFormattingDataMarkers<C: CldrCalendar, FSet: DateTimeMarkers>:
279 DataProvider<<FSet::D as TypedDateDataMarkers<C>>::YearNamesV1>
280 + DataProvider<<FSet::D as TypedDateDataMarkers<C>>::MonthNamesV1>
281 + DataProvider<<FSet::D as TypedDateDataMarkers<C>>::WeekdayNamesV1>
282 + DataProvider<<FSet::T as TimeMarkers>::DayPeriodNamesV1>
283 + DataProvider<<FSet::Z as ZoneMarkers>::EssentialsV1>
284 + DataProvider<<FSet::Z as ZoneMarkers>::LocationsV1>
285 + DataProvider<<FSet::Z as ZoneMarkers>::LocationsRootV1>
286 + DataProvider<<FSet::Z as ZoneMarkers>::ExemplarCitiesV1>
287 + DataProvider<<FSet::Z as ZoneMarkers>::ExemplarCitiesRootV1>
288 + DataProvider<<FSet::Z as ZoneMarkers>::GenericLongV1>
289 + DataProvider<<FSet::Z as ZoneMarkers>::GenericShortV1>
290 + DataProvider<<FSet::Z as ZoneMarkers>::StandardLongV1>
291 + DataProvider<<FSet::Z as ZoneMarkers>::SpecificLongV1>
292 + DataProvider<<FSet::Z as ZoneMarkers>::SpecificShortV1>
293 + DataProvider<<FSet::Z as ZoneMarkers>::MetazonePeriodV1>
294 + AllFixedCalendarPatternDataMarkers<C, FSet>
295where
296 FSet::D: TypedDateDataMarkers<C>,
297 FSet::T: TimeMarkers,
298 FSet::Z: ZoneMarkers,
299{
300}
301
302#[rustfmt::skip]
303impl<T, C, FSet> AllFixedCalendarFormattingDataMarkers<C, FSet> for T
304where
305 C: CldrCalendar,
306 FSet: DateTimeMarkers,
307 FSet::D: TypedDateDataMarkers<C>,
308 FSet::T: TimeMarkers,
309 FSet::Z: ZoneMarkers,
310 T: ?Sized
311 + DataProvider<<FSet::D as TypedDateDataMarkers<C>>::YearNamesV1>
312 + DataProvider<<FSet::D as TypedDateDataMarkers<C>>::MonthNamesV1>
313 + DataProvider<<FSet::D as TypedDateDataMarkers<C>>::DateSkeletonPatternsV1>
314 + DataProvider<<FSet::D as TypedDateDataMarkers<C>>::WeekdayNamesV1>
315 + DataProvider<<FSet::T as TimeMarkers>::DayPeriodNamesV1>
316 + DataProvider<<FSet::T as TimeMarkers>::TimeSkeletonPatternsV1>
317 + DataProvider<<FSet::Z as ZoneMarkers>::EssentialsV1>
318 + DataProvider<<FSet::Z as ZoneMarkers>::LocationsV1>
319 + DataProvider<<FSet::Z as ZoneMarkers>::LocationsRootV1>
320 + DataProvider<<FSet::Z as ZoneMarkers>::ExemplarCitiesV1>
321 + DataProvider<<FSet::Z as ZoneMarkers>::ExemplarCitiesRootV1>
322 + DataProvider<<FSet::Z as ZoneMarkers>::GenericLongV1>
323 + DataProvider<<FSet::Z as ZoneMarkers>::GenericShortV1>
324 + DataProvider<<FSet::Z as ZoneMarkers>::StandardLongV1>
325 + DataProvider<<FSet::Z as ZoneMarkers>::SpecificLongV1>
326 + DataProvider<<FSet::Z as ZoneMarkers>::SpecificShortV1>
327 + DataProvider<<FSet::Z as ZoneMarkers>::MetazonePeriodV1>
328 + DataProvider<FSet::GluePatternV1>
329 + AllFixedCalendarPatternDataMarkers<C, FSet>
330{
331}
332
333#[rustfmt::skip]
340pub trait AllAnyCalendarPatternDataMarkers<FSet: DateTimeMarkers>:
341 DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Buddhist>
342 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Chinese>
343 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Coptic>
344 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Dangi>
345 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Ethiopian>
346 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Gregorian>
347 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Hebrew>
348 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Indian>
349 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Hijri>
350 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Japanese>
351 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Persian>
352 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Roc>
353 + DataProvider<<FSet::T as TimeMarkers>::TimeSkeletonPatternsV1>
354 + DataProvider<FSet::GluePatternV1>
355where
356 FSet::D: DateDataMarkers,
357 FSet::T: TimeMarkers,
358 FSet::Z: ZoneMarkers,
359{
360}
361
362#[rustfmt::skip]
363impl<T, FSet> AllAnyCalendarPatternDataMarkers<FSet> for T
364where
365 FSet: DateTimeMarkers,
366 FSet::D: DateDataMarkers,
367 FSet::T: TimeMarkers,
368 FSet::Z: ZoneMarkers,
369 T: ?Sized
370 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Buddhist>
371 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Chinese>
372 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Coptic>
373 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Dangi>
374 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Ethiopian>
375 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Gregorian>
376 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Hebrew>
377 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Indian>
378 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Hijri>
379 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Japanese>
380 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Persian>
381 + DataProvider<<<FSet::D as DateDataMarkers>::Skel as CalMarkers<ErasedPackedPatterns>>::Roc>
382 + DataProvider<<FSet::T as TimeMarkers>::TimeSkeletonPatternsV1>
383 + DataProvider<FSet::GluePatternV1>
384{
385}
386
387#[rustfmt::skip]
394pub trait AllAnyCalendarFormattingDataMarkers<FSet: DateTimeMarkers>:
395 DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Buddhist>
396 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Chinese>
397 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Coptic>
398 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Dangi>
399 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Ethiopian>
400 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Gregorian>
401 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Hebrew>
402 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Indian>
403 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Hijri>
404 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Japanese>
405 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Persian>
406 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Roc>
407 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Buddhist>
408 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Chinese>
409 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Coptic>
410 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Dangi>
411 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Ethiopian>
412 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Gregorian>
413 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Hebrew>
414 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Indian>
415 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Hijri>
416 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Japanese>
417 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Persian>
418 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Roc>
419 + DataProvider<<FSet::D as DateDataMarkers>::WeekdayNamesV1>
420 + DataProvider<<FSet::T as TimeMarkers>::DayPeriodNamesV1>
421 + DataProvider<<FSet::Z as ZoneMarkers>::EssentialsV1>
422 + DataProvider<<FSet::Z as ZoneMarkers>::LocationsV1>
423 + DataProvider<<FSet::Z as ZoneMarkers>::LocationsRootV1>
424 + DataProvider<<FSet::Z as ZoneMarkers>::ExemplarCitiesV1>
425 + DataProvider<<FSet::Z as ZoneMarkers>::ExemplarCitiesRootV1>
426 + DataProvider<<FSet::Z as ZoneMarkers>::GenericLongV1>
427 + DataProvider<<FSet::Z as ZoneMarkers>::GenericShortV1>
428 + DataProvider<<FSet::Z as ZoneMarkers>::StandardLongV1>
429 + DataProvider<<FSet::Z as ZoneMarkers>::SpecificLongV1>
430 + DataProvider<<FSet::Z as ZoneMarkers>::SpecificShortV1>
431 + DataProvider<<FSet::Z as ZoneMarkers>::MetazonePeriodV1>
432 + AllAnyCalendarPatternDataMarkers<FSet>
433where
434 FSet::D: DateDataMarkers,
435 FSet::T: TimeMarkers,
436 FSet::Z: ZoneMarkers,
437{
438}
439
440#[rustfmt::skip]
441impl<T, FSet> AllAnyCalendarFormattingDataMarkers<FSet> for T
442where
443 FSet: DateTimeMarkers,
444 FSet::D: DateDataMarkers,
445 FSet::T: TimeMarkers,
446 FSet::Z: ZoneMarkers,
447 T: ?Sized
448 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Buddhist>
449 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Chinese>
450 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Coptic>
451 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Dangi>
452 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Ethiopian>
453 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Gregorian>
454 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Hebrew>
455 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Indian>
456 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Hijri>
457 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Japanese>
458 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Persian>
459 + DataProvider<<<FSet::D as DateDataMarkers>::Year as CalMarkers<YearNamesV1>>::Roc>
460 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Buddhist>
461 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Chinese>
462 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Coptic>
463 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Dangi>
464 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Ethiopian>
465 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Gregorian>
466 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Hebrew>
467 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Indian>
468 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Hijri>
469 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Japanese>
470 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Persian>
471 + DataProvider<<<FSet::D as DateDataMarkers>::Month as CalMarkers<MonthNamesV1>>::Roc>
472 + DataProvider<<FSet::D as DateDataMarkers>::WeekdayNamesV1>
473 + DataProvider<<FSet::T as TimeMarkers>::DayPeriodNamesV1>
474 + DataProvider<<FSet::Z as ZoneMarkers>::EssentialsV1>
475 + DataProvider<<FSet::Z as ZoneMarkers>::LocationsV1>
476 + DataProvider<<FSet::Z as ZoneMarkers>::LocationsRootV1>
477 + DataProvider<<FSet::Z as ZoneMarkers>::ExemplarCitiesV1>
478 + DataProvider<<FSet::Z as ZoneMarkers>::ExemplarCitiesRootV1>
479 + DataProvider<<FSet::Z as ZoneMarkers>::GenericLongV1>
480 + DataProvider<<FSet::Z as ZoneMarkers>::GenericShortV1>
481 + DataProvider<<FSet::Z as ZoneMarkers>::StandardLongV1>
482 + DataProvider<<FSet::Z as ZoneMarkers>::SpecificLongV1>
483 + DataProvider<<FSet::Z as ZoneMarkers>::SpecificShortV1>
484 + DataProvider<<FSet::Z as ZoneMarkers>::MetazonePeriodV1>
485 + AllAnyCalendarPatternDataMarkers<FSet>
486{
487}
488
489pub trait AllFixedCalendarExternalDataMarkers:
493 DataProvider<DecimalSymbolsV1> + DataProvider<DecimalDigitsV1>
494{
495}
496
497impl<T> AllFixedCalendarExternalDataMarkers for T where
498 T: ?Sized + DataProvider<DecimalSymbolsV1> + DataProvider<DecimalDigitsV1>
499{
500}
501
502pub trait AllAnyCalendarExternalDataMarkers:
506 DataProvider<CalendarChineseV1>
507 + DataProvider<CalendarDangiV1>
508 + DataProvider<CalendarJapaneseModernV1>
509 + DataProvider<DecimalSymbolsV1>
510 + DataProvider<DecimalDigitsV1>
511{
512}
513
514impl<T> AllAnyCalendarExternalDataMarkers for T where
515 T: ?Sized
516 + DataProvider<CalendarChineseV1>
517 + DataProvider<CalendarDangiV1>
518 + DataProvider<CalendarJapaneseModernV1>
519 + DataProvider<DecimalSymbolsV1>
520 + DataProvider<DecimalDigitsV1>
521{
522}
523
524impl DateInputMarkers for () {
525 type YearInput = ();
526 type MonthInput = ();
527 type DayOfMonthInput = ();
528 type DayOfYearInput = ();
529 type DayOfWeekInput = ();
530}
531
532impl<C> TypedDateDataMarkers<C> for () {
533 type DateSkeletonPatternsV1 = NeverMarker<PackedPatterns<'static>>;
534 type YearNamesV1 = NeverMarker<YearNames<'static>>;
535 type MonthNamesV1 = NeverMarker<MonthNames<'static>>;
536 type WeekdayNamesV1 = NeverMarker<LinearNames<'static>>;
537}
538
539impl DateDataMarkers for () {
540 type Skel = NoDataCalMarkers;
541 type Year = NoDataCalMarkers;
542 type Month = NoDataCalMarkers;
543 type WeekdayNamesV1 = NeverMarker<LinearNames<'static>>;
544}
545
546impl TimeMarkers for () {
547 type HourInput = ();
548 type MinuteInput = ();
549 type SecondInput = ();
550 type NanosecondInput = ();
551 type TimeSkeletonPatternsV1 = NeverMarker<PackedPatterns<'static>>;
552 type DayPeriodNamesV1 = NeverMarker<LinearNames<'static>>;
553}
554
555impl ZoneMarkers for () {
556 type TimeZoneIdInput = ();
557 type TimeZoneOffsetInput = ();
558 type TimeZoneVariantInput = ();
559 type TimeZoneNameTimestampInput = ();
560 type EssentialsV1 = NeverMarker<tz::Essentials<'static>>;
561 type LocationsV1 = NeverMarker<tz::Locations<'static>>;
562 type LocationsRootV1 = NeverMarker<tz::Locations<'static>>;
563 type ExemplarCitiesV1 = NeverMarker<tz::ExemplarCities<'static>>;
564 type ExemplarCitiesRootV1 = NeverMarker<tz::ExemplarCities<'static>>;
565 type GenericLongV1 = NeverMarker<tz::MzGeneric<'static>>;
566 type GenericShortV1 = NeverMarker<tz::MzGeneric<'static>>;
567 type StandardLongV1 = NeverMarker<tz::MzGeneric<'static>>;
568 type SpecificLongV1 = NeverMarker<tz::MzSpecific<'static>>;
569 type SpecificShortV1 = NeverMarker<tz::MzSpecific<'static>>;
570 type MetazonePeriodV1 = NeverMarker<tz::MzPeriod<'static>>;
571}
572
573macro_rules! datetime_marker_helper {
574 (@years/typed, yes) => {
575 C::YearNamesV1
576 };
577 (@years/typed,) => {
578 NeverMarker<YearNames<'static>>
579 };
580 (@months/typed, yes) => {
581 C::MonthNamesV1
582 };
583 (@months/typed,) => {
584 NeverMarker<MonthNames<'static>>
585 };
586 (@dates/typed, yes) => {
587 C::SkeletaV1
588 };
589 (@dates/typed,) => {
590 NeverMarker<PackedPatterns<'static>>
591 };
592 (@calmarkers, yes) => {
593 FullDataCalMarkers
594 };
595 (@calmarkers,) => {
596 NoDataCalMarkers
597 };
598 (@weekdays, yes) => {
599 WeekdayNamesV1
600 };
601 (@weekdays,) => {
602 NeverMarker<LinearNames<'static>>
603 };
604 (@dayperiods, yes) => {
605 DayPeriodNamesV1
606 };
607 (@dayperiods,) => {
608 NeverMarker<LinearNames<'static>>
609 };
610 (@times, yes) => {
611 DatetimePatternsTimeV1
612 };
613 (@times,) => {
614 NeverMarker<ErasedPackedPatterns>
615 };
616 (@glue, yes) => {
617 DatetimePatternsGlueV1
618 };
619 (@glue,) => {
620 NeverMarker<GluePattern<'static>>
621 };
622 (@option/length, yes) => {
623 Length
624 };
625 (@option/length, long) => {
626 Length
627 };
628 (@option/length, medium) => {
629 Length
630 };
631 (@option/length, short) => {
632 Length
633 };
634 (@option/yearstyle, yes) => {
635 Option<YearStyle>
636 };
637 (@option/alignment, yes) => {
638 Option<Alignment>
639 };
640 (@option/timeprecision, yes) => {
641 Option<TimePrecision>
642 };
643 (@option/$any:ident,) => {
644 ()
645 };
646 (@input/year, yes) => {
647 YearInfo
648 };
649 (@input/month, yes) => {
650 MonthInfo
651 };
652 (@input/day_of_month, yes) => {
653 DayOfMonth
654 };
655 (@input/day_of_week, yes) => {
656 Weekday
657 };
658 (@input/day_of_year, yes) => {
659 DayOfYear
660 };
661 (@input/hour, yes) => {
662 Hour
663 };
664 (@input/minute, yes) => {
665 Minute
666 };
667 (@input/second, yes) => {
668 Second
669 };
670 (@input/Nanosecond, yes) => {
671 Nanosecond
672 };
673 (@input/timezone/id, yes) => {
674 TimeZone
675 };
676 (@input/timezone/offset, yes) => {
677 Option<UtcOffset>
678 };
679 (@input/timezone/variant, yes) => {
680 TimeZoneVariant
681 };
682 (@input/timezone/local_time, yes) => {
683 ZoneNameTimestamp
684 };
685 (@input/timezone/$any:ident,) => {
686 ()
687 };
688 (@input/$any:ident,) => {
689 ()
690 };
691 (@data/zone/essentials, yes) => {
692 tz::EssentialsV1
693 };
694 (@data/zone/locations, yes) => {
695 tz::LocationsOverrideV1
696 };
697 (@data/zone/locations_root, yes) => {
698 tz::LocationsRootV1
699 };
700 (@data/zone/exemplars, yes) => {
701 tz::CitiesOverrideV1
702 };
703 (@data/zone/exemplars_root, yes) => {
704 tz::CitiesRootV1
705 };
706 (@data/zone/generic_long, yes) => {
707 tz::MzGenericLongV1
708 };
709 (@data/zone/generic_short, yes) => {
710 tz::MzGenericShortV1
711 };
712 (@data/zone/standard_long, yes) => {
713 tz::MzStandardLongV1
714 };
715 (@data/zone/specific_long, yes) => {
716 tz::MzSpecificLongV1
717 };
718 (@data/zone/specific_short, yes) => {
719 tz::MzSpecificShortV1
720 };
721 (@data/zone/metazone_periods, yes) => {
722 tz::MzPeriodV1
723 };
724 (@data/zone/essentials,) => {
725 NeverMarker<tz::Essentials<'static>>
726 };
727 (@data/zone/locations,) => {
728 NeverMarker<tz::Locations<'static>>
729 };
730 (@data/zone/locations_root,) => {
731 NeverMarker<tz::Locations<'static>>
732 };
733 (@data/zone/exemplars,) => {
734 NeverMarker<tz::ExemplarCities<'static>>
735 };
736 (@data/zone/exemplars_root,) => {
737 NeverMarker<tz::ExemplarCities<'static>>
738 };
739 (@data/zone/generic_long,) => {
740 NeverMarker<tz::MzGeneric<'static>>
741 };
742 (@data/zone/generic_short,) => {
743 NeverMarker<tz::MzGeneric<'static>>
744 };
745 (@data/zone/standard_long,) => {
746 NeverMarker<tz::MzGeneric<'static>>
747 };
748 (@data/zone/specific_long,) => {
749 NeverMarker<tz::MzSpecific<'static>>
750 };
751 (@data/zone/specific_short,) => {
752 NeverMarker<tz::MzSpecific<'static>>
753 };
754 (@data/zone/metazone_periods,) => {
755 NeverMarker<tz::MzPeriod<'static>>
756 };
757 (@names/year, yes) => {
758 YearNamesV1
759 };
760 (@names/month, yes) => {
761 MonthNamesV1
762 };
763 (@names/weekday, yes) => {
764 WeekdayNamesV1
765 };
766 (@names/dayperiod, yes) => {
767 DayPeriodNamesV1
768 };
769 (@names/zone/essentials, yes) => {
770 tz::EssentialsV1
771 };
772 (@names/zone/locations, yes) => {
773 tz::LocationsOverrideV1
774 };
775 (@names/zone/locations_root, yes) => {
776 tz::LocationsRootV1
777 };
778 (@names/zone/exemplars, yes) => {
779 tz::CitiesOverrideV1
780 };
781 (@names/zone/exemplars_root, yes) => {
782 tz::CitiesRootV1
783 };
784 (@names/zone/generic_long, yes) => {
785 tz::MzGenericLongV1
786 };
787 (@names/zone/generic_short, yes) => {
788 tz::MzGenericShortV1
789 };
790 (@names/zone/standard_long, yes) => {
791 tz::MzStandardLongV1
792 };
793 (@names/zone/specific_long, yes) => {
794 tz::MzSpecificLongV1
795 };
796 (@names/zone/specific_short, yes) => {
797 tz::MzSpecificShortV1
798 };
799 (@names/zone/metazone_periods, yes) => {
800 tz::MzPeriodV1
801 };
802 (@names/$any:ident,) => {
803 ()
804 };
805 (@names/zone/$any:ident,) => {
806 ()
807 };
808 () => {
809 unreachable!() };
811}
812pub(crate) use datetime_marker_helper;