Enum Direction

#[non_exhaustive]
pub enum Direction

Configuration for SpanPrinter::direction.

This controls how the sign, if at all, is included in the formatted duration.

When using the "hours-minutes-seconds" format, Auto and Suffix are both treated as equivalent to Sign when all calendar units (days and greater) are zero.

Example

use jiff::{fmt::friendly::{Direction, SpanPrinter}, SignedDuration};

let duration = SignedDuration::from_secs(-1);

let printer = SpanPrinter::new();
assert_eq!(printer.duration_to_string(&duration), "1s ago");

let printer = SpanPrinter::new().direction(Direction::Sign);
assert_eq!(printer.duration_to_string(&duration), "-1s");

Variants

Auto

Sets the sign format based on other configuration options.

When SpanPrinter::spacing is set to Spacing::None, then Auto is equivalent to Sign.

When using the "hours-minutes-seconds" format, Auto is equivalent to Sign when all calendar units (days and greater) are zero.

Otherwise, Auto is equivalent to Suffix.

This is the default used by SpanPrinter.

Sign

When set, a sign is only written when the span or duration is negative. And when it is written, it is written as a prefix of the formatted duration.

ForceSign

A sign is always written, with - for negative spans and + for all non-negative spans. The sign is always written as a prefix of the formatted duration.

Suffix

When set, a sign is only written when the span or duration is negative. And when it is written, it is written as a suffix via a trailing ago string.

Trait Implementations

impl Clone for Direction

fn clone(&self) -> Direction

impl Copy for Direction

impl Debug for Direction

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Auto Trait Implementations

impl Freeze for Direction

impl RefUnwindSafe for Direction

impl Send for Direction

impl Sync for Direction

impl Unpin for Direction

impl UnsafeUnpin for Direction

impl UnwindSafe for Direction

Blanket Implementations

impl<T> Any for Direction where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

impl<T> Borrow<T> for Direction where T: ?Sized,

fn borrow(&self) -> &T

impl<T> BorrowMut<T> for Direction where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

impl<T> CloneToUninit for Direction where T: Clone,

unsafe fn clone_to_uninit(&self, dest: *mut u8)

impl<T> From<T> for Direction

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> ToOwned for Direction where T: Clone,

type Owned = T;
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)

impl<T, U> Into<U> for Direction where U: From<T>,

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

impl<T, U> TryFrom<U> for Direction 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 Direction where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error;
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>