pub struct SignedDuration { /* private fields */ }cookies only.Expand description
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§
Source§impl SignedDuration
impl SignedDuration
Sourcepub const ZERO: SignedDuration
pub const ZERO: SignedDuration
Equivalent to 0.seconds().
assert_eq!(SignedDuration::ZERO, 0.seconds());Sourcepub const NANOSECOND: SignedDuration
pub const NANOSECOND: SignedDuration
Equivalent to 1.nanoseconds().
assert_eq!(SignedDuration::NANOSECOND, 1.nanoseconds());Sourcepub const MICROSECOND: SignedDuration
pub const MICROSECOND: SignedDuration
Equivalent to 1.microseconds().
assert_eq!(SignedDuration::MICROSECOND, 1.microseconds());Sourcepub const MILLISECOND: SignedDuration
pub const MILLISECOND: SignedDuration
Equivalent to 1.milliseconds().
assert_eq!(SignedDuration::MILLISECOND, 1.milliseconds());Sourcepub const SECOND: SignedDuration
pub const SECOND: SignedDuration
Equivalent to 1.seconds().
assert_eq!(SignedDuration::SECOND, 1.seconds());Sourcepub const MINUTE: SignedDuration
pub const MINUTE: SignedDuration
Equivalent to 1.minutes().
assert_eq!(SignedDuration::MINUTE, 1.minutes());Sourcepub const HOUR: SignedDuration
pub const HOUR: SignedDuration
Equivalent to 1.hours().
assert_eq!(SignedDuration::HOUR, 1.hours());Sourcepub const DAY: SignedDuration
pub const DAY: SignedDuration
Equivalent to 1.days().
assert_eq!(SignedDuration::DAY, 1.days());Sourcepub const WEEK: SignedDuration
pub const WEEK: SignedDuration
Equivalent to 1.weeks().
assert_eq!(SignedDuration::WEEK, 1.weeks());Sourcepub const MIN: SignedDuration
pub const MIN: SignedDuration
The minimum possible duration. Adding any negative duration to this will cause an overflow.
Sourcepub const MAX: SignedDuration
pub const MAX: SignedDuration
The maximum possible duration. Adding any positive duration to this will cause an overflow.
Sourcepub const fn is_zero(self) -> bool
pub const fn is_zero(self) -> bool
Check if a duration is exactly zero.
assert!(0.seconds().is_zero());
assert!(!1.nanoseconds().is_zero());Sourcepub const fn is_negative(self) -> bool
pub const fn is_negative(self) -> bool
Check if a duration is negative.
assert!((-1).seconds().is_negative());
assert!(!0.seconds().is_negative());
assert!(!1.seconds().is_negative());Sourcepub const fn is_positive(self) -> bool
pub const fn is_positive(self) -> bool
Check if a duration is positive.
assert!(1.seconds().is_positive());
assert!(!0.seconds().is_positive());
assert!(!(-1).seconds().is_positive());Sourcepub const fn abs(self) -> SignedDuration
pub const fn abs(self) -> SignedDuration
Get the absolute value of the duration.
This method saturates the returned value if it would otherwise overflow.
assert_eq!(1.seconds().abs(), 1.seconds());
assert_eq!(0.seconds().abs(), 0.seconds());
assert_eq!((-1).seconds().abs(), 1.seconds());Sourcepub const fn unsigned_abs(self) -> Duration
pub const fn unsigned_abs(self) -> Duration
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).
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());Sourcepub const fn new(seconds: i64, nanoseconds: i32) -> SignedDuration
pub const fn new(seconds: i64, nanoseconds: i32) -> SignedDuration
Create a new SignedDuration with the provided seconds and nanoseconds. If nanoseconds is
at least ±109, it will wrap to the number of seconds.
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.
Sourcepub const fn weeks(weeks: i64) -> SignedDuration
pub const fn weeks(weeks: i64) -> SignedDuration
Create a new SignedDuration with the given number of weeks. Equivalent to
SignedDuration::seconds(weeks * 604_800).
assert_eq!(SignedDuration::weeks(1), 604_800.seconds());§Panics
This may panic if an overflow occurs.
Sourcepub const fn days(days: i64) -> SignedDuration
pub const fn days(days: i64) -> SignedDuration
Create a new SignedDuration with the given number of days. Equivalent to
SignedDuration::seconds(days * 86_400).
assert_eq!(SignedDuration::days(1), 86_400.seconds());§Panics
This may panic if an overflow occurs.
Sourcepub const fn hours(hours: i64) -> SignedDuration
pub const fn hours(hours: i64) -> SignedDuration
Create a new SignedDuration with the given number of hours. Equivalent to
SignedDuration::seconds(hours * 3_600).
assert_eq!(SignedDuration::hours(1), 3_600.seconds());§Panics
This may panic if an overflow occurs.
Sourcepub const fn minutes(minutes: i64) -> SignedDuration
pub const fn minutes(minutes: i64) -> SignedDuration
Create a new SignedDuration with the given number of minutes. Equivalent to
SignedDuration::seconds(minutes * 60).
assert_eq!(SignedDuration::minutes(1), 60.seconds());§Panics
This may panic if an overflow occurs.
Sourcepub const fn seconds(seconds: i64) -> SignedDuration
pub const fn seconds(seconds: i64) -> SignedDuration
Create a new SignedDuration with the given number of seconds.
assert_eq!(SignedDuration::seconds(1), 1_000.milliseconds());Sourcepub const fn seconds_f64(seconds: f64) -> SignedDuration
pub const fn seconds_f64(seconds: f64) -> SignedDuration
Creates a new SignedDuration from the specified number of seconds represented as f64.
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.
Sourcepub const fn seconds_f32(seconds: f32) -> SignedDuration
pub const fn seconds_f32(seconds: f32) -> SignedDuration
Creates a new SignedDuration from the specified number of seconds represented as f32.
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.
Sourcepub const fn saturating_seconds_f64(seconds: f64) -> SignedDuration
pub const fn saturating_seconds_f64(seconds: f64) -> SignedDuration
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.
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,
);Sourcepub const fn saturating_seconds_f32(seconds: f32) -> SignedDuration
pub const fn saturating_seconds_f32(seconds: f32) -> SignedDuration
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.
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,
);Sourcepub const fn checked_seconds_f64(seconds: f64) -> Option<SignedDuration>
pub const fn checked_seconds_f64(seconds: f64) -> Option<SignedDuration>
Creates a new SignedDuration from the specified number of seconds represented as f64.
Returns None if the SignedDuration can’t be represented.
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);Sourcepub const fn checked_seconds_f32(seconds: f32) -> Option<SignedDuration>
pub const fn checked_seconds_f32(seconds: f32) -> Option<SignedDuration>
Creates a new SignedDuration from the specified number of seconds represented as f32.
Returns None if the SignedDuration can’t be represented.
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);Sourcepub const fn milliseconds(milliseconds: i64) -> SignedDuration
pub const fn milliseconds(milliseconds: i64) -> SignedDuration
Create a new SignedDuration with the given number of milliseconds.
assert_eq!(SignedDuration::milliseconds(1), 1_000.microseconds());
assert_eq!(SignedDuration::milliseconds(-1), (-1_000).microseconds());Sourcepub const fn microseconds(microseconds: i64) -> SignedDuration
pub const fn microseconds(microseconds: i64) -> SignedDuration
Create a new SignedDuration with the given number of microseconds.
assert_eq!(SignedDuration::microseconds(1), 1_000.nanoseconds());
assert_eq!(SignedDuration::microseconds(-1), (-1_000).nanoseconds());Sourcepub const fn nanoseconds(nanoseconds: i64) -> SignedDuration
pub const fn nanoseconds(nanoseconds: i64) -> SignedDuration
Create a new SignedDuration with the given number of nanoseconds.
assert_eq!(SignedDuration::nanoseconds(1), 1.microseconds() / 1_000);
assert_eq!(SignedDuration::nanoseconds(-1), (-1).microseconds() / 1_000);Sourcepub const fn nanoseconds_i128(nanoseconds: i128) -> SignedDuration
pub const fn nanoseconds_i128(nanoseconds: i128) -> SignedDuration
Create a new SignedDuration with the given number of nanoseconds.
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.
Sourcepub const fn whole_weeks(self) -> i64
pub const fn whole_weeks(self) -> i64
Get the number of whole weeks in the duration.
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);Sourcepub const fn whole_days(self) -> i64
pub const fn whole_days(self) -> i64
Get the number of whole days in the duration.
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);Sourcepub const fn whole_hours(self) -> i64
pub const fn whole_hours(self) -> i64
Get the number of whole hours in the duration.
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);Sourcepub const fn whole_minutes(self) -> i64
pub const fn whole_minutes(self) -> i64
Get the number of whole minutes in the duration.
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);Sourcepub const fn whole_seconds(self) -> i64
pub const fn whole_seconds(self) -> i64
Get the number of whole seconds in the duration.
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);Sourcepub const fn as_seconds_f64(self) -> f64
pub const fn as_seconds_f64(self) -> f64
Get the number of fractional seconds in the duration.
assert_eq!(1.5.seconds().as_seconds_f64(), 1.5);
assert_eq!((-1.5).seconds().as_seconds_f64(), -1.5);Sourcepub const fn as_seconds_f32(self) -> f32
pub const fn as_seconds_f32(self) -> f32
Get the number of fractional seconds in the duration.
assert_eq!(1.5.seconds().as_seconds_f32(), 1.5);
assert_eq!((-1.5).seconds().as_seconds_f32(), -1.5);Sourcepub const fn whole_milliseconds(self) -> i128
pub const fn whole_milliseconds(self) -> i128
Get the number of whole milliseconds in the duration.
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);Sourcepub const fn subsec_milliseconds(self) -> i16
pub const fn subsec_milliseconds(self) -> i16
Get the number of milliseconds past the number of whole seconds.
Always in the range -999..=999.
assert_eq!(1.4.seconds().subsec_milliseconds(), 400);
assert_eq!((-1.4).seconds().subsec_milliseconds(), -400);Sourcepub const fn whole_microseconds(self) -> i128
pub const fn whole_microseconds(self) -> i128
Get the number of whole microseconds in the duration.
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);Sourcepub const fn subsec_microseconds(self) -> i32
pub 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.
assert_eq!(1.0004.seconds().subsec_microseconds(), 400);
assert_eq!((-1.0004).seconds().subsec_microseconds(), -400);Sourcepub const fn whole_nanoseconds(self) -> i128
pub const fn whole_nanoseconds(self) -> i128
Get the number of nanoseconds in the duration.
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);Sourcepub const fn subsec_nanoseconds(self) -> i32
pub 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.
assert_eq!(1.000_000_400.seconds().subsec_nanoseconds(), 400);
assert_eq!((-1.000_000_400).seconds().subsec_nanoseconds(), -400);Sourcepub const fn checked_add(self, rhs: SignedDuration) -> Option<SignedDuration>
pub const fn checked_add(self, rhs: SignedDuration) -> Option<SignedDuration>
Computes self + rhs, returning None if an overflow occurred.
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()));Sourcepub const fn checked_sub(self, rhs: SignedDuration) -> Option<SignedDuration>
pub const fn checked_sub(self, rhs: SignedDuration) -> Option<SignedDuration>
Computes self - rhs, returning None if an overflow occurred.
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()));Sourcepub const fn checked_mul(self, rhs: i32) -> Option<SignedDuration>
pub const fn checked_mul(self, rhs: i32) -> Option<SignedDuration>
Computes self * rhs, returning None if an overflow occurred.
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);Sourcepub const fn checked_div(self, rhs: i32) -> Option<SignedDuration>
pub const fn checked_div(self, rhs: i32) -> Option<SignedDuration>
Computes self / rhs, returning None if rhs == 0 or if the result would overflow.
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);Sourcepub const fn checked_neg(self) -> Option<SignedDuration>
pub const fn checked_neg(self) -> Option<SignedDuration>
Computes -self, returning None if the result would overflow.
assert_eq!(5.seconds().checked_neg(), Some((-5).seconds()));
assert_eq!(SignedDuration::MIN.checked_neg(), None);Sourcepub const fn saturating_add(self, rhs: SignedDuration) -> SignedDuration
pub const fn saturating_add(self, rhs: SignedDuration) -> SignedDuration
Computes self + rhs, saturating if an overflow occurred.
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
);Sourcepub const fn saturating_sub(self, rhs: SignedDuration) -> SignedDuration
pub const fn saturating_sub(self, rhs: SignedDuration) -> SignedDuration
Computes self - rhs, saturating if an overflow occurred.
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());Sourcepub const fn saturating_mul(self, rhs: i32) -> SignedDuration
pub const fn saturating_mul(self, rhs: i32) -> SignedDuration
Computes self * rhs, saturating if an overflow occurred.
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§
Source§impl Add for SignedDuration
impl Add for SignedDuration
Source§fn add(self, rhs: SignedDuration) -> <SignedDuration as Add>::Output
fn add(self, rhs: SignedDuration) -> <SignedDuration as Add>::Output
§Panics
This may panic if an overflow occurs.
Source§type Output = SignedDuration
type Output = SignedDuration
+ operator.Source§impl Add<Duration> for SignedDuration
impl Add<Duration> for SignedDuration
Source§impl Add<SignedDuration> for Date
impl Add<SignedDuration> for Date
Source§impl Add<SignedDuration> for OffsetDateTime
impl Add<SignedDuration> for OffsetDateTime
Source§fn add(
self,
duration: SignedDuration,
) -> <OffsetDateTime as Add<SignedDuration>>::Output
fn add( self, duration: SignedDuration, ) -> <OffsetDateTime as Add<SignedDuration>>::Output
§Panics
This may panic if an overflow occurs.
Source§type Output = OffsetDateTime
type Output = OffsetDateTime
+ operator.Source§impl Add<SignedDuration> for PlainDateTime
impl Add<SignedDuration> for PlainDateTime
Source§fn add(
self,
duration: SignedDuration,
) -> <PlainDateTime as Add<SignedDuration>>::Output
fn add( self, duration: SignedDuration, ) -> <PlainDateTime as Add<SignedDuration>>::Output
§Panics
This may panic if an overflow occurs.
Source§type Output = PlainDateTime
type Output = PlainDateTime
+ operator.Source§impl Add<SignedDuration> for Time
impl Add<SignedDuration> for Time
Source§fn add(self, duration: SignedDuration) -> <Time as Add<SignedDuration>>::Output
fn add(self, duration: SignedDuration) -> <Time as Add<SignedDuration>>::Output
Add the sub-day time of the SignedDuration to the Time. Wraps on overflow.
assert_eq!(time!(12:00) + 2.hours(), time!(14:00));
assert_eq!(time!(0:00:01) + (-2).seconds(), time!(23:59:59));Source§impl Add<SignedDuration> for Timestamp
impl Add<SignedDuration> for Timestamp
Source§impl Add<SignedDuration> for UtcDateTime
impl Add<SignedDuration> for UtcDateTime
Source§fn add(
self,
duration: SignedDuration,
) -> <UtcDateTime as Add<SignedDuration>>::Output
fn add( self, duration: SignedDuration, ) -> <UtcDateTime as Add<SignedDuration>>::Output
§Panics
This may panic if an overflow occurs.
Source§type Output = UtcDateTime
type Output = UtcDateTime
+ operator.Source§impl AddAssign for SignedDuration
impl AddAssign for SignedDuration
Source§fn add_assign(&mut self, rhs: SignedDuration)
fn add_assign(&mut self, rhs: SignedDuration)
§Panics
This may panic if an overflow occurs.
Source§impl AddAssign<Duration> for SignedDuration
impl AddAssign<Duration> for SignedDuration
Source§fn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
§Panics
This may panic if an overflow occurs.
Source§impl AddAssign<SignedDuration> for Date
impl AddAssign<SignedDuration> for Date
Source§fn add_assign(&mut self, rhs: SignedDuration)
fn add_assign(&mut self, rhs: SignedDuration)
§Panics
This may panic if an overflow occurs.
Source§impl AddAssign<SignedDuration> for OffsetDateTime
impl AddAssign<SignedDuration> for OffsetDateTime
Source§fn add_assign(&mut self, rhs: SignedDuration)
fn add_assign(&mut self, rhs: SignedDuration)
§Panics
This may panic if an overflow occurs.
Source§impl AddAssign<SignedDuration> for PlainDateTime
impl AddAssign<SignedDuration> for PlainDateTime
Source§fn add_assign(&mut self, duration: SignedDuration)
fn add_assign(&mut self, duration: SignedDuration)
§Panics
This may panic if an overflow occurs.
Source§impl AddAssign<SignedDuration> for Time
impl AddAssign<SignedDuration> for Time
Source§fn add_assign(&mut self, rhs: SignedDuration)
fn add_assign(&mut self, rhs: SignedDuration)
+= operation. Read moreSource§impl AddAssign<SignedDuration> for Timestamp
impl AddAssign<SignedDuration> for Timestamp
Source§fn add_assign(&mut self, rhs: SignedDuration)
fn add_assign(&mut self, rhs: SignedDuration)
§Panics
This may panic if an overflow occurs.
Source§impl AddAssign<SignedDuration> for UtcDateTime
impl AddAssign<SignedDuration> for UtcDateTime
Source§fn add_assign(&mut self, rhs: SignedDuration)
fn add_assign(&mut self, rhs: SignedDuration)
§Panics
This may panic if an overflow occurs.
Source§impl Clone for SignedDuration
impl Clone for SignedDuration
Source§fn clone(&self) -> SignedDuration
fn clone(&self) -> SignedDuration
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for SignedDuration
Source§impl Debug for SignedDuration
impl Debug for SignedDuration
Source§impl Default for SignedDuration
impl Default for SignedDuration
Source§fn default() -> SignedDuration
fn default() -> SignedDuration
Source§impl Display for SignedDuration
The format returned by this implementation is not stable and must not be relied upon.
impl Display for SignedDuration
The format returned by this implementation is not stable and must not be relied upon.
By default this produces an exact, full-precision printout of the duration. For a concise,
rounded printout instead, you can use the .N format specifier:
let duration = SignedDuration::new(123456, 789011223);
println!("{duration:.3}");For the purposes of this implementation, a day is exactly 24 hours and a minute is exactly 60 seconds.
Source§impl Div for SignedDuration
impl Div for SignedDuration
Source§impl Div<Duration> for SignedDuration
impl Div<Duration> for SignedDuration
Source§impl Div<f32> for SignedDuration
impl Div<f32> for SignedDuration
Source§impl Div<f64> for SignedDuration
impl Div<f64> for SignedDuration
Source§impl Div<i8> for SignedDuration
impl Div<i8> for SignedDuration
Source§impl Div<i16> for SignedDuration
impl Div<i16> for SignedDuration
Source§impl Div<i32> for SignedDuration
impl Div<i32> for SignedDuration
Source§impl Div<u8> for SignedDuration
impl Div<u8> for SignedDuration
Source§impl Div<u16> for SignedDuration
impl Div<u16> for SignedDuration
Source§impl Div<u32> for SignedDuration
impl Div<u32> for SignedDuration
Source§impl DivAssign<f32> for SignedDuration
impl DivAssign<f32> for SignedDuration
Source§fn div_assign(&mut self, rhs: f32)
fn div_assign(&mut self, rhs: f32)
§Panics
This may panic if an overflow occurs or if rhs == 0.
Source§impl DivAssign<f64> for SignedDuration
impl DivAssign<f64> for SignedDuration
Source§fn div_assign(&mut self, rhs: f64)
fn div_assign(&mut self, rhs: f64)
§Panics
This may panic if an overflow occurs or if rhs == 0.
Source§impl DivAssign<i8> for SignedDuration
impl DivAssign<i8> for SignedDuration
Source§fn div_assign(&mut self, rhs: i8)
fn div_assign(&mut self, rhs: i8)
§Panics
This may panic if an overflow occurs or if rhs == 0.
Source§impl DivAssign<i16> for SignedDuration
impl DivAssign<i16> for SignedDuration
Source§fn div_assign(&mut self, rhs: i16)
fn div_assign(&mut self, rhs: i16)
§Panics
This may panic if an overflow occurs or if rhs == 0.
Source§impl DivAssign<i32> for SignedDuration
impl DivAssign<i32> for SignedDuration
Source§fn div_assign(&mut self, rhs: i32)
fn div_assign(&mut self, rhs: i32)
§Panics
This may panic if an overflow occurs or if rhs == 0.
Source§impl DivAssign<u8> for SignedDuration
impl DivAssign<u8> for SignedDuration
Source§fn div_assign(&mut self, rhs: u8)
fn div_assign(&mut self, rhs: u8)
§Panics
This may panic if an overflow occurs or if rhs == 0.
Source§impl DivAssign<u16> for SignedDuration
impl DivAssign<u16> for SignedDuration
Source§fn div_assign(&mut self, rhs: u16)
fn div_assign(&mut self, rhs: u16)
§Panics
This may panic if an overflow occurs or if rhs == 0.
Source§impl DivAssign<u32> for SignedDuration
impl DivAssign<u32> for SignedDuration
Source§fn div_assign(&mut self, rhs: u32)
fn div_assign(&mut self, rhs: u32)
§Panics
This may panic if an overflow occurs or if rhs == 0.
impl Eq for SignedDuration
Source§impl Hash for SignedDuration
impl Hash for SignedDuration
Source§impl Mul<f32> for SignedDuration
impl Mul<f32> for SignedDuration
Source§impl Mul<f64> for SignedDuration
impl Mul<f64> for SignedDuration
Source§impl Mul<i8> for SignedDuration
impl Mul<i8> for SignedDuration
Source§impl Mul<i16> for SignedDuration
impl Mul<i16> for SignedDuration
Source§impl Mul<i32> for SignedDuration
impl Mul<i32> for SignedDuration
Source§impl Mul<u8> for SignedDuration
impl Mul<u8> for SignedDuration
Source§impl Mul<u16> for SignedDuration
impl Mul<u16> for SignedDuration
Source§impl Mul<u32> for SignedDuration
impl Mul<u32> for SignedDuration
Source§impl MulAssign<f32> for SignedDuration
impl MulAssign<f32> for SignedDuration
Source§fn mul_assign(&mut self, rhs: f32)
fn mul_assign(&mut self, rhs: f32)
§Panics
This may panic if an overflow occurs.
Source§impl MulAssign<f64> for SignedDuration
impl MulAssign<f64> for SignedDuration
Source§fn mul_assign(&mut self, rhs: f64)
fn mul_assign(&mut self, rhs: f64)
§Panics
This may panic if an overflow occurs.
Source§impl MulAssign<i8> for SignedDuration
impl MulAssign<i8> for SignedDuration
Source§fn mul_assign(&mut self, rhs: i8)
fn mul_assign(&mut self, rhs: i8)
§Panics
This may panic if an overflow occurs.
Source§impl MulAssign<i16> for SignedDuration
impl MulAssign<i16> for SignedDuration
Source§fn mul_assign(&mut self, rhs: i16)
fn mul_assign(&mut self, rhs: i16)
§Panics
This may panic if an overflow occurs.
Source§impl MulAssign<i32> for SignedDuration
impl MulAssign<i32> for SignedDuration
Source§fn mul_assign(&mut self, rhs: i32)
fn mul_assign(&mut self, rhs: i32)
§Panics
This may panic if an overflow occurs.
Source§impl MulAssign<u8> for SignedDuration
impl MulAssign<u8> for SignedDuration
Source§fn mul_assign(&mut self, rhs: u8)
fn mul_assign(&mut self, rhs: u8)
§Panics
This may panic if an overflow occurs.
Source§impl MulAssign<u16> for SignedDuration
impl MulAssign<u16> for SignedDuration
Source§fn mul_assign(&mut self, rhs: u16)
fn mul_assign(&mut self, rhs: u16)
§Panics
This may panic if an overflow occurs.
Source§impl MulAssign<u32> for SignedDuration
impl MulAssign<u32> for SignedDuration
Source§fn mul_assign(&mut self, rhs: u32)
fn mul_assign(&mut self, rhs: u32)
§Panics
This may panic if an overflow occurs.
Source§impl Neg for SignedDuration
impl Neg for SignedDuration
Source§impl Ord for SignedDuration
impl Ord for SignedDuration
Source§fn cmp(&self, other: &SignedDuration) -> Ordering
fn cmp(&self, other: &SignedDuration) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for SignedDuration
impl PartialEq for SignedDuration
Source§impl PartialEq<Duration> for SignedDuration
impl PartialEq<Duration> for SignedDuration
Source§impl PartialOrd for SignedDuration
impl PartialOrd for SignedDuration
Source§impl PartialOrd<Duration> for SignedDuration
impl PartialOrd<Duration> for SignedDuration
Source§impl Sub for SignedDuration
impl Sub for SignedDuration
Source§fn sub(self, rhs: SignedDuration) -> <SignedDuration as Sub>::Output
fn sub(self, rhs: SignedDuration) -> <SignedDuration as Sub>::Output
§Panics
This may panic if an overflow occurs.
Source§type Output = SignedDuration
type Output = SignedDuration
- operator.Source§impl Sub<Duration> for SignedDuration
impl Sub<Duration> for SignedDuration
Source§impl Sub<SignedDuration> for Date
impl Sub<SignedDuration> for Date
Source§impl Sub<SignedDuration> for OffsetDateTime
impl Sub<SignedDuration> for OffsetDateTime
Source§fn sub(
self,
rhs: SignedDuration,
) -> <OffsetDateTime as Sub<SignedDuration>>::Output
fn sub( self, rhs: SignedDuration, ) -> <OffsetDateTime as Sub<SignedDuration>>::Output
§Panics
This may panic if an overflow occurs.
Source§type Output = OffsetDateTime
type Output = OffsetDateTime
- operator.Source§impl Sub<SignedDuration> for PlainDateTime
impl Sub<SignedDuration> for PlainDateTime
Source§fn sub(
self,
duration: SignedDuration,
) -> <PlainDateTime as Sub<SignedDuration>>::Output
fn sub( self, duration: SignedDuration, ) -> <PlainDateTime as Sub<SignedDuration>>::Output
§Panics
This may panic if an overflow occurs.
Source§type Output = PlainDateTime
type Output = PlainDateTime
- operator.Source§impl Sub<SignedDuration> for Time
impl Sub<SignedDuration> for Time
Source§fn sub(self, duration: SignedDuration) -> <Time as Sub<SignedDuration>>::Output
fn sub(self, duration: SignedDuration) -> <Time as Sub<SignedDuration>>::Output
Subtract the sub-day time of the SignedDuration from the Time. Wraps on overflow.
assert_eq!(time!(14:00) - 2.hours(), time!(12:00));
assert_eq!(time!(23:59:59) - (-2).seconds(), time!(0:00:01));Source§impl Sub<SignedDuration> for Timestamp
impl Sub<SignedDuration> for Timestamp
Source§impl Sub<SignedDuration> for UtcDateTime
impl Sub<SignedDuration> for UtcDateTime
Source§fn sub(
self,
rhs: SignedDuration,
) -> <UtcDateTime as Sub<SignedDuration>>::Output
fn sub( self, rhs: SignedDuration, ) -> <UtcDateTime as Sub<SignedDuration>>::Output
§Panics
This may panic if an overflow occurs.
Source§type Output = UtcDateTime
type Output = UtcDateTime
- operator.Source§impl SubAssign for SignedDuration
impl SubAssign for SignedDuration
Source§fn sub_assign(&mut self, rhs: SignedDuration)
fn sub_assign(&mut self, rhs: SignedDuration)
§Panics
This may panic if an overflow occurs.
Source§impl SubAssign<Duration> for SignedDuration
impl SubAssign<Duration> for SignedDuration
Source§fn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
§Panics
This may panic if an overflow occurs.
Source§impl SubAssign<SignedDuration> for Date
impl SubAssign<SignedDuration> for Date
Source§fn sub_assign(&mut self, rhs: SignedDuration)
fn sub_assign(&mut self, rhs: SignedDuration)
§Panics
This may panic if an overflow occurs.
Source§impl SubAssign<SignedDuration> for OffsetDateTime
impl SubAssign<SignedDuration> for OffsetDateTime
Source§fn sub_assign(&mut self, rhs: SignedDuration)
fn sub_assign(&mut self, rhs: SignedDuration)
§Panics
This may panic if an overflow occurs.
Source§impl SubAssign<SignedDuration> for PlainDateTime
impl SubAssign<SignedDuration> for PlainDateTime
Source§fn sub_assign(&mut self, duration: SignedDuration)
fn sub_assign(&mut self, duration: SignedDuration)
§Panics
This may panic if an overflow occurs.
Source§impl SubAssign<SignedDuration> for Time
impl SubAssign<SignedDuration> for Time
Source§fn sub_assign(&mut self, rhs: SignedDuration)
fn sub_assign(&mut self, rhs: SignedDuration)
-= operation. Read moreSource§impl SubAssign<SignedDuration> for Timestamp
impl SubAssign<SignedDuration> for Timestamp
Source§fn sub_assign(&mut self, rhs: SignedDuration)
fn sub_assign(&mut self, rhs: SignedDuration)
§Panics
This may panic if an overflow occurs.
Source§impl SubAssign<SignedDuration> for UtcDateTime
impl SubAssign<SignedDuration> for UtcDateTime
Source§fn sub_assign(&mut self, rhs: SignedDuration)
fn sub_assign(&mut self, rhs: SignedDuration)
§Panics
This may panic if an overflow occurs.
Source§impl Sum for SignedDuration
impl Sum for SignedDuration
Source§fn sum<I>(iter: I) -> SignedDurationwhere
I: Iterator<Item = SignedDuration>,
fn sum<I>(iter: I) -> SignedDurationwhere
I: Iterator<Item = SignedDuration>,
Self from the elements by “summing up”
the items.Source§impl<'a> Sum<&'a SignedDuration> for SignedDuration
impl<'a> Sum<&'a SignedDuration> for SignedDuration
Source§fn sum<I>(iter: I) -> SignedDurationwhere
I: Iterator<Item = &'a SignedDuration>,
fn sum<I>(iter: I) -> SignedDurationwhere
I: Iterator<Item = &'a SignedDuration>,
Self from the elements by “summing up”
the items.Source§impl TryFrom<Duration> for SignedDuration
impl TryFrom<Duration> for SignedDuration
Source§type Error = ConversionRange
type Error = ConversionRange
Source§fn try_from(original: Duration) -> Result<SignedDuration, ConversionRange>
fn try_from(original: Duration) -> Result<SignedDuration, ConversionRange>
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§
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.