jiff::duration

Enum Duration

Source
pub(crate) enum Duration {
    Span(Span),
    Signed(SignedDuration),
    Unsigned(Duration),
}
Expand description

An internal type for abstracting over different duration types.

Variants§

§

Span(Span)

§

Signed(SignedDuration)

§

Unsigned(Duration)

Implementations§

Source§

impl Duration

Source

pub(crate) fn to_signed(self) -> Result<SDuration, Error>

Convert this to a signed duration.

This returns an error only in the case where this is an unsigned duration with a number of whole seconds that exceeds |i64::MIN|.

Source

pub(crate) fn checked_neg(self) -> Result<Duration, Error>

Negates this duration.

When the duration is a span, this can never fail because a span defines its min and max values such that negation is always possible.

When the duration is signed, then this attempts to return a signed duration and only falling back to an unsigned duration when the number of seconds corresponds to i64::MIN.

When the duration is unsigned, then this fails when the whole seconds exceed the absolute value of i64::MIN. Otherwise, a signed duration is returned.

The failures for large unsigned durations here are okay because the point at which absolute durations overflow on negation, they would also cause overflow when adding or subtracting to any valid datetime value for any datetime type in this crate. So while the error message may be different, the actual end result is the same (failure).

TODO: Write unit tests for this.

Source

pub(crate) fn is_negative(&self) -> bool

Returns true if and only if this duration is negative.

Trait Implementations§

Source§

impl Clone for Duration

Source§

fn clone(&self) -> Duration

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Duration

Source§

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

Formats the value using the given formatter. Read more
Source§

impl From<Duration> for Duration

Source§

fn from(udur: UnsignedDuration) -> Duration

Converts to this type from the input type.
Source§

impl From<SignedDuration> for Duration

Source§

fn from(sdur: SignedDuration) -> Duration

Converts to this type from the input type.
Source§

impl From<Span> for Duration

Source§

fn from(span: Span) -> Duration

Converts to this type from the input type.
Source§

impl Copy for Duration

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

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

Source§

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

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

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

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.