icu::datetime::fieldsets::zone

Struct ExemplarCity

Source
pub struct ExemplarCity;
Expand description

“Chicago” ⇒ time zone in exemplar city format

§Examples

use icu::datetime::input::Date;
use icu::datetime::input::{Time, TimeZone,TimeZoneInfo,  UtcOffset};
use icu::datetime::NoCalendarFormatter;
use icu::time::zone::TimeZoneVariant;
use icu::datetime::fieldsets::zone::ExemplarCity;
use icu::locale::locale;
use tinystr::tinystr;
use writeable::assert_writeable_eq;

let fmt = NoCalendarFormatter::try_new(
    locale!("en").into(),
    ExemplarCity
)
.unwrap();

// Time zone info for America/Chicago in the summer
let zone = TimeZone(tinystr!(8, "uschi"))
    .with_offset("-05".parse().ok())
    .at_time((Date::try_new_iso(2022, 8, 29).unwrap(), Time::midnight()))
    .with_zone_variant(TimeZoneVariant::Daylight);

assert_writeable_eq!(
    fmt.format(&zone),
    "Chicago"
);

A time zone ID is required to format with this style. For example, a raw UtcOffset cannot be used here.

use icu::datetime::input::{DateTime, Iso};
use icu::datetime::FixedCalendarDateTimeFormatter;
use icu::datetime::fieldsets::zone::ExemplarCity;
use icu::datetime::input::UtcOffset;
use tinystr::tinystr;
use icu::locale::locale;
use writeable::assert_writeable_eq;

let utc_offset = UtcOffset::try_from_str("-06").unwrap();

let formatter = FixedCalendarDateTimeFormatter::try_new(
    locale!("en-US").into(),
    ExemplarCity,
)
.unwrap();

// error[E0277]: the trait bound `UtcOffset: AllInputMarkers<ExemplarCity>` is not satisfied
// note: required by a bound in `FixedCalendarDateTimeFormatter::<C, FSet>::format`
formatter.format(&utc_offset);

Trait Implementations§

Source§

impl Clone for ExemplarCity

Source§

fn clone(&self) -> ExemplarCity

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl DateTimeMarkers for ExemplarCity

Source§

type D = ()

Associated types for date formatting. Read more
Source§

type T = ()

Associated types for time formatting. Read more
Source§

type Z = ExemplarCity

Associated types for time zone formatting. Read more
Source§

type GluePatternV1 = NeverMarker<GluePattern<'static>>

Marker for loading the date/time glue pattern.
Source§

impl DateTimeNamesMarker for ExemplarCity

Source§

impl Debug for ExemplarCity

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl GetField<CompositeFieldSet> for ExemplarCity

Source§

fn get_field(&self) -> CompositeFieldSet

Returns the value of this trait’s field T.
Source§

impl PartialEq for ExemplarCity

Source§

fn eq(&self, other: &ExemplarCity) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl ZoneMarkers for ExemplarCity

Source§

type TimeZoneIdInput = TimeZone

Marker for resolving the time zone id input field.
Source§

type TimeZoneOffsetInput = Option<UtcOffset>

Marker for resolving the time zone offset input field.
Source§

type TimeZoneVariantInput = ()

Marker for resolving the time zone variant input field.
Source§

type TimeZoneLocalTimeInput = ()

Marker for resolving the time zone non-location display names, which depend on the datetime.
Source§

type EssentialsV1 = NeverMarker<TimeZoneEssentials<'static>>

Marker for loading core time zone data.
Source§

type LocationsV1 = LocationsV1

Marker for loading location names for time zone formatting
Source§

type LocationsRootV1 = LocationsRootV1

Marker for loading location names for time zone formatting
Source§

type ExemplarCitiesV1 = ExemplarCitiesV1

Marker for loading exemplar city names for time zone formatting
Source§

type ExemplarCitiesRootV1 = ExemplarCitiesRootV1

Marker for loading exemplar city names for time zone formatting
Source§

type GenericLongV1 = NeverMarker<MetazoneGenericNames<'static>>

Marker for loading generic long time zone names.
Source§

type GenericShortV1 = NeverMarker<MetazoneGenericNames<'static>>

Marker for loading generic short time zone names.
Source§

type StandardLongV1 = NeverMarker<MetazoneGenericNames<'static>>

Marker for loading standard long time zone names.
Source§

type SpecificLongV1 = NeverMarker<MetazoneSpecificNames<'static>>

Marker for loading specific long time zone names.
Source§

type SpecificShortV1 = NeverMarker<MetazoneSpecificNames<'static>>

Marker for loading generic short time zone names.
Source§

type MetazonePeriodV1 = NeverMarker<MetazonePeriod<'static>>

Marker for loading metazone periods.
Source§

impl Copy for ExemplarCity

Source§

impl Eq for ExemplarCity

Source§

impl StructuralPartialEq for ExemplarCity

Source§

impl UnstableSealed for ExemplarCity

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<M, T> DateTimeNamesFrom<M> for T
where M: DateTimeNamesMarker, T: DateTimeNamesMarker, <<T as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1, YearNameLength>>::Container: From<<<M as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1, YearNameLength>>::Container>, <<T as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1, MonthNameLength>>::Container: From<<<M as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1, MonthNameLength>>::Container>, <<T as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1, WeekdayNameLength>>::Container: From<<<M as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1, WeekdayNameLength>>::Container>, <<T as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1, DayPeriodNameLength>>::Container: From<<<M as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1, DayPeriodNameLength>>::Container>, <<T as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1, ()>>::Container>, <<T as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1, ()>>::Container>, <<T as DateTimeNamesMarker>::ZoneLocationsRoot as NamesContainer<LocationsRootV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneLocationsRoot as NamesContainer<LocationsRootV1, ()>>::Container>, <<T as DateTimeNamesMarker>::ZoneExemplars as NamesContainer<ExemplarCitiesV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneExemplars as NamesContainer<ExemplarCitiesV1, ()>>::Container>, <<T as DateTimeNamesMarker>::ZoneExemplarsRoot as NamesContainer<ExemplarCitiesRootV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneExemplarsRoot as NamesContainer<ExemplarCitiesRootV1, ()>>::Container>, <<T as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1, ()>>::Container>, <<T as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1, ()>>::Container>, <<T as DateTimeNamesMarker>::ZoneStandardLong as NamesContainer<MetazoneStandardNamesLongV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneStandardLong as NamesContainer<MetazoneStandardNamesLongV1, ()>>::Container>, <<T as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1, ()>>::Container>, <<T as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1, ()>>::Container>, <<T as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1, ()>>::Container>,

Source§

fn map_year_names( other: <<M as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1, YearNameLength>>::Container, ) -> <<T as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1, YearNameLength>>::Container

Source§

fn map_month_names( other: <<M as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1, MonthNameLength>>::Container, ) -> <<T as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1, MonthNameLength>>::Container

Source§

fn map_weekday_names( other: <<M as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1, WeekdayNameLength>>::Container, ) -> <<T as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1, WeekdayNameLength>>::Container

Source§

fn map_day_period_names( other: <<M as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1, DayPeriodNameLength>>::Container, ) -> <<T as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1, DayPeriodNameLength>>::Container

Source§

fn map_zone_essentials( other: <<M as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1, ()>>::Container

Source§

fn map_zone_locations( other: <<M as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1, ()>>::Container

Source§

fn map_zone_locations_root( other: <<M as DateTimeNamesMarker>::ZoneLocationsRoot as NamesContainer<LocationsRootV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneLocationsRoot as NamesContainer<LocationsRootV1, ()>>::Container

Source§

fn map_zone_exemplars( other: <<M as DateTimeNamesMarker>::ZoneExemplars as NamesContainer<ExemplarCitiesV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneExemplars as NamesContainer<ExemplarCitiesV1, ()>>::Container

Source§

fn map_zone_exemplars_root( other: <<M as DateTimeNamesMarker>::ZoneExemplarsRoot as NamesContainer<ExemplarCitiesRootV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneExemplarsRoot as NamesContainer<ExemplarCitiesRootV1, ()>>::Container

Source§

fn map_zone_generic_long( other: <<M as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1, ()>>::Container

Source§

fn map_zone_generic_short( other: <<M as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1, ()>>::Container

Source§

fn map_zone_standard_long( other: <<M as DateTimeNamesMarker>::ZoneStandardLong as NamesContainer<MetazoneStandardNamesLongV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneStandardLong as NamesContainer<MetazoneStandardNamesLongV1, ()>>::Container

Source§

fn map_zone_specific_long( other: <<M as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1, ()>>::Container

Source§

fn map_zone_specific_short( other: <<M as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1, ()>>::Container

Source§

fn map_metazone_lookup( other: <<M as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1, ()>>::Container

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> GetField<T> for T
where T: Copy + UnstableSealed,

Source§

fn get_field(&self) -> T

Returns the value of this trait’s field T.
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> ErasedDestructor for T
where T: 'static,