Module enums

Source
Expand description

Enumerations over field sets.

These enumerations can be used when the field set is not known at compile time. However, they may contribute negatively to the binary size of the formatters.

The most general type is CompositeFieldSet, which supports all field sets in a single enumeration. CompositeDateTimeFieldSet is a good choice when you don’t need to format time zones.

Summary of all the types:

TypeSupported Field Sets
DateFieldSetDate
CalendarPeriodFieldSetCalendar Period
TimeFieldSetTime
ZoneFieldSetZone
DateAndTimeFieldSetDate + Time
CompositeDateTimeFieldSetDate, Calendar Period, Time, Date + Time
CompositeFieldSetAll

§Examples

Format with the time display depending on a runtime boolean:

use icu::calendar::Date;
use icu::datetime::fieldsets;
use icu::datetime::fieldsets::enums::CompositeDateTimeFieldSet;
use icu::datetime::input::{DateTime, Time};
use icu::datetime::DateTimeFormatter;
use icu::locale::locale;
use writeable::Writeable;

fn composite_field_set(
    should_display_time: bool,
) -> CompositeDateTimeFieldSet {
    if should_display_time {
        let field_set_with_options = fieldsets::MD::medium().with_time_hm();
        CompositeDateTimeFieldSet::DateTime(
            fieldsets::enums::DateAndTimeFieldSet::MDT(
                field_set_with_options,
            ),
        )
    } else {
        let field_set_with_options = fieldsets::MD::medium();
        CompositeDateTimeFieldSet::Date(fieldsets::enums::DateFieldSet::MD(
            field_set_with_options,
        ))
    }
}

let datetime = DateTime {
    date: Date::try_new_iso(2025, 1, 15).unwrap(),
    time: Time::try_new(16, 0, 0, 0).unwrap(),
};

let with_time = DateTimeFormatter::try_new(
    locale!("en-US").into(),
    composite_field_set(true),
)
.unwrap();
let without_time = DateTimeFormatter::try_new(
    locale!("en-US").into(),
    composite_field_set(false),
)
.unwrap();

assert_eq!(with_time.format(&datetime).to_string(), "Jan 15, 4:00 PM");
assert_eq!(without_time.format(&datetime).to_string(), "Jan 15");

Enums§

CalendarPeriodFieldSet
An enumeration over all possible calendar period field sets.
CompositeDateTimeFieldSet
An enum supporting date, calendar period, time, and date+time field sets and options.
CompositeFieldSet
An enum supporting all possible field sets and options.
DateAndTimeFieldSet
An enumeration over all possible date+time composite field sets.
DateFieldSet
An enumeration over all possible date field sets.
TimeFieldSet
An enumeration over all possible time field sets.
ZoneFieldSet
An enumeration over all possible zone field sets.

Type Aliases§

ZonedDateAndTimeFieldSet
Type alias representing all possible date + time + time zone field sets.
ZonedDateFieldSet
Type alias representing all possible date + time zone field sets.
ZonedTimeFieldSet
Type alias representing all possible time + time zone field sets.