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 FileType
impl SubAssign for nix::fcntl::AtFlags
impl SubAssign for nix::fcntl::FallocateFlags
impl SubAssign for FdFlag
impl SubAssign for OFlag
impl SubAssign for nix::fcntl::RenameFlags
impl SubAssign for ResolveFlag
impl SubAssign for SealFlag
impl SubAssign for PollFlags
impl SubAssign for MemFdCreateFlag
impl SubAssign for SaFlags
impl SubAssign for SfdFlags
impl SubAssign for nix::sys::stat::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 WaitPidFlag
impl SubAssign for AccessFlags
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 CreateFlags
impl SubAssign for ReadFlags
impl SubAssign for WatchFlags
impl SubAssign for Access
impl SubAssign for rustix::backend::fs::types::AtFlags
impl SubAssign for rustix::backend::fs::types::FallocateFlags
impl SubAssign for MemfdFlags
impl SubAssign for rustix::backend::fs::types::Mode
impl SubAssign for OFlags
impl SubAssign for rustix::backend::fs::types::RenameFlags
impl SubAssign for ResolveFlags
impl SubAssign for SealFlags
impl SubAssign for StatVfsMountFlags
impl SubAssign for StatxFlags
impl SubAssign for DupFlags
impl SubAssign for FdFlags
impl SubAssign for ReadWriteFlags
impl SubAssign for MountFlags
impl SubAssign for MountPropagationFlags
impl SubAssign for UnmountFlags
impl SubAssign for IFlags
impl SubAssign for XattrFlags
impl SubAssign for CodegenConfig
impl SubAssign for TimeDelta
impl SubAssign for Effects
§Examples
let mut effects = anstyle::Effects::BOLD | anstyle::Effects::UNDERLINE;
effects -= anstyle::Effects::BOLD;
assert_eq!(format!("{:?}", effects), "Effects(UNDERLINE)");
impl SubAssign for SignedDuration
impl SubAssign for BigInt
impl SubAssign for BigUint
impl SubAssign for Modifiers
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 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 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<&BigInt> for BigInt
impl SubAssign<&BigUint> for BigUint
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<i8> for Weekday
impl SubAssign<i8> for BigInt
impl SubAssign<i8> for Saturating<i8>
impl SubAssign<i8> for Wrapping<i8>
impl SubAssign<i16> for Weekday
impl SubAssign<i16> for BigInt
impl SubAssign<i16> for Saturating<i16>
impl SubAssign<i16> for Wrapping<i16>
impl SubAssign<i32> for Weekday
impl SubAssign<i32> for BigInt
impl SubAssign<i32> for Saturating<i32>
impl SubAssign<i32> for Wrapping<i32>
impl SubAssign<i64> for Weekday
impl SubAssign<i64> for BigInt
impl SubAssign<i64> for Saturating<i64>
impl SubAssign<i64> for Wrapping<i64>
impl SubAssign<i128> for BigInt
impl SubAssign<i128> for Saturating<i128>
impl SubAssign<i128> for Wrapping<i128>
impl SubAssign<isize> for BigInt
impl SubAssign<isize> for Saturating<isize>
impl SubAssign<isize> for Wrapping<isize>
impl SubAssign<u8> for BigInt
impl SubAssign<u8> for BigUint
impl SubAssign<u8> for Saturating<u8>
impl SubAssign<u8> for Wrapping<u8>
impl SubAssign<u16> for BigInt
impl SubAssign<u16> for BigUint
impl SubAssign<u16> for Saturating<u16>
impl SubAssign<u16> for Wrapping<u16>
impl SubAssign<u32> for BigInt
impl SubAssign<u32> for BigUint
impl SubAssign<u32> for Saturating<u32>
impl SubAssign<u32> for Wrapping<u32>
impl SubAssign<u64> for BigInt
impl SubAssign<u64> for BigUint
impl SubAssign<u64> for Saturating<u64>
impl SubAssign<u64> for Wrapping<u64>
impl SubAssign<u128> for BigInt
impl SubAssign<u128> for BigUint
impl SubAssign<u128> for Saturating<u128>
impl SubAssign<u128> for Wrapping<u128>
impl SubAssign<usize> for BigInt
impl SubAssign<usize> for BigUint
impl SubAssign<usize> for Saturating<usize>
impl SubAssign<usize> for Wrapping<usize>
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<Effects> for Style
§Examples
let mut style = anstyle::Style::new().bold().underline();
style -= anstyle::Effects::BOLD.into();
impl SubAssign<SignedDuration> for rustmax::jiff::civil::Date
Subtracts a signed duration of time from a date in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Date::checked_sub
.
impl SubAssign<SignedDuration> for rustmax::jiff::civil::DateTime
Subtracts a signed duration of time from a datetime in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use DateTime::checked_sub
.
impl SubAssign<SignedDuration> for Time
Subtracts a signed duration of time in place. This uses wrapping arithmetic.
For checked arithmetic, see Time::checked_sub
.
impl SubAssign<SignedDuration> for Timestamp
Subtracts a signed duration of time from a timestamp in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Timestamp::checked_sub
.
impl SubAssign<SignedDuration> for Zoned
Subtracts a signed duration of time from a zoned datetime in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Zoned::checked_sub
.
impl SubAssign<SignedDuration> for Offset
Subtracts a signed duration of time from an offset in place. This panics on overflow.
For checked arithmetic, see Offset::checked_sub
.
impl SubAssign<Span> for rustmax::jiff::civil::Date
Subtracts a span of time from a date in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Date::checked_sub
.
impl SubAssign<Span> for rustmax::jiff::civil::DateTime
Subtracts a span of time from a datetime in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use DateTime::checked_sub
.
impl SubAssign<Span> for Time
Subtracts a span of time in place. This uses wrapping arithmetic.
For checked arithmetic, see Time::checked_sub
.
impl SubAssign<Span> for Timestamp
Subtracts a span of time from a timestamp in place.
This uses checked arithmetic and panics when it fails. To handle arithmetic
without panics, use Timestamp::checked_sub
. Note that the failure
condition includes overflow and using a Span
with non-zero units greater
than hours.
impl SubAssign<Span> for Zoned
Subtracts a span of time from a zoned datetime in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Zoned::checked_sub
.
impl SubAssign<Span> for Offset
Subtracts a span of time from an offset in place. This panics on overflow.
For checked arithmetic, see Offset::checked_sub
.
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 rustmax::jiff::civil::Date
Subtracts an unsigned duration of time from a date in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Date::checked_sub
.
impl SubAssign<Duration> for rustmax::jiff::civil::DateTime
Subtracts an unsigned duration of time from a datetime in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use DateTime::checked_sub
.
impl SubAssign<Duration> for Time
Subtracts an unsigned duration of time in place. This uses wrapping arithmetic.
For checked arithmetic, see Time::checked_sub
.
impl SubAssign<Duration> for Timestamp
Subtracts an unsigned duration of time from a timestamp in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Timestamp::checked_sub
.
impl SubAssign<Duration> for Zoned
Subtracts an unsigned duration of time from a zoned datetime in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Zoned::checked_sub
.
impl SubAssign<Duration> for Offset
Subtracts an unsigned duration of time from an offset in place. This panics on overflow.
For checked arithmetic, see Offset::checked_sub
.
impl SubAssign<Duration> for rustmax::tokio::time::Instant
impl SubAssign<Duration> for rustmax::std::time::Instant
impl SubAssign<Duration> for SystemTime
impl<'a> SubAssign<&'a EvalResult> for EvalResult
impl<'a, T> SubAssign<&'a Histogram<T>> for Histogram<T>where
T: Counter,
impl<O> SubAssign for zerocopy::byteorder::F32<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::F32<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::F64<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::F64<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::I16<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::I16<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::I32<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::I32<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::I64<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::I64<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::I128<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::I128<O>where
O: ByteOrder,
impl<O> SubAssign for Isize<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::U16<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::U16<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::U32<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::U32<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::U64<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::U64<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::U128<O>where
O: ByteOrder,
impl<O> SubAssign for zerocopy::byteorder::U128<O>where
O: ByteOrder,
impl<O> SubAssign for Usize<O>where
O: ByteOrder,
impl<O> SubAssign<f32> for zerocopy::byteorder::F32<O>where
O: ByteOrder,
impl<O> SubAssign<f64> for zerocopy::byteorder::F64<O>where
O: ByteOrder,
impl<O> SubAssign<i16> for zerocopy::byteorder::I16<O>where
O: ByteOrder,
impl<O> SubAssign<i32> for zerocopy::byteorder::I32<O>where
O: ByteOrder,
impl<O> SubAssign<i64> for zerocopy::byteorder::I64<O>where
O: ByteOrder,
impl<O> SubAssign<i128> for zerocopy::byteorder::I128<O>where
O: ByteOrder,
impl<O> SubAssign<isize> for Isize<O>where
O: ByteOrder,
impl<O> SubAssign<u16> for zerocopy::byteorder::U16<O>where
O: ByteOrder,
impl<O> SubAssign<u32> for zerocopy::byteorder::U32<O>where
O: ByteOrder,
impl<O> SubAssign<u64> for zerocopy::byteorder::U64<O>where
O: ByteOrder,
impl<O> SubAssign<u128> for zerocopy::byteorder::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 Histogram<T>where
T: Counter,
impl<T, S, A> SubAssign<&HashSet<T, S, A>> for HashSet<T, S, A>
impl<T, U, const N: usize> SubAssign<U> for Simd<T, N>
impl<Tz> SubAssign<TimeDelta> for rustmax::chrono::Date<Tz>where
Tz: TimeZone,
impl<Tz> SubAssign<TimeDelta> for rustmax::chrono::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.
impl<Tz> SubAssign<Duration> for rustmax::chrono::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.