#[non_exhaustive]pub enum TimePrecision {
    Hour,
    Minute,
    Second,
    Subsecond(SubsecondDigits),
    MinuteOptional,
}Expand description
A specification for how precisely to display the time of day.
The time can be displayed with hour, minute, or second precision, and zero-valued fields can be automatically hidden.
The examples in the discriminants are based on the following inputs and hour cycles:
- 11 o’clock with 12-hour time
 - 16:20 (4:20 pm) with 24-hour time
 - 7:15:01.85 with 24-hour time
 
Fractional second digits can be displayed with a fixed precision. If you would like additional options for fractional second digit display, please leave a comment in https://github.com/unicode-org/icu4x/issues/6008.
§Examples
Comparison of all time precision options:
use icu::datetime::input::Time;
use icu::datetime::fieldsets::T;
use icu::datetime::options::SubsecondDigits;
use icu::datetime::options::TimePrecision;
use icu::datetime::FixedCalendarDateTimeFormatter;
use icu::locale::locale;
use writeable::assert_writeable_eq;
let formatters = [
    TimePrecision::Hour,
    TimePrecision::Minute,
    TimePrecision::Second,
    TimePrecision::Subsecond(SubsecondDigits::S2),
    TimePrecision::MinuteOptional,
]
.map(|time_precision| {
    FixedCalendarDateTimeFormatter::<(), _>::try_new(
        locale!("en-US").into(),
        T::short().with_time_precision(time_precision),
    )
    .unwrap()
});
let times = [
    Time::try_new(7, 0, 0, 0).unwrap(),
    Time::try_new(7, 0, 10, 0).unwrap(),
    Time::try_new(7, 12, 20, 543_200_000).unwrap(),
];
let expected_value_table = [
    // 7:00:00, 7:00:10, 7:12:20.5432
    ["7 AM", "7 AM", "7 AM"],                            // Hour
    ["7:00 AM", "7:00 AM", "7:12 AM"],                   // Minute
    ["7:00:00 AM", "7:00:10 AM", "7:12:20 AM"],          // Second
    ["7:00:00.00 AM", "7:00:10.00 AM", "7:12:20.54 AM"], // Subsecond(F2)
    ["7 AM", "7 AM", "7:12 AM"],                         // MinuteOptional
];
for (expected_value_row, formatter) in
    expected_value_table.iter().zip(formatters.iter())
{
    for (expected_value, time) in
        expected_value_row.iter().zip(times.iter())
    {
        assert_writeable_eq!(
            formatter.format(time),
            *expected_value,
            "{formatter:?} @ {time:?}"
        );
    }
}Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Hour
Display the hour. Hide all other time fields.
Examples:
11 am16h07h
Minute
Display the hour and minute. Hide the second.
Examples:
11:00 am16:2007:15
Second
Display the hour, minute, and second. Hide fractional seconds.
This is currently the default, but the default is subject to change.
Examples:
11:00:00 am16:20:0007:15:01
Subsecond(SubsecondDigits)
Display the hour, minute, and second with the given number of fractional second digits.
Examples with SubsecondDigits::S1:
11:00:00.0 am16:20:00.007:15:01.8
MinuteOptional
Display the hour; display the minute if nonzero. Hide the second.
Examples:
11 am16:2007:15
Trait Implementations§
Source§impl Clone for TimePrecision
 
impl Clone for TimePrecision
Source§fn clone(&self) -> TimePrecision
 
fn clone(&self) -> TimePrecision
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TimePrecision
 
impl Debug for TimePrecision
Source§impl Default for TimePrecision
 
impl Default for TimePrecision
Source§fn default() -> TimePrecision
 
fn default() -> TimePrecision
Source§impl Hash for TimePrecision
 
impl Hash for TimePrecision
Source§impl IntoOption<TimePrecision> for TimePrecision
 
impl IntoOption<TimePrecision> for TimePrecision
Source§fn into_option(self) -> Option<TimePrecision>
 
fn into_option(self) -> Option<TimePrecision>
self as an Option<T>Source§impl PartialEq for TimePrecision
 
impl PartialEq for TimePrecision
impl Copy for TimePrecision
impl Eq for TimePrecision
impl StructuralPartialEq for TimePrecision
Auto Trait Implementations§
impl Freeze for TimePrecision
impl RefUnwindSafe for TimePrecision
impl Send for TimePrecision
impl Sync for TimePrecision
impl Unpin for TimePrecision
impl UnwindSafe for TimePrecision
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
Source§impl<T> CloneToUninit for Twhere
    T: Clone,
 
impl<T> CloneToUninit for Twhere
    T: Clone,
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>
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>
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