Enum Designator
#[non_exhaustive]
pub enum Designator
Configuration for SpanPrinter::designator.
This controls which kinds of designators to use when formatting a "friendly" duration. Generally, this only provides one axis of control: the length of each designator.
Example
use ;
let span = 1.year.months;
let printer = new;
assert_eq!;
let printer = new.designator;
assert_eq!;
let printer = new.designator;
assert_eq!;
let printer = new.designator;
assert_eq!;
Variants
-
Verbose This writes out the full word of each unit designation. For example,
year.-
Short This writes out a short but not minimal label for each unit. For example,
yrforyearandyrsforyears.-
Compact This writes out the shortest possible label for each unit that is still generally recognizable. For example,
y. Note that in the compact representation, and unlike the verbose and short representations, there is no distinction between singular or plural.-
HumanTime A special mode that uses designator labels that are known to be compatible with the
humantimecrate.None of
Verbose,ShortorCompactare compatible withhumantime.Compactis, on its own, nearly compatible. When usingCompact, all designator labels are parsable byhumantimeexcept for months and microseconds. For months, Jiff usesmoandmos, buthumantimeonly parsesmonths,monthandM. Jiff specifically doesn't supportMfor months because of the confusability with minutes. For microseconds, Jiff usesµswhichhumantimedoes not support parsing.Most of the designator labels Jiff uses for
Shortaren't supported byhumantime. And even when they are,humantimeis inconsistent. For example,humantimesupportssecandsecs, but onlynsecand notnsecs.Finally, for
Verbose, humantime supports spelling out some units in their entirety (e.g.,seconds) but not others (e.g.,nanosecondsis not supported byhumantime).Therefore, this custom variant is provided so that designator labels that are compatible with both Jiff and
humantime, even when there isn't a coherent concept otherwise connecting their style.
Trait Implementations
impl Clone for Designator
fn clone(&self) -> Designator
impl Copy for Designator
impl Debug for Designator
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Auto Trait Implementations
impl Freeze for Designator
impl RefUnwindSafe for Designator
impl Send for Designator
impl Sync for Designator
impl Unpin for Designator
impl UnsafeUnpin for Designator
impl UnwindSafe for Designator
Blanket Implementations
impl<T> Any for Designator
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Designator
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Designator
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for Designator
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for Designator
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for Designator
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T, U> Into<U> for Designator
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Designator
where
U: Into<T>,
type Error = Infallible;fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto<U> for Designator
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>