pub trait Sub<Rhs = Self> {
type Output;
// Required method
fn sub(self, rhs: Rhs) -> Self::Output;
}Expand description
The subtraction operator -.
Note that Rhs is Self by default, but this is not mandatory. For
example, std::time::SystemTime implements Sub<Duration>, which permits
operations of the form SystemTime = SystemTime - Duration.
§Examples
§Subtractable points
use std::ops::Sub;
#[derive(Debug, Copy, Clone, PartialEq)]
struct Point {
x: i32,
y: i32,
}
impl Sub for Point {
type Output = Self;
fn sub(self, other: Self) -> Self::Output {
Self {
x: self.x - other.x,
y: self.y - other.y,
}
}
}
assert_eq!(Point { x: 3, y: 3 } - Point { x: 2, y: 3 },
Point { x: 1, y: 0 });§Implementing Sub with generics
Here is an example of the same Point struct implementing the Sub trait
using generics.
use std::ops::Sub;
#[derive(Debug, PartialEq)]
struct Point<T> {
x: T,
y: T,
}
// Notice that the implementation uses the associated type `Output`.
impl<T: Sub<Output = T>> Sub for Point<T> {
type Output = Self;
fn sub(self, other: Self) -> Self::Output {
Point {
x: self.x - other.x,
y: self.y - other.y,
}
}
}
assert_eq!(Point { x: 2, y: 3 } - Point { x: 1, y: 0 },
Point { x: 1, y: 3 });Required Associated Types§
Required Methods§
Implementors§
Source§impl Sub for &TypedDecimal
impl Sub for &TypedDecimal
type Output = TypedDecimal
Source§impl Sub for &TypedInteger
impl Sub for &TypedInteger
type Output = Option<TypedInteger>
Source§impl Sub for TypedDecimal
impl Sub for TypedDecimal
type Output = TypedDecimal
Source§impl Sub for TypedInteger
impl Sub for TypedInteger
type Output = Option<TypedInteger>
Source§impl Sub for ValueContainer
impl Sub for ValueContainer
type Output = Result<ValueContainer, ValueError>
1.74.0 · Source§impl Sub for Saturating<i8>
impl Sub for Saturating<i8>
type Output = Saturating<i8>
1.74.0 · Source§impl Sub for Saturating<i16>
impl Sub for Saturating<i16>
type Output = Saturating<i16>
1.74.0 · Source§impl Sub for Saturating<i32>
impl Sub for Saturating<i32>
type Output = Saturating<i32>
1.74.0 · Source§impl Sub for Saturating<i64>
impl Sub for Saturating<i64>
type Output = Saturating<i64>
1.74.0 · Source§impl Sub for Saturating<i128>
impl Sub for Saturating<i128>
type Output = Saturating<i128>
1.74.0 · Source§impl Sub for Saturating<isize>
impl Sub for Saturating<isize>
type Output = Saturating<isize>
1.74.0 · Source§impl Sub for Saturating<u8>
impl Sub for Saturating<u8>
type Output = Saturating<u8>
1.74.0 · Source§impl Sub for Saturating<u16>
impl Sub for Saturating<u16>
type Output = Saturating<u16>
1.74.0 · Source§impl Sub for Saturating<u32>
impl Sub for Saturating<u32>
type Output = Saturating<u32>
1.74.0 · Source§impl Sub for Saturating<u64>
impl Sub for Saturating<u64>
type Output = Saturating<u64>
1.74.0 · Source§impl Sub for Saturating<u128>
impl Sub for Saturating<u128>
type Output = Saturating<u128>
1.74.0 · Source§impl Sub for Saturating<usize>
impl Sub for Saturating<usize>
type Output = Saturating<usize>
Source§impl Sub for BigDecimal
impl Sub for BigDecimal
type Output = BigDecimal
Source§impl Sub for NaiveDate
Subtracts another NaiveDate from the current date.
Returns a TimeDelta of integral numbers.
impl Sub for NaiveDate
Subtracts another NaiveDate from the current date.
Returns a TimeDelta of integral numbers.
This does not overflow or underflow at all,
as all possible output fits in the range of TimeDelta.
The implementation is a wrapper around
NaiveDate::signed_duration_since.
§Example
use chrono::{NaiveDate, TimeDelta};
let from_ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap();
assert_eq!(from_ymd(2014, 1, 1) - from_ymd(2014, 1, 1), TimeDelta::zero());
assert_eq!(from_ymd(2014, 1, 1) - from_ymd(2013, 12, 31), TimeDelta::try_days(1).unwrap());
assert_eq!(from_ymd(2014, 1, 1) - from_ymd(2014, 1, 2), TimeDelta::try_days(-1).unwrap());
assert_eq!(from_ymd(2014, 1, 1) - from_ymd(2013, 9, 23), TimeDelta::try_days(100).unwrap());
assert_eq!(from_ymd(2014, 1, 1) - from_ymd(2013, 1, 1), TimeDelta::try_days(365).unwrap());
assert_eq!(
from_ymd(2014, 1, 1) - from_ymd(2010, 1, 1),
TimeDelta::try_days(365 * 4 + 1).unwrap()
);
assert_eq!(
from_ymd(2014, 1, 1) - from_ymd(1614, 1, 1),
TimeDelta::try_days(365 * 400 + 97).unwrap()
);Source§impl Sub for NaiveDateTime
Subtracts another NaiveDateTime from the current date and time.
This does not overflow or underflow at all.
impl Sub for NaiveDateTime
Subtracts another NaiveDateTime from the current date and time.
This does not overflow or underflow at all.
As a part of Chrono’s leap second handling,
the subtraction assumes that there is no leap second ever,
except when any of the NaiveDateTimes themselves represents a leap second
in which case the assumption becomes that
there are exactly one (or two) leap second(s) ever.
The implementation is a wrapper around NaiveDateTime::signed_duration_since.
§Example
use chrono::{NaiveDate, TimeDelta};
let from_ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap();
let d = from_ymd(2016, 7, 8);
assert_eq!(
d.and_hms_opt(3, 5, 7).unwrap() - d.and_hms_opt(2, 4, 6).unwrap(),
TimeDelta::try_seconds(3600 + 60 + 1).unwrap()
);
// July 8 is 190th day in the year 2016
let d0 = from_ymd(2016, 1, 1);
assert_eq!(
d.and_hms_milli_opt(0, 7, 6, 500).unwrap() - d0.and_hms_opt(0, 0, 0).unwrap(),
TimeDelta::try_seconds(189 * 86_400 + 7 * 60 + 6).unwrap()
+ TimeDelta::try_milliseconds(500).unwrap()
);Leap seconds are handled, but the subtraction assumes that no other leap seconds happened.
let leap = from_ymd(2015, 6, 30).and_hms_milli_opt(23, 59, 59, 1_500).unwrap();
assert_eq!(
leap - from_ymd(2015, 6, 30).and_hms_opt(23, 0, 0).unwrap(),
TimeDelta::try_seconds(3600).unwrap() + TimeDelta::try_milliseconds(500).unwrap()
);
assert_eq!(
from_ymd(2015, 7, 1).and_hms_opt(1, 0, 0).unwrap() - leap,
TimeDelta::try_seconds(3600).unwrap() - TimeDelta::try_milliseconds(500).unwrap()
);Source§impl Sub for NaiveTime
Subtracts another NaiveTime from the current time.
Returns a TimeDelta within +/- 1 day.
This does not overflow or underflow at all.
impl Sub for NaiveTime
Subtracts another NaiveTime from the current time.
Returns a TimeDelta within +/- 1 day.
This does not overflow or underflow at all.
As a part of Chrono’s leap second handling,
the subtraction assumes that there is no leap second ever,
except when any of the NaiveTimes themselves represents a leap second
in which case the assumption becomes that
there are exactly one (or two) leap second(s) ever.
The implementation is a wrapper around
NaiveTime::signed_duration_since.
§Example
use chrono::{NaiveTime, TimeDelta};
let from_hmsm = |h, m, s, milli| NaiveTime::from_hms_milli_opt(h, m, s, milli).unwrap();
assert_eq!(from_hmsm(3, 5, 7, 900) - from_hmsm(3, 5, 7, 900), TimeDelta::zero());
assert_eq!(
from_hmsm(3, 5, 7, 900) - from_hmsm(3, 5, 7, 875),
TimeDelta::try_milliseconds(25).unwrap()
);
assert_eq!(
from_hmsm(3, 5, 7, 900) - from_hmsm(3, 5, 6, 925),
TimeDelta::try_milliseconds(975).unwrap()
);
assert_eq!(
from_hmsm(3, 5, 7, 900) - from_hmsm(3, 5, 0, 900),
TimeDelta::try_seconds(7).unwrap()
);
assert_eq!(
from_hmsm(3, 5, 7, 900) - from_hmsm(3, 0, 7, 900),
TimeDelta::try_seconds(5 * 60).unwrap()
);
assert_eq!(
from_hmsm(3, 5, 7, 900) - from_hmsm(0, 5, 7, 900),
TimeDelta::try_seconds(3 * 3600).unwrap()
);
assert_eq!(
from_hmsm(3, 5, 7, 900) - from_hmsm(4, 5, 7, 900),
TimeDelta::try_seconds(-3600).unwrap()
);
assert_eq!(
from_hmsm(3, 5, 7, 900) - from_hmsm(2, 4, 6, 800),
TimeDelta::try_seconds(3600 + 60 + 1).unwrap() + TimeDelta::try_milliseconds(100).unwrap()
);Leap seconds are handled, but the subtraction assumes that there were no other leap seconds happened.
assert_eq!(from_hmsm(3, 0, 59, 1_000) - from_hmsm(3, 0, 59, 0), TimeDelta::try_seconds(1).unwrap());
assert_eq!(from_hmsm(3, 0, 59, 1_500) - from_hmsm(3, 0, 59, 0),
TimeDelta::try_milliseconds(1500).unwrap());
assert_eq!(from_hmsm(3, 0, 59, 1_000) - from_hmsm(3, 0, 0, 0), TimeDelta::try_seconds(60).unwrap());
assert_eq!(from_hmsm(3, 0, 0, 0) - from_hmsm(2, 59, 59, 1_000), TimeDelta::try_seconds(1).unwrap());
assert_eq!(from_hmsm(3, 0, 59, 1_000) - from_hmsm(2, 59, 59, 1_000),
TimeDelta::try_seconds(61).unwrap());Source§impl Sub for EdwardsPoint
impl Sub for EdwardsPoint
type Output = EdwardsPoint
Source§impl Sub for RistrettoPoint
impl Sub for RistrettoPoint
type Output = RistrettoPoint
Source§impl Sub for FallocateFlags
impl Sub for FallocateFlags
type Output = FallocateFlags
Source§impl Sub for RenameFlags
impl Sub for RenameFlags
type Output = RenameFlags
Source§impl Sub for SpliceFFlags
impl Sub for SpliceFFlags
type Output = SpliceFFlags
Source§impl Sub for DeleteModuleFlags
impl Sub for DeleteModuleFlags
type Output = DeleteModuleFlags
Source§impl Sub for ModuleInitFlags
impl Sub for ModuleInitFlags
type Output = ModuleInitFlags
Source§impl Sub for InterfaceFlags
impl Sub for InterfaceFlags
type Output = InterfaceFlags
Source§impl Sub for CloneFlags
impl Sub for CloneFlags
type Output = CloneFlags
Source§impl Sub for EpollCreateFlags
impl Sub for EpollCreateFlags
type Output = EpollCreateFlags
Source§impl Sub for EpollFlags
impl Sub for EpollFlags
type Output = EpollFlags
Source§impl Sub for AddWatchFlags
impl Sub for AddWatchFlags
type Output = AddWatchFlags
Source§impl Sub for MemFdCreateFlag
impl Sub for MemFdCreateFlag
type Output = MemFdCreateFlag
Source§impl Sub for MRemapFlags
impl Sub for MRemapFlags
type Output = MRemapFlags
Source§impl Sub for MlockAllFlags
impl Sub for MlockAllFlags
type Output = MlockAllFlags
Source§impl Sub for QuotaValidFlags
impl Sub for QuotaValidFlags
type Output = QuotaValidFlags
Source§impl Sub for TimestampingFlag
impl Sub for TimestampingFlag
type Output = TimestampingFlag
Source§impl Sub for ControlFlags
impl Sub for ControlFlags
type Output = ControlFlags
Source§impl Sub for InputFlags
impl Sub for InputFlags
type Output = InputFlags
Source§impl Sub for LocalFlags
impl Sub for LocalFlags
type Output = LocalFlags
Source§impl Sub for OutputFlags
impl Sub for OutputFlags
type Output = OutputFlags
Source§impl Sub for TimerSetTimeFlags
impl Sub for TimerSetTimeFlags
type Output = TimerSetTimeFlags
Source§impl Sub for TimerFlags
impl Sub for TimerFlags
type Output = TimerFlags
Source§impl Sub for WaitPidFlag
impl Sub for WaitPidFlag
type Output = WaitPidFlag
Source§impl Sub for AccessFlags
impl Sub for AccessFlags
type Output = AccessFlags
Source§impl Sub for CipherCtxFlags
impl Sub for CipherCtxFlags
type Output = CipherCtxFlags
Source§impl Sub for CMSOptions
impl Sub for CMSOptions
type Output = CMSOptions
Source§impl Sub for Pkcs7Flags
impl Sub for Pkcs7Flags
type Output = Pkcs7Flags
Source§impl Sub for ExtensionContext
impl Sub for ExtensionContext
type Output = ExtensionContext
Source§impl Sub for ShutdownState
impl Sub for ShutdownState
type Output = ShutdownState
Source§impl Sub for SslOptions
impl Sub for SslOptions
type Output = SslOptions
Source§impl Sub for SslSessionCacheMode
impl Sub for SslSessionCacheMode
type Output = SslSessionCacheMode
Source§impl Sub for SslVerifyMode
impl Sub for SslVerifyMode
type Output = SslVerifyMode
Source§impl Sub for X509CheckFlags
impl Sub for X509CheckFlags
type Output = X509CheckFlags
Source§impl Sub for X509VerifyFlags
impl Sub for X509VerifyFlags
type Output = X509VerifyFlags
Source§impl Sub<&ValueContainer> for &ValueContainer
impl Sub<&ValueContainer> for &ValueContainer
type Output = Result<ValueContainer, ValueError>
Source§impl Sub<&i8> for &BigDecimal
impl Sub<&i8> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<&i8> for BigDecimal
impl Sub<&i8> for BigDecimal
type Output = BigDecimal
Source§impl Sub<&i16> for &BigDecimal
impl Sub<&i16> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<&i16> for BigDecimal
impl Sub<&i16> for BigDecimal
type Output = BigDecimal
Source§impl Sub<&i32> for &BigDecimal
impl Sub<&i32> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<&i32> for BigDecimal
impl Sub<&i32> for BigDecimal
type Output = BigDecimal
Source§impl Sub<&i64> for &BigDecimal
impl Sub<&i64> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<&i64> for BigDecimal
impl Sub<&i64> for BigDecimal
type Output = BigDecimal
Source§impl Sub<&i128> for &BigDecimal
impl Sub<&i128> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<&i128> for BigDecimal
impl Sub<&i128> for BigDecimal
type Output = BigDecimal
Source§impl Sub<&u8> for &BigDecimal
impl Sub<&u8> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<&u8> for BigDecimal
impl Sub<&u8> for BigDecimal
type Output = BigDecimal
Source§impl Sub<&u16> for &BigDecimal
impl Sub<&u16> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<&u16> for BigDecimal
impl Sub<&u16> for BigDecimal
type Output = BigDecimal
Source§impl Sub<&u32> for &BigDecimal
impl Sub<&u32> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<&u32> for BigDecimal
impl Sub<&u32> for BigDecimal
type Output = BigDecimal
Source§impl Sub<&u64> for &BigDecimal
impl Sub<&u64> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<&u64> for BigDecimal
impl Sub<&u64> for BigDecimal
type Output = BigDecimal
Source§impl Sub<&u128> for &BigDecimal
impl Sub<&u128> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<&u128> for BigDecimal
impl Sub<&u128> for BigDecimal
type Output = BigDecimal
1.74.0 · Source§impl Sub<&Saturating<i8>> for &Saturating<i8>
impl Sub<&Saturating<i8>> for &Saturating<i8>
1.74.0 · Source§impl Sub<&Saturating<i8>> for Saturating<i8>
impl Sub<&Saturating<i8>> for Saturating<i8>
1.74.0 · Source§impl Sub<&Saturating<i16>> for &Saturating<i16>
impl Sub<&Saturating<i16>> for &Saturating<i16>
1.74.0 · Source§impl Sub<&Saturating<i16>> for Saturating<i16>
impl Sub<&Saturating<i16>> for Saturating<i16>
1.74.0 · Source§impl Sub<&Saturating<i32>> for &Saturating<i32>
impl Sub<&Saturating<i32>> for &Saturating<i32>
1.74.0 · Source§impl Sub<&Saturating<i32>> for Saturating<i32>
impl Sub<&Saturating<i32>> for Saturating<i32>
1.74.0 · Source§impl Sub<&Saturating<i64>> for &Saturating<i64>
impl Sub<&Saturating<i64>> for &Saturating<i64>
1.74.0 · Source§impl Sub<&Saturating<i64>> for Saturating<i64>
impl Sub<&Saturating<i64>> for Saturating<i64>
1.74.0 · Source§impl Sub<&Saturating<i128>> for &Saturating<i128>
impl Sub<&Saturating<i128>> for &Saturating<i128>
1.74.0 · Source§impl Sub<&Saturating<i128>> for Saturating<i128>
impl Sub<&Saturating<i128>> for Saturating<i128>
1.74.0 · Source§impl Sub<&Saturating<isize>> for &Saturating<isize>
impl Sub<&Saturating<isize>> for &Saturating<isize>
1.74.0 · Source§impl Sub<&Saturating<isize>> for Saturating<isize>
impl Sub<&Saturating<isize>> for Saturating<isize>
1.74.0 · Source§impl Sub<&Saturating<u8>> for &Saturating<u8>
impl Sub<&Saturating<u8>> for &Saturating<u8>
1.74.0 · Source§impl Sub<&Saturating<u8>> for Saturating<u8>
impl Sub<&Saturating<u8>> for Saturating<u8>
1.74.0 · Source§impl Sub<&Saturating<u16>> for &Saturating<u16>
impl Sub<&Saturating<u16>> for &Saturating<u16>
1.74.0 · Source§impl Sub<&Saturating<u16>> for Saturating<u16>
impl Sub<&Saturating<u16>> for Saturating<u16>
1.74.0 · Source§impl Sub<&Saturating<u32>> for &Saturating<u32>
impl Sub<&Saturating<u32>> for &Saturating<u32>
1.74.0 · Source§impl Sub<&Saturating<u32>> for Saturating<u32>
impl Sub<&Saturating<u32>> for Saturating<u32>
1.74.0 · Source§impl Sub<&Saturating<u64>> for &Saturating<u64>
impl Sub<&Saturating<u64>> for &Saturating<u64>
1.74.0 · Source§impl Sub<&Saturating<u64>> for Saturating<u64>
impl Sub<&Saturating<u64>> for Saturating<u64>
1.74.0 · Source§impl Sub<&Saturating<u128>> for &Saturating<u128>
impl Sub<&Saturating<u128>> for &Saturating<u128>
1.74.0 · Source§impl Sub<&Saturating<u128>> for Saturating<u128>
impl Sub<&Saturating<u128>> for Saturating<u128>
1.74.0 · Source§impl Sub<&Saturating<usize>> for &Saturating<usize>
impl Sub<&Saturating<usize>> for &Saturating<usize>
1.74.0 · Source§impl Sub<&Saturating<usize>> for Saturating<usize>
impl Sub<&Saturating<usize>> for Saturating<usize>
Source§impl Sub<&BigDecimal> for &i8
impl Sub<&BigDecimal> for &i8
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for &i16
impl Sub<&BigDecimal> for &i16
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for &i32
impl Sub<&BigDecimal> for &i32
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for &i64
impl Sub<&BigDecimal> for &i64
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for &i128
impl Sub<&BigDecimal> for &i128
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for &u8
impl Sub<&BigDecimal> for &u8
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for &u16
impl Sub<&BigDecimal> for &u16
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for &u32
impl Sub<&BigDecimal> for &u32
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for &u64
impl Sub<&BigDecimal> for &u64
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for &u128
impl Sub<&BigDecimal> for &u128
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for i8
impl Sub<&BigDecimal> for i8
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for i16
impl Sub<&BigDecimal> for i16
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for i32
impl Sub<&BigDecimal> for i32
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for i64
impl Sub<&BigDecimal> for i64
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for i128
impl Sub<&BigDecimal> for i128
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for u8
impl Sub<&BigDecimal> for u8
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for u16
impl Sub<&BigDecimal> for u16
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for u32
impl Sub<&BigDecimal> for u32
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for u64
impl Sub<&BigDecimal> for u64
type Output = BigDecimal
Source§impl Sub<&BigDecimal> for u128
impl Sub<&BigDecimal> for u128
type Output = BigDecimal
Source§impl Sub<i8> for &BigDecimal
impl Sub<i8> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<i8> for BigDecimal
impl Sub<i8> for BigDecimal
type Output = BigDecimal
Source§impl Sub<i16> for &BigDecimal
impl Sub<i16> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<i16> for BigDecimal
impl Sub<i16> for BigDecimal
type Output = BigDecimal
Source§impl Sub<i32> for &BigDecimal
impl Sub<i32> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<i32> for BigDecimal
impl Sub<i32> for BigDecimal
type Output = BigDecimal
Source§impl Sub<i64> for &BigDecimal
impl Sub<i64> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<i64> for BigDecimal
impl Sub<i64> for BigDecimal
type Output = BigDecimal
Source§impl Sub<i128> for &BigDecimal
impl Sub<i128> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<i128> for BigDecimal
impl Sub<i128> for BigDecimal
type Output = BigDecimal
Source§impl Sub<u8> for &BigDecimal
impl Sub<u8> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<u8> for BigDecimal
impl Sub<u8> for BigDecimal
type Output = BigDecimal
Source§impl Sub<u16> for &BigDecimal
impl Sub<u16> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<u16> for BigDecimal
impl Sub<u16> for BigDecimal
type Output = BigDecimal
Source§impl Sub<u32> for &BigDecimal
impl Sub<u32> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<u32> for BigDecimal
impl Sub<u32> for BigDecimal
type Output = BigDecimal
Source§impl Sub<u64> for &BigDecimal
impl Sub<u64> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<u64> for BigDecimal
impl Sub<u64> for BigDecimal
type Output = BigDecimal
Source§impl Sub<u128> for &BigDecimal
impl Sub<u128> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<u128> for BigDecimal
impl Sub<u128> for BigDecimal
type Output = BigDecimal
1.8.0 · Source§impl Sub<Duration> for SystemTime
impl Sub<Duration> for SystemTime
type Output = SystemTime
Source§impl Sub<Duration> for NaiveDateTime
Subtract std::time::Duration from NaiveDateTime.
impl Sub<Duration> for NaiveDateTime
Subtract std::time::Duration from NaiveDateTime.
As a part of Chrono’s [leap second handling] the subtraction assumes that there is no leap
second ever, except when the NaiveDateTime itself represents a leap second in which case
the assumption becomes that there is exactly a single leap second ever.
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDateTime::checked_sub_signed to get an Option instead.
type Output = NaiveDateTime
Source§impl Sub<Duration> for NaiveTime
Subtract std::time::Duration from NaiveTime.
impl Sub<Duration> for NaiveTime
Subtract std::time::Duration from NaiveTime.
This wraps around and never overflows or underflows. In particular the subtraction ignores integral number of days.
Source§impl Sub<Duration> for OffsetDateTime
impl Sub<Duration> for OffsetDateTime
type Output = OffsetDateTime
Source§impl Sub<Duration> for PrimitiveDateTime
impl Sub<Duration> for PrimitiveDateTime
type Output = PrimitiveDateTime
Source§impl Sub<Duration> for UtcDateTime
impl Sub<Duration> for UtcDateTime
type Output = UtcDateTime
Source§impl Sub<SystemTime> for OffsetDateTime
impl Sub<SystemTime> for OffsetDateTime
Source§impl Sub<SystemTime> for UtcDateTime
impl Sub<SystemTime> for UtcDateTime
Source§impl Sub<BigDecimal> for &i8
impl Sub<BigDecimal> for &i8
type Output = BigDecimal
Source§impl Sub<BigDecimal> for &i16
impl Sub<BigDecimal> for &i16
type Output = BigDecimal
Source§impl Sub<BigDecimal> for &i32
impl Sub<BigDecimal> for &i32
type Output = BigDecimal
Source§impl Sub<BigDecimal> for &i64
impl Sub<BigDecimal> for &i64
type Output = BigDecimal
Source§impl Sub<BigDecimal> for &i128
impl Sub<BigDecimal> for &i128
type Output = BigDecimal
Source§impl Sub<BigDecimal> for &u8
impl Sub<BigDecimal> for &u8
type Output = BigDecimal
Source§impl Sub<BigDecimal> for &u16
impl Sub<BigDecimal> for &u16
type Output = BigDecimal
Source§impl Sub<BigDecimal> for &u32
impl Sub<BigDecimal> for &u32
type Output = BigDecimal
Source§impl Sub<BigDecimal> for &u64
impl Sub<BigDecimal> for &u64
type Output = BigDecimal
Source§impl Sub<BigDecimal> for &u128
impl Sub<BigDecimal> for &u128
type Output = BigDecimal
Source§impl Sub<BigDecimal> for &BigDecimal
impl Sub<BigDecimal> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<BigDecimal> for &num_bigint::bigint::BigInt
impl Sub<BigDecimal> for &num_bigint::bigint::BigInt
type Output = BigDecimal
Source§impl Sub<BigDecimal> for i8
impl Sub<BigDecimal> for i8
type Output = BigDecimal
Source§impl Sub<BigDecimal> for i16
impl Sub<BigDecimal> for i16
type Output = BigDecimal
Source§impl Sub<BigDecimal> for i32
impl Sub<BigDecimal> for i32
type Output = BigDecimal
Source§impl Sub<BigDecimal> for i64
impl Sub<BigDecimal> for i64
type Output = BigDecimal
Source§impl Sub<BigDecimal> for i128
impl Sub<BigDecimal> for i128
type Output = BigDecimal
Source§impl Sub<BigDecimal> for u8
impl Sub<BigDecimal> for u8
type Output = BigDecimal
Source§impl Sub<BigDecimal> for u16
impl Sub<BigDecimal> for u16
type Output = BigDecimal
Source§impl Sub<BigDecimal> for u32
impl Sub<BigDecimal> for u32
type Output = BigDecimal
Source§impl Sub<BigDecimal> for u64
impl Sub<BigDecimal> for u64
type Output = BigDecimal
Source§impl Sub<BigDecimal> for u128
impl Sub<BigDecimal> for u128
type Output = BigDecimal
Source§impl Sub<BigDecimal> for BigDecimalRef<'_>
impl Sub<BigDecimal> for BigDecimalRef<'_>
type Output = BigDecimal
Source§impl Sub<BigDecimal> for num_bigint::bigint::BigInt
impl Sub<BigDecimal> for num_bigint::bigint::BigInt
type Output = BigDecimal
Source§impl Sub<Months> for NaiveDate
Subtract Months from NaiveDate.
impl Sub<Months> for NaiveDate
Subtract Months from NaiveDate.
The result will be clamped to valid days in the resulting month, see checked_sub_months for
details.
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDate::checked_sub_months to get an Option instead.
§Example
use chrono::{Months, NaiveDate};
let from_ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap();
assert_eq!(from_ymd(2014, 1, 1) - Months::new(11), from_ymd(2013, 2, 1));
assert_eq!(from_ymd(2014, 1, 1) - Months::new(12), from_ymd(2013, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) - Months::new(13), from_ymd(2012, 12, 1));Source§impl Sub<Months> for NaiveDateTime
Subtract Months from NaiveDateTime.
impl Sub<Months> for NaiveDateTime
Subtract Months from NaiveDateTime.
The result will be clamped to valid days in the resulting month, see
NaiveDateTime::checked_sub_months for details.
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDateTime::checked_sub_months to get an Option instead.
§Example
use chrono::{Months, NaiveDate};
assert_eq!(
NaiveDate::from_ymd_opt(2014, 01, 01).unwrap().and_hms_opt(01, 00, 00).unwrap()
- Months::new(11),
NaiveDate::from_ymd_opt(2013, 02, 01).unwrap().and_hms_opt(01, 00, 00).unwrap()
);
assert_eq!(
NaiveDate::from_ymd_opt(2014, 01, 01).unwrap().and_hms_opt(00, 02, 00).unwrap()
- Months::new(12),
NaiveDate::from_ymd_opt(2013, 01, 01).unwrap().and_hms_opt(00, 02, 00).unwrap()
);
assert_eq!(
NaiveDate::from_ymd_opt(2014, 01, 01).unwrap().and_hms_opt(00, 00, 03).unwrap()
- Months::new(13),
NaiveDate::from_ymd_opt(2012, 12, 01).unwrap().and_hms_opt(00, 00, 03).unwrap()
);type Output = NaiveDateTime
Source§impl Sub<Days> for NaiveDate
Subtract Days from NaiveDate.
impl Sub<Days> for NaiveDate
Subtract Days from NaiveDate.
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDate::checked_sub_days to get an Option instead.
Source§impl Sub<Days> for NaiveDateTime
Subtract Days from NaiveDateTime.
impl Sub<Days> for NaiveDateTime
Subtract Days from NaiveDateTime.
§Panics
Panics if the resulting date would be out of range.
Consider using checked_sub_days to get an Option instead.
type Output = NaiveDateTime
Source§impl Sub<FixedOffset> for NaiveDateTime
Subtract FixedOffset from NaiveDateTime.
impl Sub<FixedOffset> for NaiveDateTime
Subtract FixedOffset from NaiveDateTime.
§Panics
Panics if the resulting date would be out of range.
Consider using checked_sub_offset to get an Option instead.
type Output = NaiveDateTime
Source§impl Sub<FixedOffset> for NaiveTime
Subtract FixedOffset from NaiveTime.
impl Sub<FixedOffset> for NaiveTime
Subtract FixedOffset from NaiveTime.
This wraps around and never overflows or underflows. In particular the subtraction ignores integral number of days.
Source§impl Sub<TimeDelta> for NaiveDate
Subtract TimeDelta from NaiveDate.
impl Sub<TimeDelta> for NaiveDate
Subtract TimeDelta from NaiveDate.
This discards the fractional days in TimeDelta, rounding to the closest integral number of
days towards TimeDelta::zero().
It is the same as the addition with a negated TimeDelta.
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDate::checked_sub_signed to get an Option instead.
§Example
use chrono::{NaiveDate, TimeDelta};
let from_ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap();
assert_eq!(from_ymd(2014, 1, 1) - TimeDelta::zero(), from_ymd(2014, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) - TimeDelta::try_seconds(86399).unwrap(), from_ymd(2014, 1, 1));
assert_eq!(
from_ymd(2014, 1, 1) - TimeDelta::try_seconds(-86399).unwrap(),
from_ymd(2014, 1, 1)
);
assert_eq!(from_ymd(2014, 1, 1) - TimeDelta::try_days(1).unwrap(), from_ymd(2013, 12, 31));
assert_eq!(from_ymd(2014, 1, 1) - TimeDelta::try_days(-1).unwrap(), from_ymd(2014, 1, 2));
assert_eq!(from_ymd(2014, 1, 1) - TimeDelta::try_days(364).unwrap(), from_ymd(2013, 1, 2));
assert_eq!(
from_ymd(2014, 1, 1) - TimeDelta::try_days(365 * 4 + 1).unwrap(),
from_ymd(2010, 1, 1)
);
assert_eq!(
from_ymd(2014, 1, 1) - TimeDelta::try_days(365 * 400 + 97).unwrap(),
from_ymd(1614, 1, 1)
);Source§impl Sub<TimeDelta> for NaiveDateTime
Subtract TimeDelta from NaiveDateTime.
impl Sub<TimeDelta> for NaiveDateTime
Subtract TimeDelta from NaiveDateTime.
This is the same as the addition with a negated TimeDelta.
As a part of Chrono’s leap second handling the subtraction assumes that there is no leap
second ever, except when the NaiveDateTime itself represents a leap second in which case
the assumption becomes that there is exactly a single leap second ever.
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDateTime::checked_sub_signed to get an Option instead.
§Example
use chrono::{NaiveDate, TimeDelta};
let from_ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap();
let d = from_ymd(2016, 7, 8);
let hms = |h, m, s| d.and_hms_opt(h, m, s).unwrap();
assert_eq!(hms(3, 5, 7) - TimeDelta::zero(), hms(3, 5, 7));
assert_eq!(hms(3, 5, 7) - TimeDelta::try_seconds(1).unwrap(), hms(3, 5, 6));
assert_eq!(hms(3, 5, 7) - TimeDelta::try_seconds(-1).unwrap(), hms(3, 5, 8));
assert_eq!(hms(3, 5, 7) - TimeDelta::try_seconds(3600 + 60).unwrap(), hms(2, 4, 7));
assert_eq!(
hms(3, 5, 7) - TimeDelta::try_seconds(86_400).unwrap(),
from_ymd(2016, 7, 7).and_hms_opt(3, 5, 7).unwrap()
);
assert_eq!(
hms(3, 5, 7) - TimeDelta::try_days(365).unwrap(),
from_ymd(2015, 7, 9).and_hms_opt(3, 5, 7).unwrap()
);
let hmsm = |h, m, s, milli| d.and_hms_milli_opt(h, m, s, milli).unwrap();
assert_eq!(hmsm(3, 5, 7, 450) - TimeDelta::try_milliseconds(670).unwrap(), hmsm(3, 5, 6, 780));Leap seconds are handled, but the subtraction assumes that it is the only leap second happened.
let leap = hmsm(3, 5, 59, 1_300);
assert_eq!(leap - TimeDelta::zero(), hmsm(3, 5, 59, 1_300));
assert_eq!(leap - TimeDelta::try_milliseconds(200).unwrap(), hmsm(3, 5, 59, 1_100));
assert_eq!(leap - TimeDelta::try_milliseconds(500).unwrap(), hmsm(3, 5, 59, 800));
assert_eq!(leap - TimeDelta::try_seconds(60).unwrap(), hmsm(3, 5, 0, 300));
assert_eq!(leap - TimeDelta::try_days(1).unwrap(),
from_ymd(2016, 7, 7).and_hms_milli_opt(3, 6, 0, 300).unwrap());type Output = NaiveDateTime
Source§impl Sub<TimeDelta> for NaiveTime
Subtract TimeDelta from NaiveTime.
impl Sub<TimeDelta> for NaiveTime
Subtract TimeDelta from NaiveTime.
This wraps around and never overflows or underflows.
In particular the subtraction ignores integral number of days.
This is the same as addition with a negated TimeDelta.
As a part of Chrono’s leap second handling, the subtraction assumes that there is no leap
second ever, except when the NaiveTime itself represents a leap second in which case the
assumption becomes that there is exactly a single leap second ever.
§Example
use chrono::{NaiveTime, TimeDelta};
let from_hmsm = |h, m, s, milli| NaiveTime::from_hms_milli_opt(h, m, s, milli).unwrap();
assert_eq!(from_hmsm(3, 5, 7, 0) - TimeDelta::zero(), from_hmsm(3, 5, 7, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) - TimeDelta::try_seconds(1).unwrap(), from_hmsm(3, 5, 6, 0));
assert_eq!(
from_hmsm(3, 5, 7, 0) - TimeDelta::try_seconds(60 + 5).unwrap(),
from_hmsm(3, 4, 2, 0)
);
assert_eq!(
from_hmsm(3, 5, 7, 0) - TimeDelta::try_seconds(2 * 60 * 60 + 6 * 60).unwrap(),
from_hmsm(0, 59, 7, 0)
);
assert_eq!(
from_hmsm(3, 5, 7, 0) - TimeDelta::try_milliseconds(80).unwrap(),
from_hmsm(3, 5, 6, 920)
);
assert_eq!(
from_hmsm(3, 5, 7, 950) - TimeDelta::try_milliseconds(280).unwrap(),
from_hmsm(3, 5, 7, 670)
);The subtraction wraps around.
assert_eq!(from_hmsm(3, 5, 7, 0) - TimeDelta::try_seconds(8*60*60).unwrap(), from_hmsm(19, 5, 7, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) - TimeDelta::try_days(800).unwrap(), from_hmsm(3, 5, 7, 0));Leap seconds are handled, but the subtraction assumes that it is the only leap second happened.
let leap = from_hmsm(3, 5, 59, 1_300);
assert_eq!(leap - TimeDelta::zero(), from_hmsm(3, 5, 59, 1_300));
assert_eq!(leap - TimeDelta::try_milliseconds(200).unwrap(), from_hmsm(3, 5, 59, 1_100));
assert_eq!(leap - TimeDelta::try_milliseconds(500).unwrap(), from_hmsm(3, 5, 59, 800));
assert_eq!(leap - TimeDelta::try_seconds(60).unwrap(), from_hmsm(3, 5, 0, 300));
assert_eq!(leap - TimeDelta::try_days(1).unwrap(), from_hmsm(3, 6, 0, 300));Source§impl Sub<BigInt> for &BigDecimal
impl Sub<BigInt> for &BigDecimal
type Output = BigDecimal
Source§impl Sub<BigInt> for BigDecimal
impl Sub<BigInt> for BigDecimal
type Output = BigDecimal
Source§impl Sub<BigInt> for BigDecimalRef<'_>
impl Sub<BigInt> for BigDecimalRef<'_>
type Output = BigDecimal
Source§impl Sub<Duration> for SystemTime
impl Sub<Duration> for SystemTime
type Output = SystemTime
Source§impl Sub<Duration> for OffsetDateTime
impl Sub<Duration> for OffsetDateTime
type Output = OffsetDateTime
Source§impl Sub<Duration> for PrimitiveDateTime
impl Sub<Duration> for PrimitiveDateTime
type Output = PrimitiveDateTime
Source§impl Sub<Duration> for UtcDateTime
impl Sub<Duration> for UtcDateTime
type Output = UtcDateTime
Source§impl Sub<OffsetDateTime> for SystemTime
impl Sub<OffsetDateTime> for SystemTime
Source§impl Sub<OffsetDateTime> for UtcDateTime
impl Sub<OffsetDateTime> for UtcDateTime
Source§impl Sub<UtcDateTime> for SystemTime
impl Sub<UtcDateTime> for SystemTime
Source§impl Sub<UtcDateTime> for OffsetDateTime
impl Sub<UtcDateTime> for OffsetDateTime
1.74.0 · Source§impl<'a> Sub<Saturating<i8>> for &'a Saturating<i8>
impl<'a> Sub<Saturating<i8>> for &'a Saturating<i8>
1.74.0 · Source§impl<'a> Sub<Saturating<i16>> for &'a Saturating<i16>
impl<'a> Sub<Saturating<i16>> for &'a Saturating<i16>
1.74.0 · Source§impl<'a> Sub<Saturating<i32>> for &'a Saturating<i32>
impl<'a> Sub<Saturating<i32>> for &'a Saturating<i32>
1.74.0 · Source§impl<'a> Sub<Saturating<i64>> for &'a Saturating<i64>
impl<'a> Sub<Saturating<i64>> for &'a Saturating<i64>
1.74.0 · Source§impl<'a> Sub<Saturating<i128>> for &'a Saturating<i128>
impl<'a> Sub<Saturating<i128>> for &'a Saturating<i128>
1.74.0 · Source§impl<'a> Sub<Saturating<isize>> for &'a Saturating<isize>
impl<'a> Sub<Saturating<isize>> for &'a Saturating<isize>
1.74.0 · Source§impl<'a> Sub<Saturating<u8>> for &'a Saturating<u8>
impl<'a> Sub<Saturating<u8>> for &'a Saturating<u8>
1.74.0 · Source§impl<'a> Sub<Saturating<u16>> for &'a Saturating<u16>
impl<'a> Sub<Saturating<u16>> for &'a Saturating<u16>
1.74.0 · Source§impl<'a> Sub<Saturating<u32>> for &'a Saturating<u32>
impl<'a> Sub<Saturating<u32>> for &'a Saturating<u32>
1.74.0 · Source§impl<'a> Sub<Saturating<u64>> for &'a Saturating<u64>
impl<'a> Sub<Saturating<u64>> for &'a Saturating<u64>
1.74.0 · Source§impl<'a> Sub<Saturating<u128>> for &'a Saturating<u128>
impl<'a> Sub<Saturating<u128>> for &'a Saturating<u128>
1.74.0 · Source§impl<'a> Sub<Saturating<usize>> for &'a Saturating<usize>
impl<'a> Sub<Saturating<usize>> for &'a Saturating<usize>
Source§impl<'a> Sub<BigDecimalRef<'a>> for &num_bigint::bigint::BigInt
impl<'a> Sub<BigDecimalRef<'a>> for &num_bigint::bigint::BigInt
type Output = BigDecimal
Source§impl<'a> Sub<BigDecimalRef<'a>> for num_bigint::bigint::BigInt
impl<'a> Sub<BigDecimalRef<'a>> for num_bigint::bigint::BigInt
type Output = BigDecimal
Source§impl<'a> Sub<EdwardsPoint> for &'a EdwardsPoint
impl<'a> Sub<EdwardsPoint> for &'a EdwardsPoint
type Output = EdwardsPoint
Source§impl<'a> Sub<RistrettoPoint> for &'a RistrettoPoint
impl<'a> Sub<RistrettoPoint> for &'a RistrettoPoint
type Output = RistrettoPoint
Source§impl<'a, 'b> Sub<&'b EdwardsPoint> for &'a EdwardsPoint
impl<'a, 'b> Sub<&'b EdwardsPoint> for &'a EdwardsPoint
type Output = EdwardsPoint
Source§impl<'a, 'b> Sub<&'b RistrettoPoint> for &'a RistrettoPoint
impl<'a, 'b> Sub<&'b RistrettoPoint> for &'a RistrettoPoint
type Output = RistrettoPoint
Source§impl<'a, 'b> Sub<&'b AffineNielsPoint> for &'a EdwardsPoint
impl<'a, 'b> Sub<&'b AffineNielsPoint> for &'a EdwardsPoint
Source§impl<'a, 'b> Sub<&'b ProjectiveNielsPoint> for &'a EdwardsPoint
impl<'a, 'b> Sub<&'b ProjectiveNielsPoint> for &'a EdwardsPoint
Source§impl<'a, T> Sub for &'a OrderedFloat<T>
impl<'a, T> Sub for &'a OrderedFloat<T>
Source§impl<'a, T> Sub<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T> Sub<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§impl<'a, T> Sub<&'a T> for &'a OrderedFloat<T>
impl<'a, T> Sub<&'a T> for &'a OrderedFloat<T>
Source§impl<'a, T> Sub<&'a T> for OrderedFloat<T>
impl<'a, T> Sub<&'a T> for OrderedFloat<T>
Source§impl<'a, T> Sub<OrderedFloat<T>> for &'a OrderedFloat<T>
impl<'a, T> Sub<OrderedFloat<T>> for &'a OrderedFloat<T>
Source§impl<'a, T> Sub<T> for &'a OrderedFloat<T>
impl<'a, T> Sub<T> for &'a OrderedFloat<T>
Source§impl<'a, T> Sub<T> for &BigDecimalwhere
T: Into<BigDecimalRef<'a>>,
impl<'a, T> Sub<T> for &BigDecimalwhere
T: Into<BigDecimalRef<'a>>,
type Output = BigDecimal
Source§impl<'a, T> Sub<T> for BigDecimalwhere
T: Into<BigDecimalRef<'a>>,
impl<'a, T> Sub<T> for BigDecimalwhere
T: Into<BigDecimalRef<'a>>,
type Output = BigDecimal
Source§impl<'a, T> Sub<T> for BigDecimalRef<'_>where
T: Into<BigDecimalRef<'a>>,
impl<'a, T> Sub<T> for BigDecimalRef<'_>where
T: Into<BigDecimalRef<'a>>,
type Output = BigDecimal
Source§impl<'b> Sub<&'b EdwardsPoint> for EdwardsPoint
impl<'b> Sub<&'b EdwardsPoint> for EdwardsPoint
type Output = EdwardsPoint
Source§impl<'b> Sub<&'b RistrettoPoint> for RistrettoPoint
impl<'b> Sub<&'b RistrettoPoint> for RistrettoPoint
type Output = RistrettoPoint
Source§impl<C> Sub for ScalarPrimitive<C>where
C: Curve,
impl<C> Sub for ScalarPrimitive<C>where
C: Curve,
type Output = ScalarPrimitive<C>
Source§impl<C> Sub for ProjectivePoint<C>where
C: PrimeCurveParams,
impl<C> Sub for ProjectivePoint<C>where
C: PrimeCurveParams,
type Output = ProjectivePoint<C>
Source§impl<C> Sub<&ScalarPrimitive<C>> for ScalarPrimitive<C>where
C: Curve,
impl<C> Sub<&ScalarPrimitive<C>> for ScalarPrimitive<C>where
C: Curve,
type Output = ScalarPrimitive<C>
Source§impl<C> Sub<&AffinePoint<C>> for &ProjectivePoint<C>where
C: PrimeCurveParams,
impl<C> Sub<&AffinePoint<C>> for &ProjectivePoint<C>where
C: PrimeCurveParams,
type Output = ProjectivePoint<C>
Source§impl<C> Sub<&AffinePoint<C>> for ProjectivePoint<C>where
C: PrimeCurveParams,
impl<C> Sub<&AffinePoint<C>> for ProjectivePoint<C>where
C: PrimeCurveParams,
type Output = ProjectivePoint<C>
Source§impl<C> Sub<&ProjectivePoint<C>> for &ProjectivePoint<C>where
C: PrimeCurveParams,
impl<C> Sub<&ProjectivePoint<C>> for &ProjectivePoint<C>where
C: PrimeCurveParams,
type Output = ProjectivePoint<C>
Source§impl<C> Sub<&ProjectivePoint<C>> for ProjectivePoint<C>where
C: PrimeCurveParams,
impl<C> Sub<&ProjectivePoint<C>> for ProjectivePoint<C>where
C: PrimeCurveParams,
type Output = ProjectivePoint<C>
Source§impl<C> Sub<AffinePoint<C>> for ProjectivePoint<C>where
C: PrimeCurveParams,
impl<C> Sub<AffinePoint<C>> for ProjectivePoint<C>where
C: PrimeCurveParams,
type Output = ProjectivePoint<C>
Source§impl<MOD, const LIMBS: usize> Sub<&Residue<MOD, LIMBS>> for &Residue<MOD, LIMBS>where
MOD: ResidueParams<LIMBS>,
impl<MOD, const LIMBS: usize> Sub<&Residue<MOD, LIMBS>> for &Residue<MOD, LIMBS>where
MOD: ResidueParams<LIMBS>,
Source§impl<MOD, const LIMBS: usize> Sub<&Residue<MOD, LIMBS>> for Residue<MOD, LIMBS>where
MOD: ResidueParams<LIMBS>,
impl<MOD, const LIMBS: usize> Sub<&Residue<MOD, LIMBS>> for Residue<MOD, LIMBS>where
MOD: ResidueParams<LIMBS>,
Source§impl<MOD, const LIMBS: usize> Sub<Residue<MOD, LIMBS>> for &Residue<MOD, LIMBS>where
MOD: ResidueParams<LIMBS>,
impl<MOD, const LIMBS: usize> Sub<Residue<MOD, LIMBS>> for &Residue<MOD, LIMBS>where
MOD: ResidueParams<LIMBS>,
Source§impl<T> Sub for OrderedFloat<T>where
T: Sub,
impl<T> Sub for OrderedFloat<T>where
T: Sub,
Source§impl<T> Sub<T> for NotNan<T>where
T: FloatCore,
Subtracts a float directly.
impl<T> Sub<T> for NotNan<T>where
T: FloatCore,
Subtracts a float directly.
This returns a T and not a NotNan<T> because if the substracted value is NaN, this will be
NaN
Source§impl<T> Sub<T> for OrderedFloat<T>where
T: Sub,
impl<T> Sub<T> for OrderedFloat<T>where
T: Sub,
Source§impl<Tz> Sub<Duration> for DateTime<Tz>where
Tz: TimeZone,
Subtract std::time::Duration from DateTime.
impl<Tz> Sub<Duration> for DateTime<Tz>where
Tz: TimeZone,
Subtract std::time::Duration from DateTime.
As a part of Chrono’s [leap second handling] the subtraction assumes that there is no leap
second ever, except when the DateTime itself represents a leap second in which case
the assumption becomes that there is exactly a single leap second ever.
§Panics
Panics if the resulting date would be out of range.
Consider using DateTime<Tz>::checked_sub_signed to get an Option instead.
Source§impl<Tz> Sub<Months> for DateTime<Tz>where
Tz: TimeZone,
Subtract Months from DateTime.
impl<Tz> Sub<Months> for DateTime<Tz>where
Tz: TimeZone,
Subtract Months from DateTime.
The result will be clamped to valid days in the resulting month, see
DateTime<Tz>::checked_sub_months for details.
§Panics
Panics if:
- The resulting date would be out of range.
- The local time at the resulting date does not exist or is ambiguous, for example during a daylight saving time transition.
Strongly consider using DateTime<Tz>::checked_sub_months to get an Option instead.
Source§impl<Tz> Sub<Days> for DateTime<Tz>where
Tz: TimeZone,
Subtract Days from DateTime.
impl<Tz> Sub<Days> for DateTime<Tz>where
Tz: TimeZone,
Subtract Days from DateTime.
§Panics
Panics if:
- The resulting date would be out of range.
- The local time at the resulting date does not exist or is ambiguous, for example during a daylight saving time transition.
Strongly consider using DateTime<Tz>::checked_sub_days to get an Option instead.
Source§impl<Tz> Sub<FixedOffset> for DateTime<Tz>where
Tz: TimeZone,
Subtract FixedOffset from the datetime value of DateTime (offset remains unchanged).
impl<Tz> Sub<FixedOffset> for DateTime<Tz>where
Tz: TimeZone,
Subtract FixedOffset from the datetime value of DateTime (offset remains unchanged).
§Panics
Panics if the resulting date would be out of range.
Source§impl<Tz> Sub<TimeDelta> for DateTime<Tz>where
Tz: TimeZone,
Subtract TimeDelta from DateTime.
impl<Tz> Sub<TimeDelta> for DateTime<Tz>where
Tz: TimeZone,
Subtract TimeDelta from DateTime.
This is the same as the addition with a negated TimeDelta.
As a part of Chrono’s [leap second handling] the subtraction assumes that there is no leap
second ever, except when the DateTime itself represents a leap second in which case
the assumption becomes that there is exactly a single leap second ever.
§Panics
Panics if the resulting date would be out of range.
Consider using DateTime<Tz>::checked_sub_signed to get an Option instead.
Source§impl<Ul, Bl, Ur> Sub<Ur> for UInt<Ul, Bl>
Subtracting unsigned integers. We just do our PrivateSub and then Trim the output.
impl<Ul, Bl, Ur> Sub<Ur> for UInt<Ul, Bl>
Subtracting unsigned integers. We just do our PrivateSub and then Trim the output.