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