Struct icu_datetime::fieldset::Vs
source · #[non_exhaustive]pub struct Vs {
pub length: NeoSkeletonLength,
}
Expand description
“CT” ⇒ time zone in generic non-location format (only short)
This field set can be used only in combination with others.
§Examples
ⓘ
use icu::calendar::{Date, Time};
use icu::timezone::{TimeZoneBcp47Id, TimeZoneInfo, UtcOffset, ZoneVariant};
use icu::datetime::TimeFormatter;
use icu::datetime::fieldset::Vs;
use icu::locale::locale;
use tinystr::tinystr;
use writeable::assert_try_writeable_eq;
let fmt = TimeFormatter::try_new(
&locale!("en").into(),
Vs::short(),
)
.unwrap();
// Time zone info for America/Chicago in the summer
let zone = TimeZoneBcp47Id(tinystr!(8, "uschi"))
.with_offset("-05".parse().ok())
.at_time((Date::try_new_iso(2022, 8, 29).unwrap(), Time::midnight()))
.with_zone_variant(ZoneVariant::Daylight);
assert_try_writeable_eq!(
fmt.format(&zone),
"CT"
);
Since non-location names might change over time, this time zone style requires a reference time.
ⓘ
use icu::calendar::{DateTime, Iso};
use icu::datetime::FixedCalendarDateTimeFormatter;
use icu::datetime::fieldset::Vs;
use icu::timezone::{TimeZoneBcp47Id, UtcOffset};
use tinystr::tinystr;
use icu::locale::locale;
use writeable::assert_try_writeable_eq;
let time_zone_basic = TimeZoneBcp47Id(tinystr!(8, "uschi")).with_offset("-06".parse().ok());1
let formatter = FixedCalendarDateTimeFormatter::try_new(
&locale!("en-US").into(),
Vs::medium(),
)
.unwrap();
// error[E0271]: type mismatch resolving `<Base as TimeZoneModel>::LocalTime == (Date<Iso>, Time)`
// note: required by a bound in `FixedCalendarDateTimeFormatter::<C, FSet>::format`
formatter.format(&time_zone_basic);
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.length: NeoSkeletonLength
The desired length of the formatted string.
See: NeoSkeletonLength
Implementations§
source§impl Vs
impl Vs
sourcepub const fn with_length(length: NeoSkeletonLength) -> Self
pub const fn with_length(length: NeoSkeletonLength) -> Self
Creates a Vs skeleton with the given formatting length.
Trait Implementations§
source§impl DateTimeMarkers for Vs
impl DateTimeMarkers for Vs
source§type GluePatternV1Marker = NeverMarker<GluePatternV1<'static>>
type GluePatternV1Marker = NeverMarker<GluePatternV1<'static>>
Marker for loading the date/time glue pattern.
source§impl DateTimeNamesMarker for Vs
impl DateTimeNamesMarker for Vs
type YearNames = ()
type MonthNames = ()
type WeekdayNames = ()
type DayPeriodNames = ()
type ZoneEssentials = TimeZoneEssentialsV1Marker
type ZoneLocations = LocationsV1Marker
type ZoneGenericLong = ()
type ZoneGenericShort = MetazoneGenericNamesShortV1Marker
type ZoneSpecificLong = ()
type ZoneSpecificShort = ()
type MetazoneLookup = MetazonePeriodV1Marker
source§impl ZoneMarkers for Vs
impl ZoneMarkers for Vs
source§type TimeZoneIdInput = TimeZoneBcp47Id
type TimeZoneIdInput = TimeZoneBcp47Id
Marker for resolving the time zone id input field.
source§type TimeZoneOffsetInput = Option<UtcOffset>
type TimeZoneOffsetInput = Option<UtcOffset>
Marker for resolving the time zone offset input field.
source§type TimeZoneVariantInput = ()
type TimeZoneVariantInput = ()
Marker for resolving the time zone variant input field.
source§type TimeZoneLocalTimeInput = (Date<Iso>, Time)
type TimeZoneLocalTimeInput = (Date<Iso>, Time)
Marker for resolving the time zone non-location display names, which depend on the datetime.
source§type EssentialsV1Marker = TimeZoneEssentialsV1Marker
type EssentialsV1Marker = TimeZoneEssentialsV1Marker
Marker for loading core time zone data.
source§type LocationsV1Marker = LocationsV1Marker
type LocationsV1Marker = LocationsV1Marker
Marker for loading location names for time zone formatting
source§type GenericLongV1Marker = NeverMarker<MetazoneGenericNamesV1<'static>>
type GenericLongV1Marker = NeverMarker<MetazoneGenericNamesV1<'static>>
Marker for loading generic long time zone names.
source§type GenericShortV1Marker = MetazoneGenericNamesShortV1Marker
type GenericShortV1Marker = MetazoneGenericNamesShortV1Marker
Marker for loading generic short time zone names.
source§type SpecificLongV1Marker = NeverMarker<MetazoneSpecificNamesV1<'static>>
type SpecificLongV1Marker = NeverMarker<MetazoneSpecificNamesV1<'static>>
Marker for loading specific long time zone names.
source§type SpecificShortV1Marker = NeverMarker<MetazoneSpecificNamesV1<'static>>
type SpecificShortV1Marker = NeverMarker<MetazoneSpecificNamesV1<'static>>
Marker for loading generic short time zone names.
source§type MetazonePeriodV1Marker = MetazonePeriodV1Marker
type MetazonePeriodV1Marker = MetazonePeriodV1Marker
Marker for loading metazone periods.
impl Copy for Vs
impl Eq for Vs
impl StructuralPartialEq for Vs
impl UnstableSealed for Vs
Auto Trait Implementations§
impl Freeze for Vs
impl RefUnwindSafe for Vs
impl Send for Vs
impl Sync for Vs
impl Unpin for Vs
impl UnwindSafe for Vs
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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