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§
sourcefn sub_assign(&mut self, rhs: Rhs)
fn sub_assign(&mut self, rhs: Rhs)
Implementors§
impl SubAssign for f32
impl SubAssign for f64
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 Capabilities
impl SubAssign for Duration
impl SubAssign for U256
impl SubAssign for U512
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 Wrapping<i8>
impl SubAssign for Wrapping<i16>
impl SubAssign for Wrapping<i32>
impl SubAssign for Wrapping<i64>
impl SubAssign for Wrapping<i128>
impl SubAssign for Wrapping<isize>
impl SubAssign for Wrapping<u8>
impl SubAssign for Wrapping<u16>
impl SubAssign for Wrapping<u32>
impl SubAssign for Wrapping<u64>
impl SubAssign for Wrapping<u128>
impl SubAssign for Wrapping<usize>
impl SubAssign for TimeDelta
impl SubAssign for curve25519_dalek::edwards::EdwardsPoint
impl SubAssign for curve25519_dalek::ristretto::RistrettoPoint
impl SubAssign for curve25519_dalek::scalar::Scalar
impl SubAssign for curve25519_dalek::edwards::EdwardsPoint
impl SubAssign for curve25519_dalek::ristretto::RistrettoPoint
impl SubAssign for curve25519_dalek::scalar::Scalar
impl SubAssign for BigInt
impl SubAssign for BigUint
impl SubAssign for Access
impl SubAssign for Access
impl SubAssign for AtFlags
impl SubAssign for AtFlags
impl SubAssign for ControlModes
impl SubAssign for CreateFlags
impl SubAssign for CreateFlags
impl SubAssign for CreateFlags
impl SubAssign for CreateFlags
impl SubAssign for DupFlags
impl SubAssign for DupFlags
impl SubAssign for DupFlags
impl SubAssign for EdwardsPoint
impl SubAssign for EventFlags
impl SubAssign for EventFlags
impl SubAssign for EventfdFlags
impl SubAssign for EventfdFlags
impl SubAssign for FallocateFlags
impl SubAssign for FallocateFlags
impl SubAssign for FdFlags
impl SubAssign for FdFlags
impl SubAssign for FdFlags
impl SubAssign for IFlags
impl SubAssign for InputModes
impl SubAssign for LocalModes
impl SubAssign for MapFlags
impl SubAssign for MemfdFlags
impl SubAssign for MemfdFlags
impl SubAssign for MlockFlags
impl SubAssign for Mode
impl SubAssign for Mode
impl SubAssign for MountFlags
impl SubAssign for MountFlags
impl SubAssign for MountPropagationFlags
impl SubAssign for MountPropagationFlags
impl SubAssign for MprotectFlags
impl SubAssign for MremapFlags
impl SubAssign for MsyncFlags
impl SubAssign for OFlags
impl SubAssign for OFlags
impl SubAssign for OutputModes
impl SubAssign for PipeFlags
impl SubAssign for PipeFlags
impl SubAssign for PollFlags
impl SubAssign for PollFlags
impl SubAssign for ProtFlags
impl SubAssign for Protection
impl SubAssign for ReadWriteFlags
impl SubAssign for ReadWriteFlags
impl SubAssign for ReadWriteFlags
impl SubAssign for RenameFlags
impl SubAssign for RenameFlags
impl SubAssign for ResolveFlags
impl SubAssign for ResolveFlags
impl SubAssign for RistrettoPoint
impl SubAssign for Scalar
impl SubAssign for SealFlags
impl SubAssign for SealFlags
impl SubAssign for SpliceFlags
impl SubAssign for SpliceFlags
impl SubAssign for StatVfsMountFlags
impl SubAssign for StatVfsMountFlags
impl SubAssign for StatxFlags
impl SubAssign for StatxFlags
impl SubAssign for U128
impl SubAssign for UnmountFlags
impl SubAssign for UnmountFlags
impl SubAssign for UserfaultfdFlags
impl SubAssign for WatchFlags
impl SubAssign for WatchFlags
impl SubAssign for Weight
impl SubAssign for XattrFlags
impl SubAssign for XattrFlags
impl SubAssign<&f32> for f32
impl SubAssign<&f64> for f64
impl SubAssign<&i8> for i8
impl SubAssign<&i8> for Saturating<i8>
impl SubAssign<&i8> for Wrapping<i8>
impl SubAssign<&i16> for i16
impl SubAssign<&i16> for Saturating<i16>
impl SubAssign<&i16> for Wrapping<i16>
impl SubAssign<&i32> for i32
impl SubAssign<&i32> for Saturating<i32>
impl SubAssign<&i32> for Wrapping<i32>
impl SubAssign<&i64> for i64
impl SubAssign<&i64> for Saturating<i64>
impl SubAssign<&i64> for Wrapping<i64>
impl SubAssign<&i128> for i128
impl SubAssign<&i128> for Saturating<i128>
impl SubAssign<&i128> for Wrapping<i128>
impl SubAssign<&isize> for isize
impl SubAssign<&isize> for Saturating<isize>
impl SubAssign<&isize> for Wrapping<isize>
impl SubAssign<&u8> for u8
impl SubAssign<&u8> for Saturating<u8>
impl SubAssign<&u8> for Wrapping<u8>
impl SubAssign<&u16> for u16
impl SubAssign<&u16> for Saturating<u16>
impl SubAssign<&u16> for Wrapping<u16>
impl SubAssign<&u32> for u32
impl SubAssign<&u32> for Saturating<u32>
impl SubAssign<&u32> for Wrapping<u32>
impl SubAssign<&u64> for u64
impl SubAssign<&u64> for Saturating<u64>
impl SubAssign<&u64> for Wrapping<u64>
impl SubAssign<&u128> for u128
impl SubAssign<&u128> for Saturating<u128>
impl SubAssign<&u128> for Wrapping<u128>
impl SubAssign<&usize> for usize
impl SubAssign<&usize> for Saturating<usize>
impl SubAssign<&usize> for 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 Wrapping<i8>
impl SubAssign<&Wrapping<i16>> for Wrapping<i16>
impl SubAssign<&Wrapping<i32>> for Wrapping<i32>
impl SubAssign<&Wrapping<i64>> for Wrapping<i64>
impl SubAssign<&Wrapping<i128>> for Wrapping<i128>
impl SubAssign<&Wrapping<isize>> for Wrapping<isize>
impl SubAssign<&Wrapping<u8>> for Wrapping<u8>
impl SubAssign<&Wrapping<u16>> for Wrapping<u16>
impl SubAssign<&Wrapping<u32>> for Wrapping<u32>
impl SubAssign<&Wrapping<u64>> for Wrapping<u64>
impl SubAssign<&Wrapping<u128>> for Wrapping<u128>
impl SubAssign<&Wrapping<usize>> for Wrapping<usize>
impl SubAssign<&BigInt> for BigInt
impl SubAssign<&BigUint> for BigUint
impl SubAssign<i8> for Saturating<i8>
impl SubAssign<i8> for Wrapping<i8>
impl SubAssign<i8> for BigInt
impl SubAssign<i16> for Saturating<i16>
impl SubAssign<i16> for Wrapping<i16>
impl SubAssign<i16> for BigInt
impl SubAssign<i32> for Saturating<i32>
impl SubAssign<i32> for Wrapping<i32>
impl SubAssign<i32> for BigInt
impl SubAssign<i64> for Saturating<i64>
impl SubAssign<i64> for Wrapping<i64>
impl SubAssign<i64> for BigInt
impl SubAssign<i128> for Saturating<i128>
impl SubAssign<i128> for Wrapping<i128>
impl SubAssign<i128> for BigInt
impl SubAssign<isize> for Saturating<isize>
impl SubAssign<isize> for Wrapping<isize>
impl SubAssign<isize> for BigInt
impl SubAssign<u8> for Saturating<u8>
impl SubAssign<u8> for Wrapping<u8>
impl SubAssign<u8> for BigInt
impl SubAssign<u8> for BigUint
impl SubAssign<u16> for Saturating<u16>
impl SubAssign<u16> for Wrapping<u16>
impl SubAssign<u16> for BigInt
impl SubAssign<u16> for BigUint
impl SubAssign<u32> for Saturating<u32>
impl SubAssign<u32> for Wrapping<u32>
impl SubAssign<u32> for BigInt
impl SubAssign<u32> for BigUint
impl SubAssign<u64> for Saturating<u64>
impl SubAssign<u64> for Wrapping<u64>
impl SubAssign<u64> for BigInt
impl SubAssign<u64> for BigUint
impl SubAssign<u128> for Saturating<u128>
impl SubAssign<u128> for Wrapping<u128>
impl SubAssign<u128> for BigInt
impl SubAssign<u128> for BigUint
impl SubAssign<usize> for Saturating<usize>
impl SubAssign<usize> for Wrapping<usize>
impl SubAssign<usize> for BigInt
impl SubAssign<usize> for BigUint
impl SubAssign<Duration> for gclient::ext::sp_runtime::scale_info::prelude::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 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<'a, T> SubAssign<&'a Ratio<T>> for Ratio<T>
impl<'a, T> SubAssign<&'a T> for Ratio<T>
impl<'b> SubAssign<&'b EdwardsPoint> for curve25519_dalek::edwards::EdwardsPoint
impl<'b> SubAssign<&'b RistrettoPoint> for curve25519_dalek::ristretto::RistrettoPoint
impl<'b> SubAssign<&'b Scalar> for curve25519_dalek::scalar::Scalar
impl<'b> SubAssign<&'b EdwardsPoint> for curve25519_dalek::edwards::EdwardsPoint
impl<'b> SubAssign<&'b RistrettoPoint> for curve25519_dalek::ristretto::RistrettoPoint
impl<'b> SubAssign<&'b Scalar> for curve25519_dalek::scalar::Scalar
impl<'b> SubAssign<&'b EdwardsPoint> for EdwardsPoint
impl<'b> SubAssign<&'b RistrettoPoint> for RistrettoPoint
impl<'b> SubAssign<&'b Scalar> for Scalar
impl<T> SubAssign for Ratio<T>
impl<T> SubAssign<T> for Ratio<T>
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 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.