Enum icu_datetime::options::Alignment
source · #[non_exhaustive]pub enum Alignment {
Auto,
Column,
}
Expand description
The alignment context of the formatted string.
By default, datetimes are formatted for a variable-width context. You can give a hint that the strings will be displayed in a column-like context, which will coerce numerics to be padded with zeros.
§Examples
use icu::calendar::Date;
use icu::calendar::Gregorian;
use icu::datetime::fieldsets::YMD;
use icu::datetime::options::Alignment;
use icu::datetime::FixedCalendarDateTimeFormatter;
use icu::locale::locale;
use writeable::assert_writeable_eq;
let plain_formatter =
FixedCalendarDateTimeFormatter::<Gregorian, _>::try_new(
locale!("en-US").into(),
YMD::short(),
)
.unwrap();
let column_formatter =
FixedCalendarDateTimeFormatter::<Gregorian, _>::try_new(
locale!("en-US").into(),
YMD::short().with_alignment(Alignment::Column),
)
.unwrap();
// By default, en-US does not pad the month and day with zeros.
assert_writeable_eq!(
plain_formatter.format(&Date::try_new_gregorian(2025, 1, 1).unwrap()),
"1/1/25"
);
// The column alignment option hints that they should be padded.
assert_writeable_eq!(
column_formatter.format(&Date::try_new_gregorian(2025, 1, 1).unwrap()),
"01/01/25"
);
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
Auto
Align fields as the locale specifies them to be aligned.
This is the default option.
Column
Align fields as appropriate for a column layout. For example:
US Holiday | Date |
---|---|
Memorial Day | 05/26/2025 |
Labor Day | 09/01/2025 |
Veterans Day | 11/11/2025 |
This option causes numeric fields to be padded when necessary. It does not impact whether a numeric or spelled-out field is chosen.
Trait Implementations§
source§impl<'de> Deserialize<'de> for Alignment
impl<'de> Deserialize<'de> for Alignment
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl IntoOption<Alignment> for Alignment
impl IntoOption<Alignment> for Alignment
source§fn into_option(self) -> Option<Self>
fn into_option(self) -> Option<Self>
Return
self
as an Option<T>
impl Copy for Alignment
impl Eq for Alignment
impl StructuralPartialEq for Alignment
Auto Trait Implementations§
impl Freeze for Alignment
impl RefUnwindSafe for Alignment
impl Send for Alignment
impl Sync for Alignment
impl Unpin for Alignment
impl UnwindSafe for Alignment
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