Struct SignedDuration

#[repr(C)]
pub struct SignedDuration { /* private fields */ }

A span of time with nanosecond precision.

Each SignedDuration is composed of a whole number of seconds and a fractional part represented in nanoseconds.

This implementation allows for negative durations, unlike core::time::Duration.

Implementations

impl SignedDuration

const ZERO: Self = _;

Equivalent to 0.seconds().

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::ZERO, 0.seconds());
const NANOSECOND: Self = _;

Equivalent to 1.nanoseconds().

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::NANOSECOND, 1.nanoseconds());
const MICROSECOND: Self = _;

Equivalent to 1.microseconds().

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::MICROSECOND, 1.microseconds());
const MILLISECOND: Self = _;

Equivalent to 1.milliseconds().

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::MILLISECOND, 1.milliseconds());
const SECOND: Self = _;

Equivalent to 1.seconds().

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::SECOND, 1.seconds());
const MINUTE: Self = _;

Equivalent to 1.minutes().

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::MINUTE, 1.minutes());
const HOUR: Self = _;

Equivalent to 1.hours().

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::HOUR, 1.hours());
const DAY: Self = _;

Equivalent to 1.days().

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::DAY, 1.days());
const WEEK: Self = _;

Equivalent to 1.weeks().

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::WEEK, 1.weeks());
const MIN: Self = _;

The minimum possible duration. Adding any negative duration to this will cause an overflow.

const MAX: Self = _;

The maximum possible duration. Adding any positive duration to this will cause an overflow.

const fn is_zero(self) -> bool

Check if a duration is exactly zero.

# use time::ext::NumericalDuration;
assert!(0.seconds().is_zero());
assert!(!1.nanoseconds().is_zero());
const fn is_negative(self) -> bool

Check if a duration is negative.

# use time::ext::NumericalDuration;
assert!((-1).seconds().is_negative());
assert!(!0.seconds().is_negative());
assert!(!1.seconds().is_negative());
const fn is_positive(self) -> bool

Check if a duration is positive.

# use time::ext::NumericalDuration;
assert!(1.seconds().is_positive());
assert!(!0.seconds().is_positive());
assert!(!(-1).seconds().is_positive());
const fn abs(self) -> Self

Get the absolute value of the duration.

This method saturates the returned value if it would otherwise overflow.

# use time::ext::NumericalDuration;
assert_eq!(1.seconds().abs(), 1.seconds());
assert_eq!(0.seconds().abs(), 0.seconds());
assert_eq!((-1).seconds().abs(), 1.seconds());
const fn unsigned_abs(self) -> StdDuration

Convert the existing SignedDuration to a std::time::Duration and its sign. This returns a std::time::Duration and does not saturate the returned value (unlike SignedDuration::abs).

# use time::ext::{NumericalDuration, NumericalStdDuration};
assert_eq!(1.seconds().unsigned_abs(), 1.std_seconds());
assert_eq!(0.seconds().unsigned_abs(), 0.std_seconds());
assert_eq!((-1).seconds().unsigned_abs(), 1.std_seconds());
const fn new(seconds: i64, nanoseconds: i32) -> Self

Create a new SignedDuration with the provided seconds and nanoseconds. If nanoseconds is at least ±109, it will wrap to the number of seconds.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::new(1, 0), 1.seconds());
assert_eq!(SignedDuration::new(-1, 0), (-1).seconds());
assert_eq!(SignedDuration::new(1, 2_000_000_000), 3.seconds());

Panics

This may panic if an overflow occurs.

const fn weeks(weeks: i64) -> Self

Create a new SignedDuration with the given number of weeks. Equivalent to SignedDuration::seconds(weeks * 604_800).

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::weeks(1), 604_800.seconds());

Panics

This may panic if an overflow occurs.

const fn days(days: i64) -> Self

Create a new SignedDuration with the given number of days. Equivalent to SignedDuration::seconds(days * 86_400).

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::days(1), 86_400.seconds());

Panics

This may panic if an overflow occurs.

const fn hours(hours: i64) -> Self

Create a new SignedDuration with the given number of hours. Equivalent to SignedDuration::seconds(hours * 3_600).

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::hours(1), 3_600.seconds());

Panics

This may panic if an overflow occurs.

const fn minutes(minutes: i64) -> Self

Create a new SignedDuration with the given number of minutes. Equivalent to SignedDuration::seconds(minutes * 60).

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::minutes(1), 60.seconds());

Panics

This may panic if an overflow occurs.

const fn seconds(seconds: i64) -> Self

Create a new SignedDuration with the given number of seconds.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::seconds(1), 1_000.milliseconds());
const fn seconds_f64(seconds: f64) -> Self

Creates a new SignedDuration from the specified number of seconds represented as f64.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::seconds_f64(0.5), 0.5.seconds());
assert_eq!(SignedDuration::seconds_f64(-0.5), (-0.5).seconds());

Panics

This may panic if seconds is NaN or overflows the representable range of SignedDuration.

const fn seconds_f32(seconds: f32) -> Self

Creates a new SignedDuration from the specified number of seconds represented as f32.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::seconds_f32(0.5), 0.5.seconds());
assert_eq!(SignedDuration::seconds_f32(-0.5), (-0.5).seconds());

Panics

This may panic if seconds is NaN or overflows the representable range of SignedDuration.

const fn saturating_seconds_f64(seconds: f64) -> Self

Creates a new SignedDuration from the specified number of seconds represented as f64. Any values that are out of bounds are saturated at the minimum or maximum respectively. NaN gets turned into a SignedDuration of 0 seconds.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::saturating_seconds_f64(0.5), 0.5.seconds());
assert_eq!(
    SignedDuration::saturating_seconds_f64(-0.5),
    (-0.5).seconds()
);
assert_eq!(
    SignedDuration::saturating_seconds_f64(f64::NAN),
    SignedDuration::new(0, 0),
);
assert_eq!(
    SignedDuration::saturating_seconds_f64(f64::NEG_INFINITY),
    SignedDuration::MIN,
);
assert_eq!(
    SignedDuration::saturating_seconds_f64(f64::INFINITY),
    SignedDuration::MAX,
);
const fn saturating_seconds_f32(seconds: f32) -> Self

Creates a new SignedDuration from the specified number of seconds represented as f32. Any values that are out of bounds are saturated at the minimum or maximum respectively. NaN gets turned into a SignedDuration of 0 seconds.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::saturating_seconds_f32(0.5), 0.5.seconds());
assert_eq!(
    SignedDuration::saturating_seconds_f32(-0.5),
    (-0.5).seconds()
);
assert_eq!(
    SignedDuration::saturating_seconds_f32(f32::NAN),
    SignedDuration::new(0, 0),
);
assert_eq!(
    SignedDuration::saturating_seconds_f32(f32::NEG_INFINITY),
    SignedDuration::MIN,
);
assert_eq!(
    SignedDuration::saturating_seconds_f32(f32::INFINITY),
    SignedDuration::MAX,
);
const fn checked_seconds_f64(seconds: f64) -> Option<Self>

Creates a new SignedDuration from the specified number of seconds represented as f64. Returns None if the SignedDuration can't be represented.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(
    SignedDuration::checked_seconds_f64(0.5),
    Some(0.5.seconds())
);
assert_eq!(
    SignedDuration::checked_seconds_f64(-0.5),
    Some((-0.5).seconds())
);
assert_eq!(SignedDuration::checked_seconds_f64(f64::NAN), None);
assert_eq!(SignedDuration::checked_seconds_f64(f64::NEG_INFINITY), None);
assert_eq!(SignedDuration::checked_seconds_f64(f64::INFINITY), None);
const fn checked_seconds_f32(seconds: f32) -> Option<Self>

Creates a new SignedDuration from the specified number of seconds represented as f32. Returns None if the SignedDuration can't be represented.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(
    SignedDuration::checked_seconds_f32(0.5),
    Some(0.5.seconds())
);
assert_eq!(
    SignedDuration::checked_seconds_f32(-0.5),
    Some((-0.5).seconds())
);
assert_eq!(SignedDuration::checked_seconds_f32(f32::NAN), None);
assert_eq!(SignedDuration::checked_seconds_f32(f32::NEG_INFINITY), None);
assert_eq!(SignedDuration::checked_seconds_f32(f32::INFINITY), None);
const fn milliseconds(milliseconds: i64) -> Self

Create a new SignedDuration with the given number of milliseconds.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::milliseconds(1), 1_000.microseconds());
assert_eq!(SignedDuration::milliseconds(-1), (-1_000).microseconds());
const fn microseconds(microseconds: i64) -> Self

Create a new SignedDuration with the given number of microseconds.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::microseconds(1), 1_000.nanoseconds());
assert_eq!(SignedDuration::microseconds(-1), (-1_000).nanoseconds());
const fn nanoseconds(nanoseconds: i64) -> Self

Create a new SignedDuration with the given number of nanoseconds.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(SignedDuration::nanoseconds(1), 1.microseconds() / 1_000);
assert_eq!(SignedDuration::nanoseconds(-1), (-1).microseconds() / 1_000);
const fn nanoseconds_i128(nanoseconds: i128) -> Self

Create a new SignedDuration with the given number of nanoseconds.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(
    SignedDuration::nanoseconds_i128(1_234_567_890),
    1.seconds() + 234_567_890.nanoseconds()
);

Panics

This may panic if an overflow occurs. This may happen because the input range cannot be fully mapped to the output.

const fn whole_weeks(self) -> i64

Get the number of whole weeks in the duration.

# use time::ext::NumericalDuration;
assert_eq!(1.weeks().whole_weeks(), 1);
assert_eq!((-1).weeks().whole_weeks(), -1);
assert_eq!(6.days().whole_weeks(), 0);
assert_eq!((-6).days().whole_weeks(), 0);
const fn whole_days(self) -> i64

Get the number of whole days in the duration.

# use time::ext::NumericalDuration;
assert_eq!(1.days().whole_days(), 1);
assert_eq!((-1).days().whole_days(), -1);
assert_eq!(23.hours().whole_days(), 0);
assert_eq!((-23).hours().whole_days(), 0);
const fn whole_hours(self) -> i64

Get the number of whole hours in the duration.

# use time::ext::NumericalDuration;
assert_eq!(1.hours().whole_hours(), 1);
assert_eq!((-1).hours().whole_hours(), -1);
assert_eq!(59.minutes().whole_hours(), 0);
assert_eq!((-59).minutes().whole_hours(), 0);
const fn whole_minutes(self) -> i64

Get the number of whole minutes in the duration.

# use time::ext::NumericalDuration;
assert_eq!(1.minutes().whole_minutes(), 1);
assert_eq!((-1).minutes().whole_minutes(), -1);
assert_eq!(59.seconds().whole_minutes(), 0);
assert_eq!((-59).seconds().whole_minutes(), 0);
const fn whole_seconds(self) -> i64

Get the number of whole seconds in the duration.

# use time::ext::NumericalDuration;
assert_eq!(1.seconds().whole_seconds(), 1);
assert_eq!((-1).seconds().whole_seconds(), -1);
assert_eq!(1.minutes().whole_seconds(), 60);
assert_eq!((-1).minutes().whole_seconds(), -60);
const fn as_seconds_f64(self) -> f64

Get the number of fractional seconds in the duration.

# use time::ext::NumericalDuration;
assert_eq!(1.5.seconds().as_seconds_f64(), 1.5);
assert_eq!((-1.5).seconds().as_seconds_f64(), -1.5);
const fn as_seconds_f32(self) -> f32

Get the number of fractional seconds in the duration.

# use time::ext::NumericalDuration;
assert_eq!(1.5.seconds().as_seconds_f32(), 1.5);
assert_eq!((-1.5).seconds().as_seconds_f32(), -1.5);
const fn whole_milliseconds(self) -> i128

Get the number of whole milliseconds in the duration.

# use time::ext::NumericalDuration;
assert_eq!(1.seconds().whole_milliseconds(), 1_000);
assert_eq!((-1).seconds().whole_milliseconds(), -1_000);
assert_eq!(1.milliseconds().whole_milliseconds(), 1);
assert_eq!((-1).milliseconds().whole_milliseconds(), -1);
const fn subsec_milliseconds(self) -> i16

Get the number of milliseconds past the number of whole seconds.

Always in the range -999..=999.

# use time::ext::NumericalDuration;
assert_eq!(1.4.seconds().subsec_milliseconds(), 400);
assert_eq!((-1.4).seconds().subsec_milliseconds(), -400);
const fn whole_microseconds(self) -> i128

Get the number of whole microseconds in the duration.

# use time::ext::NumericalDuration;
assert_eq!(1.milliseconds().whole_microseconds(), 1_000);
assert_eq!((-1).milliseconds().whole_microseconds(), -1_000);
assert_eq!(1.microseconds().whole_microseconds(), 1);
assert_eq!((-1).microseconds().whole_microseconds(), -1);
const fn subsec_microseconds(self) -> i32

Get the number of microseconds past the number of whole seconds.

Always in the range -999_999..=999_999.

# use time::ext::NumericalDuration;
assert_eq!(1.0004.seconds().subsec_microseconds(), 400);
assert_eq!((-1.0004).seconds().subsec_microseconds(), -400);
const fn whole_nanoseconds(self) -> i128

Get the number of nanoseconds in the duration.

# use time::ext::NumericalDuration;
assert_eq!(1.microseconds().whole_nanoseconds(), 1_000);
assert_eq!((-1).microseconds().whole_nanoseconds(), -1_000);
assert_eq!(1.nanoseconds().whole_nanoseconds(), 1);
assert_eq!((-1).nanoseconds().whole_nanoseconds(), -1);
const fn subsec_nanoseconds(self) -> i32

Get the number of nanoseconds past the number of whole seconds.

The returned value will always be in the range -999_999_999..=999_999_999.

# use time::ext::NumericalDuration;
assert_eq!(1.000_000_400.seconds().subsec_nanoseconds(), 400);
assert_eq!((-1.000_000_400).seconds().subsec_nanoseconds(), -400);
const fn checked_add(self, rhs: Self) -> Option<Self>

Computes self + rhs, returning None if an overflow occurred.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(5.seconds().checked_add(5.seconds()), Some(10.seconds()));
assert_eq!(SignedDuration::MAX.checked_add(1.nanoseconds()), None);
assert_eq!((-5).seconds().checked_add(5.seconds()), Some(0.seconds()));
const fn checked_sub(self, rhs: Self) -> Option<Self>

Computes self - rhs, returning None if an overflow occurred.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(
    5.seconds().checked_sub(5.seconds()),
    Some(SignedDuration::ZERO)
);
assert_eq!(SignedDuration::MIN.checked_sub(1.nanoseconds()), None);
assert_eq!(5.seconds().checked_sub(10.seconds()), Some((-5).seconds()));
const fn checked_mul(self, rhs: i32) -> Option<Self>

Computes self * rhs, returning None if an overflow occurred.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(5.seconds().checked_mul(2), Some(10.seconds()));
assert_eq!(5.seconds().checked_mul(-2), Some((-10).seconds()));
assert_eq!(5.seconds().checked_mul(0), Some(0.seconds()));
assert_eq!(SignedDuration::MAX.checked_mul(2), None);
assert_eq!(SignedDuration::MIN.checked_mul(2), None);
const fn checked_div(self, rhs: i32) -> Option<Self>

Computes self / rhs, returning None if rhs == 0 or if the result would overflow.

# use time::ext::NumericalDuration;
assert_eq!(10.seconds().checked_div(2), Some(5.seconds()));
assert_eq!(10.seconds().checked_div(-2), Some((-5).seconds()));
assert_eq!(1.seconds().checked_div(0), None);
const fn checked_neg(self) -> Option<Self>

Computes -self, returning None if the result would overflow.

# use time::ext::NumericalDuration;
# use time::SignedDuration;
assert_eq!(5.seconds().checked_neg(), Some((-5).seconds()));
assert_eq!(SignedDuration::MIN.checked_neg(), None);
const fn saturating_add(self, rhs: Self) -> Self

Computes self + rhs, saturating if an overflow occurred.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(5.seconds().saturating_add(5.seconds()), 10.seconds());
assert_eq!(
    SignedDuration::MAX.saturating_add(1.nanoseconds()),
    SignedDuration::MAX
);
assert_eq!(
    SignedDuration::MIN.saturating_add((-1).nanoseconds()),
    SignedDuration::MIN
);
assert_eq!(
    (-5).seconds().saturating_add(5.seconds()),
    SignedDuration::ZERO
);
const fn saturating_sub(self, rhs: Self) -> Self

Computes self - rhs, saturating if an overflow occurred.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(
    5.seconds().saturating_sub(5.seconds()),
    SignedDuration::ZERO
);
assert_eq!(
    SignedDuration::MIN.saturating_sub(1.nanoseconds()),
    SignedDuration::MIN
);
assert_eq!(
    SignedDuration::MAX.saturating_sub((-1).nanoseconds()),
    SignedDuration::MAX
);
assert_eq!(5.seconds().saturating_sub(10.seconds()), (-5).seconds());
const fn saturating_mul(self, rhs: i32) -> Self

Computes self * rhs, saturating if an overflow occurred.

# use time::{SignedDuration, ext::NumericalDuration};
assert_eq!(5.seconds().saturating_mul(2), 10.seconds());
assert_eq!(5.seconds().saturating_mul(-2), (-10).seconds());
assert_eq!(5.seconds().saturating_mul(0), SignedDuration::ZERO);
assert_eq!(SignedDuration::MAX.saturating_mul(2), SignedDuration::MAX);
assert_eq!(SignedDuration::MIN.saturating_mul(2), SignedDuration::MIN);
assert_eq!(SignedDuration::MAX.saturating_mul(-2), SignedDuration::MIN);
assert_eq!(SignedDuration::MIN.saturating_mul(-2), SignedDuration::MAX);

Trait Implementations

impl Add for SignedDuration

type Output = SignedDuration;
fn add(self, rhs: Self) -> Self::Output

Panics

This may panic if an overflow occurs.

impl Add<Duration> for SignedDuration

type Output = SignedDuration;
fn add(self, std_duration: StdDuration) -> Self::Output

Panics

This may panic if an overflow occurs.

impl AddAssign for SignedDuration

fn add_assign(&mut self, rhs: Self)

Panics

This may panic if an overflow occurs.

impl AddAssign<Duration> for SignedDuration

fn add_assign(&mut self, rhs: StdDuration)

Panics

This may panic if an overflow occurs.

impl Clone for SignedDuration

fn clone(&self) -> SignedDuration

impl Copy for SignedDuration

impl Debug for SignedDuration

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

impl Default for SignedDuration

fn default() -> Self

impl Display for SignedDuration

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

impl Div for SignedDuration

type Output = f64;
fn div(self, rhs: Self) -> Self::Output

Panics

This may panic if rhs == SignedDuration::ZERO.

impl Div<Duration> for SignedDuration

type Output = f64;
fn div(self, rhs: StdDuration) -> Self::Output

Panics

This may panic if rhs == SignedDuration::ZERO.

impl Div<f32> for SignedDuration

type Output = SignedDuration;
fn div(self, rhs: f32) -> Self::Output

Panics

This may panic if an overflow occurs or if rhs == 0.

impl Div<f64> for SignedDuration

type Output = SignedDuration;
fn div(self, rhs: f64) -> Self::Output

Panics

This may panic if an overflow occurs or if rhs == 0.

impl Div<i16> for SignedDuration

type Output = SignedDuration;
fn div(self, rhs: i16) -> Self::Output

Panics

This may panic if an overflow occurs or if rhs == 0.

impl Div<i32> for SignedDuration

type Output = SignedDuration;
fn div(self, rhs: i32) -> Self::Output

Panics

This may panic if an overflow occurs or if rhs == 0.

impl Div<i8> for SignedDuration

type Output = SignedDuration;
fn div(self, rhs: i8) -> Self::Output

Panics

This may panic if an overflow occurs or if rhs == 0.

impl Div<u16> for SignedDuration

type Output = SignedDuration;
fn div(self, rhs: u16) -> Self::Output

Panics

This may panic if an overflow occurs or if rhs == 0.

impl Div<u32> for SignedDuration

type Output = SignedDuration;
fn div(self, rhs: u32) -> Self::Output

Panics

This may panic if an overflow occurs or if rhs == 0.

impl Div<u8> for SignedDuration

type Output = SignedDuration;
fn div(self, rhs: u8) -> Self::Output

Panics

This may panic if an overflow occurs or if rhs == 0.

impl DivAssign<f32> for SignedDuration

fn div_assign(&mut self, rhs: f32)

Panics

This may panic if an overflow occurs or if rhs == 0.

impl DivAssign<f64> for SignedDuration

fn div_assign(&mut self, rhs: f64)

Panics

This may panic if an overflow occurs or if rhs == 0.

impl DivAssign<i16> for SignedDuration

fn div_assign(&mut self, rhs: i16)

Panics

This may panic if an overflow occurs or if rhs == 0.

impl DivAssign<i32> for SignedDuration

fn div_assign(&mut self, rhs: i32)

Panics

This may panic if an overflow occurs or if rhs == 0.

impl DivAssign<i8> for SignedDuration

fn div_assign(&mut self, rhs: i8)

Panics

This may panic if an overflow occurs or if rhs == 0.

impl DivAssign<u16> for SignedDuration

fn div_assign(&mut self, rhs: u16)

Panics

This may panic if an overflow occurs or if rhs == 0.

impl DivAssign<u32> for SignedDuration

fn div_assign(&mut self, rhs: u32)

Panics

This may panic if an overflow occurs or if rhs == 0.

impl DivAssign<u8> for SignedDuration

fn div_assign(&mut self, rhs: u8)

Panics

This may panic if an overflow occurs or if rhs == 0.

impl Eq for SignedDuration

impl Hash for SignedDuration

fn hash<H>(&self, state: &mut H)
where
    H: Hasher,

impl Mul<f32> for SignedDuration

type Output = SignedDuration;
fn mul(self, rhs: f32) -> Self::Output

Panics

This may panic if an overflow occurs.

impl Mul<f64> for SignedDuration

type Output = SignedDuration;
fn mul(self, rhs: f64) -> Self::Output

Panics

This may panic if an overflow occurs.

impl Mul<i16> for SignedDuration

type Output = SignedDuration;
fn mul(self, rhs: i16) -> Self::Output

Panics

This may panic if an overflow occurs.

impl Mul<i32> for SignedDuration

type Output = SignedDuration;
fn mul(self, rhs: i32) -> Self::Output

Panics

This may panic if an overflow occurs.

impl Mul<i8> for SignedDuration

type Output = SignedDuration;
fn mul(self, rhs: i8) -> Self::Output

Panics

This may panic if an overflow occurs.

impl Mul<u16> for SignedDuration

type Output = SignedDuration;
fn mul(self, rhs: u16) -> Self::Output

Panics

This may panic if an overflow occurs.

impl Mul<u32> for SignedDuration

type Output = SignedDuration;
fn mul(self, rhs: u32) -> Self::Output

Panics

This may panic if an overflow occurs.

impl Mul<u8> for SignedDuration

type Output = SignedDuration;
fn mul(self, rhs: u8) -> Self::Output

Panics

This may panic if an overflow occurs.

impl MulAssign<f32> for SignedDuration

fn mul_assign(&mut self, rhs: f32)

Panics

This may panic if an overflow occurs.

impl MulAssign<f64> for SignedDuration

fn mul_assign(&mut self, rhs: f64)

Panics

This may panic if an overflow occurs.

impl MulAssign<i16> for SignedDuration

fn mul_assign(&mut self, rhs: i16)

Panics

This may panic if an overflow occurs.

impl MulAssign<i32> for SignedDuration

fn mul_assign(&mut self, rhs: i32)

Panics

This may panic if an overflow occurs.

impl MulAssign<i8> for SignedDuration

fn mul_assign(&mut self, rhs: i8)

Panics

This may panic if an overflow occurs.

impl MulAssign<u16> for SignedDuration

fn mul_assign(&mut self, rhs: u16)

Panics

This may panic if an overflow occurs.

impl MulAssign<u32> for SignedDuration

fn mul_assign(&mut self, rhs: u32)

Panics

This may panic if an overflow occurs.

impl MulAssign<u8> for SignedDuration

fn mul_assign(&mut self, rhs: u8)

Panics

This may panic if an overflow occurs.

impl Neg for SignedDuration

type Output = SignedDuration;
fn neg(self) -> Self::Output

Panics

This may panic if an overflow occurs.

impl Ord for SignedDuration

fn cmp(&self, other: &Self) -> Ordering

impl PartialEq for SignedDuration

fn eq(&self, other: &Self) -> bool

impl PartialEq<Duration> for SignedDuration

fn eq(&self, rhs: &StdDuration) -> bool

impl PartialOrd for SignedDuration

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

impl PartialOrd<Duration> for SignedDuration

fn partial_cmp(&self, rhs: &StdDuration) -> Option<Ordering>

impl Sub for SignedDuration

type Output = SignedDuration;
fn sub(self, rhs: Self) -> Self::Output

Panics

This may panic if an overflow occurs.

impl Sub<Duration> for SignedDuration

type Output = SignedDuration;
fn sub(self, rhs: StdDuration) -> Self::Output

Panics

This may panic if an overflow occurs.

impl SubAssign for SignedDuration

fn sub_assign(&mut self, rhs: Self)

Panics

This may panic if an overflow occurs.

impl SubAssign<Duration> for SignedDuration

fn sub_assign(&mut self, rhs: StdDuration)

Panics

This may panic if an overflow occurs.

impl Sum for SignedDuration

fn sum<I>(iter: I) -> Self
where
    I: Iterator<Item = Self>,

impl TryFrom<Duration> for SignedDuration

type Error = ConversionRange;
fn try_from(original: StdDuration) -> Result<Self, ConversionRange>

impl<'a> Sum<&'a SignedDuration> for SignedDuration

fn sum<I>(iter: I) -> Self
where
    I: Iterator<Item = &'a Self>,

Auto Trait Implementations

impl Freeze for SignedDuration

impl RefUnwindSafe for SignedDuration

impl Send for SignedDuration

impl Sync for SignedDuration

impl Unpin for SignedDuration

impl UnsafeUnpin for SignedDuration

impl UnwindSafe for SignedDuration

Blanket Implementations

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

fn type_id(&self) -> TypeId

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

fn borrow(&self) -> &T

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

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

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

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

impl<T> From<T> for SignedDuration

fn from(t: T) -> T

Returns the argument unchanged.

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

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

impl<T> ToString for SignedDuration where T: Display + ?Sized,

fn to_string(&self) -> String

impl<T, U> Into<U> for SignedDuration 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 SignedDuration where U: Into<T>,

type Error = never;
fn try_from(value: U) -> Result<T, never>

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

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