pub trait SubAssign<Rhs = Self> {
// Required method
fn sub_assign(&mut self, rhs: Rhs);
}Expand description
The subtraction assignment operator -=.
§Examples
This example creates a Point struct that implements the SubAssign
trait, and then demonstrates sub-assigning to a mutable Point.
use std::ops::SubAssign;
#[derive(Debug, Copy, Clone, PartialEq)]
struct Point {
x: i32,
y: i32,
}
impl SubAssign for Point {
fn sub_assign(&mut self, other: Self) {
*self = Self {
x: self.x - other.x,
y: self.y - other.y,
};
}
}
let mut point = Point { x: 3, y: 3 };
point -= Point { x: 2, y: 3 };
assert_eq!(point, Point {x: 1, y: 0});Required Methods§
1.8.0 · Sourcefn sub_assign(&mut self, rhs: Rhs)
fn sub_assign(&mut self, rhs: Rhs)
Implementors§
impl SubAssign for f16
impl SubAssign for f32
impl SubAssign for f64
impl SubAssign for f128
impl SubAssign for i8
impl SubAssign for i16
impl SubAssign for i32
impl SubAssign for i64
impl SubAssign for i128
impl SubAssign for isize
impl SubAssign for u8
impl SubAssign for u16
impl SubAssign for u32
impl SubAssign for u64
impl SubAssign for u128
impl SubAssign for usize
impl SubAssign for datex_core::time::Duration
impl SubAssign for Saturating<i8>
impl SubAssign for Saturating<i16>
impl SubAssign for Saturating<i32>
impl SubAssign for Saturating<i64>
impl SubAssign for Saturating<i128>
impl SubAssign for Saturating<isize>
impl SubAssign for Saturating<u8>
impl SubAssign for Saturating<u16>
impl SubAssign for Saturating<u32>
impl SubAssign for Saturating<u64>
impl SubAssign for Saturating<u128>
impl SubAssign for Saturating<usize>
impl SubAssign for datex_core::stdlib::num::Wrapping<i8>
impl SubAssign for datex_core::stdlib::num::Wrapping<i16>
impl SubAssign for datex_core::stdlib::num::Wrapping<i32>
impl SubAssign for datex_core::stdlib::num::Wrapping<i64>
impl SubAssign for datex_core::stdlib::num::Wrapping<i128>
impl SubAssign for datex_core::stdlib::num::Wrapping<isize>
impl SubAssign for datex_core::stdlib::num::Wrapping<u8>
impl SubAssign for datex_core::stdlib::num::Wrapping<u16>
impl SubAssign for datex_core::stdlib::num::Wrapping<u32>
impl SubAssign for datex_core::stdlib::num::Wrapping<u64>
impl SubAssign for datex_core::stdlib::num::Wrapping<u128>
impl SubAssign for datex_core::stdlib::num::Wrapping<usize>
impl SubAssign for BigDecimal
impl SubAssign for TimeDelta
impl SubAssign for Checked<Limb>
impl SubAssign for crypto_bigint::wrapping::Wrapping<Limb>
impl SubAssign for EdwardsPoint
impl SubAssign for RistrettoPoint
impl SubAssign for curve25519_dalek::scalar::Scalar
impl SubAssign for WatchKind
impl SubAssign for AtFlags
impl SubAssign for FallocateFlags
impl SubAssign for FdFlag
impl SubAssign for OFlag
impl SubAssign for RenameFlags
impl SubAssign for SealFlag
impl SubAssign for SpliceFFlags
impl SubAssign for DeleteModuleFlags
impl SubAssign for ModuleInitFlags
impl SubAssign for MntFlags
impl SubAssign for nix::mount::linux::MsFlags
impl SubAssign for MQ_OFlag
impl SubAssign for InterfaceFlags
impl SubAssign for PollFlags
impl SubAssign for CloneFlags
impl SubAssign for EpollCreateFlags
impl SubAssign for EpollFlags
impl SubAssign for EfdFlags
impl SubAssign for AddWatchFlags
impl SubAssign for InitFlags
impl SubAssign for MemFdCreateFlag
impl SubAssign for MRemapFlags
impl SubAssign for MapFlags
impl SubAssign for MlockAllFlags
impl SubAssign for nix::sys::mman::MsFlags
impl SubAssign for ProtFlags
impl SubAssign for Persona
impl SubAssign for Options
impl SubAssign for QuotaValidFlags
impl SubAssign for SaFlags
impl SubAssign for SfdFlags
impl SubAssign for MsgFlags
impl SubAssign for SockFlag
impl SubAssign for TimestampingFlag
impl SubAssign for Mode
impl SubAssign for SFlag
impl SubAssign for FsFlags
impl SubAssign for ControlFlags
impl SubAssign for InputFlags
impl SubAssign for LocalFlags
impl SubAssign for OutputFlags
impl SubAssign for TimerSetTimeFlags
impl SubAssign for TimerFlags
impl SubAssign for WaitPidFlag
impl SubAssign for AccessFlags
impl SubAssign for BigInt
impl SubAssign for BigUint
impl SubAssign for CipherCtxFlags
impl SubAssign for CMSOptions
impl SubAssign for OcspFlag
impl SubAssign for Pkcs7Flags
impl SubAssign for ExtensionContext
impl SubAssign for ShutdownState
impl SubAssign for SslMode
impl SubAssign for SslOptions
impl SubAssign for SslSessionCacheMode
impl SubAssign for SslVerifyMode
impl SubAssign for X509CheckFlags
impl SubAssign for X509VerifyFlags
impl SubAssign for p256::arithmetic::scalar::Scalar
impl SubAssign for p384::arithmetic::scalar::Scalar
impl SubAssign for FontStyle
impl SubAssign for time::duration::Duration
impl SubAssign<&f16> for f16
impl SubAssign<&f32> for f32
impl SubAssign<&f64> for f64
impl SubAssign<&f128> for f128
impl SubAssign<&i8> for i8
impl SubAssign<&i8> for Saturating<i8>
impl SubAssign<&i8> for datex_core::stdlib::num::Wrapping<i8>
impl SubAssign<&i8> for BigDecimal
impl SubAssign<&i16> for i16
impl SubAssign<&i16> for Saturating<i16>
impl SubAssign<&i16> for datex_core::stdlib::num::Wrapping<i16>
impl SubAssign<&i16> for BigDecimal
impl SubAssign<&i32> for i32
impl SubAssign<&i32> for Saturating<i32>
impl SubAssign<&i32> for datex_core::stdlib::num::Wrapping<i32>
impl SubAssign<&i32> for BigDecimal
impl SubAssign<&i64> for i64
impl SubAssign<&i64> for Saturating<i64>
impl SubAssign<&i64> for datex_core::stdlib::num::Wrapping<i64>
impl SubAssign<&i64> for BigDecimal
impl SubAssign<&i128> for i128
impl SubAssign<&i128> for Saturating<i128>
impl SubAssign<&i128> for datex_core::stdlib::num::Wrapping<i128>
impl SubAssign<&i128> for BigDecimal
impl SubAssign<&isize> for isize
impl SubAssign<&isize> for Saturating<isize>
impl SubAssign<&isize> for datex_core::stdlib::num::Wrapping<isize>
impl SubAssign<&u8> for u8
impl SubAssign<&u8> for Saturating<u8>
impl SubAssign<&u8> for datex_core::stdlib::num::Wrapping<u8>
impl SubAssign<&u8> for BigDecimal
impl SubAssign<&u16> for u16
impl SubAssign<&u16> for Saturating<u16>
impl SubAssign<&u16> for datex_core::stdlib::num::Wrapping<u16>
impl SubAssign<&u16> for BigDecimal
impl SubAssign<&u32> for u32
impl SubAssign<&u32> for Saturating<u32>
impl SubAssign<&u32> for datex_core::stdlib::num::Wrapping<u32>
impl SubAssign<&u32> for BigDecimal
impl SubAssign<&u64> for u64
impl SubAssign<&u64> for Saturating<u64>
impl SubAssign<&u64> for datex_core::stdlib::num::Wrapping<u64>
impl SubAssign<&u64> for BigDecimal
impl SubAssign<&u128> for u128
impl SubAssign<&u128> for Saturating<u128>
impl SubAssign<&u128> for datex_core::stdlib::num::Wrapping<u128>
impl SubAssign<&u128> for BigDecimal
impl SubAssign<&usize> for usize
impl SubAssign<&usize> for Saturating<usize>
impl SubAssign<&usize> for datex_core::stdlib::num::Wrapping<usize>
impl SubAssign<&Saturating<i8>> for Saturating<i8>
impl SubAssign<&Saturating<i16>> for Saturating<i16>
impl SubAssign<&Saturating<i32>> for Saturating<i32>
impl SubAssign<&Saturating<i64>> for Saturating<i64>
impl SubAssign<&Saturating<i128>> for Saturating<i128>
impl SubAssign<&Saturating<isize>> for Saturating<isize>
impl SubAssign<&Saturating<u8>> for Saturating<u8>
impl SubAssign<&Saturating<u16>> for Saturating<u16>
impl SubAssign<&Saturating<u32>> for Saturating<u32>
impl SubAssign<&Saturating<u64>> for Saturating<u64>
impl SubAssign<&Saturating<u128>> for Saturating<u128>
impl SubAssign<&Saturating<usize>> for Saturating<usize>
impl SubAssign<&Wrapping<i8>> for datex_core::stdlib::num::Wrapping<i8>
impl SubAssign<&Wrapping<i16>> for datex_core::stdlib::num::Wrapping<i16>
impl SubAssign<&Wrapping<i32>> for datex_core::stdlib::num::Wrapping<i32>
impl SubAssign<&Wrapping<i64>> for datex_core::stdlib::num::Wrapping<i64>
impl SubAssign<&Wrapping<i128>> for datex_core::stdlib::num::Wrapping<i128>
impl SubAssign<&Wrapping<isize>> for datex_core::stdlib::num::Wrapping<isize>
impl SubAssign<&Wrapping<u8>> for datex_core::stdlib::num::Wrapping<u8>
impl SubAssign<&Wrapping<u16>> for datex_core::stdlib::num::Wrapping<u16>
impl SubAssign<&Wrapping<u32>> for datex_core::stdlib::num::Wrapping<u32>
impl SubAssign<&Wrapping<u64>> for datex_core::stdlib::num::Wrapping<u64>
impl SubAssign<&Wrapping<u128>> for datex_core::stdlib::num::Wrapping<u128>
impl SubAssign<&Wrapping<usize>> for datex_core::stdlib::num::Wrapping<usize>
impl SubAssign<&Checked<Limb>> for Checked<Limb>
impl SubAssign<&Wrapping<Limb>> for crypto_bigint::wrapping::Wrapping<Limb>
impl SubAssign<&BigInt> for BigInt
impl SubAssign<&BigUint> for BigUint
impl SubAssign<&Scalar> for p256::arithmetic::scalar::Scalar
impl SubAssign<&Scalar> for p384::arithmetic::scalar::Scalar
impl SubAssign<i8> for Saturating<i8>
impl SubAssign<i8> for datex_core::stdlib::num::Wrapping<i8>
impl SubAssign<i8> for BigDecimal
impl SubAssign<i8> for BigInt
impl SubAssign<i16> for Saturating<i16>
impl SubAssign<i16> for datex_core::stdlib::num::Wrapping<i16>
impl SubAssign<i16> for BigDecimal
impl SubAssign<i16> for BigInt
impl SubAssign<i32> for Saturating<i32>
impl SubAssign<i32> for datex_core::stdlib::num::Wrapping<i32>
impl SubAssign<i32> for BigDecimal
impl SubAssign<i32> for BigInt
impl SubAssign<i64> for Saturating<i64>
impl SubAssign<i64> for datex_core::stdlib::num::Wrapping<i64>
impl SubAssign<i64> for BigDecimal
impl SubAssign<i64> for BigInt
impl SubAssign<i128> for Saturating<i128>
impl SubAssign<i128> for datex_core::stdlib::num::Wrapping<i128>
impl SubAssign<i128> for BigDecimal
impl SubAssign<i128> for BigInt
impl SubAssign<isize> for Saturating<isize>
impl SubAssign<isize> for datex_core::stdlib::num::Wrapping<isize>
impl SubAssign<isize> for BigInt
impl SubAssign<u8> for Saturating<u8>
impl SubAssign<u8> for datex_core::stdlib::num::Wrapping<u8>
impl SubAssign<u8> for BigDecimal
impl SubAssign<u8> for BigInt
impl SubAssign<u8> for BigUint
impl SubAssign<u16> for Saturating<u16>
impl SubAssign<u16> for datex_core::stdlib::num::Wrapping<u16>
impl SubAssign<u16> for BigDecimal
impl SubAssign<u16> for BigInt
impl SubAssign<u16> for BigUint
impl SubAssign<u32> for Saturating<u32>
impl SubAssign<u32> for datex_core::stdlib::num::Wrapping<u32>
impl SubAssign<u32> for BigDecimal
impl SubAssign<u32> for BigInt
impl SubAssign<u32> for BigUint
impl SubAssign<u64> for Saturating<u64>
impl SubAssign<u64> for datex_core::stdlib::num::Wrapping<u64>
impl SubAssign<u64> for BigDecimal
impl SubAssign<u64> for BigInt
impl SubAssign<u64> for BigUint
impl SubAssign<u128> for Saturating<u128>
impl SubAssign<u128> for datex_core::stdlib::num::Wrapping<u128>
impl SubAssign<u128> for BigDecimal
impl SubAssign<u128> for BigInt
impl SubAssign<u128> for BigUint
impl SubAssign<usize> for Saturating<usize>
impl SubAssign<usize> for datex_core::stdlib::num::Wrapping<usize>
impl SubAssign<usize> for BigInt
impl SubAssign<usize> for BigUint
impl SubAssign<Duration> for datex_core::time::Instant
impl SubAssign<Duration> for SystemTime
impl SubAssign<Duration> for NaiveDateTime
Subtract-assign std::time::Duration from NaiveDateTime.
As a part of Chrono’s [leap second handling], the addition 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.
impl SubAssign<Duration> for NaiveTime
Subtract-assign std::time::Duration from NaiveTime.
This wraps around and never overflows or underflows. In particular the subtraction ignores integral number of days.
impl SubAssign<Duration> for time::date::Date
impl SubAssign<Duration> for time::duration::Duration
impl SubAssign<Duration> for OffsetDateTime
impl SubAssign<Duration> for PrimitiveDateTime
impl SubAssign<Duration> for Time
impl SubAssign<Duration> for UtcDateTime
impl SubAssign<Duration> for tokio::time::instant::Instant
impl SubAssign<TimeDelta> for NaiveDate
Subtract-assign 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.
impl SubAssign<TimeDelta> for NaiveDateTime
Subtract-assign TimeDelta from NaiveDateTime.
This is the same as the addition with a negated TimeDelta.
As a part of Chrono’s [leap second handling], the addition 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.
impl SubAssign<TimeDelta> for NaiveTime
Subtract-assign TimeDelta from NaiveTime.
This wraps around and never overflows or underflows. In particular the subtraction ignores integral number of days.
impl SubAssign<BigInt> for BigDecimal
impl SubAssign<Duration> for datex_core::time::Duration
impl SubAssign<Duration> for datex_core::time::Instant
impl SubAssign<Duration> for SystemTime
std only.impl SubAssign<Duration> for time::date::Date
impl SubAssign<Duration> for OffsetDateTime
impl SubAssign<Duration> for PrimitiveDateTime
impl SubAssign<Duration> for Time
impl SubAssign<Duration> for UtcDateTime
impl<'a, T> SubAssign<&'a Complex<T>> for Complex<T>
impl<'a, T> SubAssign<&'a Ratio<T>> for Ratio<T>
impl<'a, T> SubAssign<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T> SubAssign<&'a T> for Complex<T>
impl<'a, T> SubAssign<&'a T> for Ratio<T>
impl<'a, T> SubAssign<&'a T> for OrderedFloat<T>
impl<'b> SubAssign<&'b EdwardsPoint> for EdwardsPoint
impl<'b> SubAssign<&'b RistrettoPoint> for RistrettoPoint
impl<'b> SubAssign<&'b Scalar> for curve25519_dalek::scalar::Scalar
impl<'rhs, T> SubAssign<T> for BigDecimalwhere
T: Into<BigDecimalRef<'rhs>>,
impl<C> SubAssign for ScalarPrimitive<C>where
C: Curve,
impl<C> SubAssign for ProjectivePoint<C>where
C: PrimeCurveParams,
impl<C> SubAssign<&ScalarPrimitive<C>> for ScalarPrimitive<C>where
C: Curve,
impl<C> SubAssign<&AffinePoint<C>> for ProjectivePoint<C>where
C: PrimeCurveParams,
impl<C> SubAssign<&ProjectivePoint<C>> for ProjectivePoint<C>where
C: PrimeCurveParams,
impl<C> SubAssign<AffinePoint<C>> for ProjectivePoint<C>where
C: PrimeCurveParams,
impl<MOD, const LIMBS: usize> SubAssign for Residue<MOD, LIMBS>where
MOD: ResidueParams<LIMBS>,
impl<MOD, const LIMBS: usize> SubAssign<&Residue<MOD, LIMBS>> for Residue<MOD, LIMBS>where
MOD: ResidueParams<LIMBS>,
impl<O> SubAssign for F32<O>where
O: ByteOrder,
impl<O> SubAssign for F64<O>where
O: ByteOrder,
impl<O> SubAssign for I16<O>where
O: ByteOrder,
impl<O> SubAssign for I32<O>where
O: ByteOrder,
impl<O> SubAssign for I64<O>where
O: ByteOrder,
impl<O> SubAssign for I128<O>where
O: ByteOrder,
impl<O> SubAssign for Isize<O>where
O: ByteOrder,
impl<O> SubAssign for U16<O>where
O: ByteOrder,
impl<O> SubAssign for U32<O>where
O: ByteOrder,
impl<O> SubAssign for U64<O>where
O: ByteOrder,
impl<O> SubAssign for U128<O>where
O: ByteOrder,
impl<O> SubAssign for Usize<O>where
O: ByteOrder,
impl<O> SubAssign<f32> for F32<O>where
O: ByteOrder,
impl<O> SubAssign<f64> for F64<O>where
O: ByteOrder,
impl<O> SubAssign<i16> for I16<O>where
O: ByteOrder,
impl<O> SubAssign<i32> for I32<O>where
O: ByteOrder,
impl<O> SubAssign<i64> for I64<O>where
O: ByteOrder,
impl<O> SubAssign<i128> for I128<O>where
O: ByteOrder,
impl<O> SubAssign<isize> for Isize<O>where
O: ByteOrder,
impl<O> SubAssign<u16> for U16<O>where
O: ByteOrder,
impl<O> SubAssign<u32> for U32<O>where
O: ByteOrder,
impl<O> SubAssign<u64> for U64<O>where
O: ByteOrder,
impl<O> SubAssign<u128> for U128<O>where
O: ByteOrder,
impl<O> SubAssign<usize> for Usize<O>where
O: ByteOrder,
impl<O> SubAssign<F32<O>> for f32where
O: ByteOrder,
impl<O> SubAssign<F64<O>> for f64where
O: ByteOrder,
impl<O> SubAssign<I16<O>> for i16where
O: ByteOrder,
impl<O> SubAssign<I32<O>> for i32where
O: ByteOrder,
impl<O> SubAssign<I64<O>> for i64where
O: ByteOrder,
impl<O> SubAssign<I128<O>> for i128where
O: ByteOrder,
impl<O> SubAssign<Isize<O>> for isizewhere
O: ByteOrder,
impl<O> SubAssign<U16<O>> for u16where
O: ByteOrder,
impl<O> SubAssign<U32<O>> for u32where
O: ByteOrder,
impl<O> SubAssign<U64<O>> for u64where
O: ByteOrder,
impl<O> SubAssign<U128<O>> for u128where
O: ByteOrder,
impl<O> SubAssign<Usize<O>> for usizewhere
O: ByteOrder,
impl<T> SubAssign for Complex<T>
impl<T> SubAssign for Ratio<T>
impl<T> SubAssign for NotNan<T>
impl<T> SubAssign for OrderedFloat<T>where
T: SubAssign,
impl<T> SubAssign<&NotNan<T>> for NotNan<T>
impl<T> SubAssign<T> for Complex<T>
impl<T> SubAssign<T> for Ratio<T>
impl<T> SubAssign<T> for OrderedFloat<T>where
T: SubAssign,
impl<T, S, A> SubAssign<&HashSet<T, S, A>> for hashbrown::set::HashSet<T, S, A>
impl<T, S, A> SubAssign<&HashSet<T, S, A>> for hashbrown::set::HashSet<T, S, A>
impl<T, U, const N: usize> SubAssign<U> for Simd<T, N>
impl<Tz> SubAssign<Duration> for DateTime<Tz>where
Tz: TimeZone,
Subtract-assign std::time::Duration from DateTime.
As a part of Chrono’s [leap second handling], the addition 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.
impl<Tz> SubAssign<TimeDelta> for chrono::date::Date<Tz>where
Tz: TimeZone,
impl<Tz> SubAssign<TimeDelta> for DateTime<Tz>where
Tz: TimeZone,
Subtract-assign TimeDelta from DateTime.
This is the same as the addition with a negated TimeDelta.
As a part of Chrono’s [leap second handling], the addition 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.