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 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 flams_router_vscode::server_fn::inventory::core::time::Duration
impl SubAssign for TimeDelta
impl SubAssign for AttrCheckFlags
impl SubAssign for CheckoutNotificationType
impl SubAssign for CredentialType
impl SubAssign for DiffFlags
impl SubAssign for DiffStatsFormat
impl SubAssign for IndexAddOption
impl SubAssign for IndexEntryExtendedFlag
impl SubAssign for IndexEntryFlag
impl SubAssign for MergeAnalysis
impl SubAssign for MergePreference
impl SubAssign for OdbLookupFlags
impl SubAssign for PathspecFlags
impl SubAssign for ReferenceFormat
impl SubAssign for RemoteUpdateFlags
impl SubAssign for RepositoryInitMode
impl SubAssign for RepositoryOpenFlags
impl SubAssign for RevparseMode
impl SubAssign for Sort
impl SubAssign for StashApplyFlags
impl SubAssign for StashFlags
impl SubAssign for Status
impl SubAssign for SubmoduleStatus
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 Access
impl SubAssign for Access
impl SubAssign for AtFlags
impl SubAssign for AtFlags
impl SubAssign for ChannelType
impl SubAssign for ColorFallbackKind
impl SubAssign for ColorScheme
impl SubAssign for CreateFlags
impl SubAssign for CreateFlags
impl SubAssign for CreateFlags
impl SubAssign for DupFlags
impl SubAssign for DupFlags
impl SubAssign for Duration
impl SubAssign for ElementSelectorFlags
impl SubAssign for EventFlags
impl SubAssign for EventfdFlags
impl SubAssign for FallocateFlags
impl SubAssign for FallocateFlags
impl SubAssign for FdFlags
impl SubAssign for FdFlags
impl SubAssign for Features
impl SubAssign for FloatingPointEmulationControl
impl SubAssign for FloatingPointExceptionMode
impl SubAssign for GridAutoFlow
impl SubAssign for IFlags
impl SubAssign for IFlags
impl SubAssign for MemfdFlags
impl SubAssign for MemfdFlags
impl SubAssign for Mode
impl SubAssign for Mode
impl SubAssign for MountFlags
impl SubAssign for MountPropagationFlags
impl SubAssign for OFlags
impl SubAssign for OFlags
impl SubAssign for ParserFlags
impl SubAssign for PidfdFlags
impl SubAssign for PidfdGetfdFlags
impl SubAssign for PipeFlags
impl SubAssign for PollFlags
impl SubAssign for ReadFlags
impl SubAssign for ReadFlags
impl SubAssign for ReadWriteFlags
impl SubAssign for ReadWriteFlags
impl SubAssign for RecvFlags
impl SubAssign for RenameFlags
impl SubAssign for RenameFlags
impl SubAssign for ResolveFlags
impl SubAssign for ResolveFlags
impl SubAssign for ReturnFlags
impl SubAssign for SealFlags
impl SubAssign for SealFlags
impl SubAssign for SendFlags
impl SubAssign for SocketAddrXdpFlags
impl SubAssign for SocketFlags
impl SubAssign for SpeculationFeatureControl
impl SubAssign for SpeculationFeatureState
impl SubAssign for SpliceFlags
impl SubAssign for StatVfsMountFlags
impl SubAssign for StatVfsMountFlags
impl SubAssign for StatxAttributes
impl SubAssign for StatxFlags
impl SubAssign for StatxFlags
impl SubAssign for TextDecorationLine
impl SubAssign for TextTransformOther
impl SubAssign for TimerfdFlags
impl SubAssign for TimerfdTimerFlags
impl SubAssign for Timespec
impl SubAssign for UnalignedAccessControl
impl SubAssign for UnmountFlags
impl SubAssign for VendorPrefix
impl SubAssign for WaitIdOptions
impl SubAssign for WaitOptions
impl SubAssign for WatchFlags
impl SubAssign for WatchFlags
impl SubAssign for XattrFlags
impl SubAssign for XattrFlags
impl SubAssign for XdpDescOptions
impl SubAssign for XdpOptionsFlags
impl SubAssign for XdpRingFlags
impl SubAssign for XdpUmemRegFlags
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<&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 Saturating<i8>
impl SubAssign<i8> for Wrapping<i8>
impl SubAssign<i16> for Saturating<i16>
impl SubAssign<i16> for Wrapping<i16>
impl SubAssign<i32> for Saturating<i32>
impl SubAssign<i32> for Wrapping<i32>
impl SubAssign<i64> for Saturating<i64>
impl SubAssign<i64> for Wrapping<i64>
impl SubAssign<i128> for Saturating<i128>
impl SubAssign<i128> for Wrapping<i128>
impl SubAssign<isize> for Saturating<isize>
impl SubAssign<isize> for Wrapping<isize>
impl SubAssign<u8> for Saturating<u8>
impl SubAssign<u8> for Wrapping<u8>
impl SubAssign<u16> for Saturating<u16>
impl SubAssign<u16> for Wrapping<u16>
impl SubAssign<u32> for Saturating<u32>
impl SubAssign<u32> for Wrapping<u32>
impl SubAssign<u64> for Saturating<u64>
impl SubAssign<u64> for Wrapping<u64>
impl SubAssign<u128> for Saturating<u128>
impl SubAssign<u128> for Wrapping<u128>
impl SubAssign<usize> for Saturating<usize>
impl SubAssign<usize> for Wrapping<usize>
impl SubAssign<Duration> for std::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 Date
impl SubAssign<Duration> for Duration
impl SubAssign<Duration> for Instant
impl SubAssign<Duration> for OffsetDateTime
impl SubAssign<Duration> for PrimitiveDateTime
impl SubAssign<Duration> for Time
impl SubAssign<Duration> for UtcDateTime
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<Cam16Hue> for f32
impl SubAssign<Cam16Hue<f64>> for f64
impl SubAssign<LabHue> for f32
impl SubAssign<LabHue<f64>> for f64
impl SubAssign<LuvHue> for f32
impl SubAssign<LuvHue<f64>> for f64
impl SubAssign<OklabHue> for f32
impl SubAssign<OklabHue<f64>> for f64
impl SubAssign<RgbHue> for f32
impl SubAssign<RgbHue<f64>> for f64
impl SubAssign<Duration> for flams_router_vscode::server_fn::inventory::core::time::Duration
impl SubAssign<Duration> for std::time::Instant
impl SubAssign<Duration> for SystemTime
impl SubAssign<Duration> for Date
impl SubAssign<Duration> for OffsetDateTime
impl SubAssign<Duration> for PrimitiveDateTime
impl SubAssign<Duration> for Time
impl SubAssign<Duration> for UtcDateTime
impl<C> SubAssign for PreAlpha<C>
impl<C> SubAssign<f32> for PreAlpha<C>
impl<C> SubAssign<f64> for PreAlpha<C>
impl<C, T> SubAssign for Alpha<C, T>
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<S, T> SubAssign for Hsl<S, T>where
T: SubAssign,
impl<S, T> SubAssign for Hsv<S, T>where
T: SubAssign,
impl<S, T> SubAssign for Hwb<S, T>where
T: SubAssign,
impl<S, T> SubAssign for Luma<S, T>where
T: SubAssign,
impl<S, T> SubAssign for Rgb<S, T>where
T: SubAssign,
impl<S, T> SubAssign<T> for Hsl<S, T>
impl<S, T> SubAssign<T> for Hsv<S, T>
impl<S, T> SubAssign<T> for Hwb<S, T>
impl<S, T> SubAssign<T> for Luma<S, T>
impl<S, T> SubAssign<T> for Rgb<S, T>
impl<T> SubAssign for Cam16Jch<T>where
T: SubAssign,
impl<T> SubAssign for Cam16Jmh<T>where
T: SubAssign,
impl<T> SubAssign for Cam16Jsh<T>where
T: SubAssign,
impl<T> SubAssign for Cam16Qch<T>where
T: SubAssign,
impl<T> SubAssign for Cam16Qmh<T>where
T: SubAssign,
impl<T> SubAssign for Cam16Qsh<T>where
T: SubAssign,
impl<T> SubAssign for Cam16UcsJab<T>where
T: SubAssign,
impl<T> SubAssign for Cam16UcsJmh<T>where
T: SubAssign,
impl<T> SubAssign for Cam16Hue<T>where
T: SubAssign,
impl<T> SubAssign for LabHue<T>where
T: SubAssign,
impl<T> SubAssign for LuvHue<T>where
T: SubAssign,
impl<T> SubAssign for OklabHue<T>where
T: SubAssign,
impl<T> SubAssign for RgbHue<T>where
T: SubAssign,
impl<T> SubAssign for Okhsl<T>where
T: SubAssign,
impl<T> SubAssign for Okhsv<T>where
T: SubAssign,
impl<T> SubAssign for Okhwb<T>where
T: SubAssign,
impl<T> SubAssign for Oklab<T>where
T: SubAssign,
impl<T> SubAssign for Oklch<T>where
T: SubAssign,
impl<T> SubAssign<T> for Cam16Jch<T>
impl<T> SubAssign<T> for Cam16Jmh<T>
impl<T> SubAssign<T> for Cam16Jsh<T>
impl<T> SubAssign<T> for Cam16Qch<T>
impl<T> SubAssign<T> for Cam16Qmh<T>
impl<T> SubAssign<T> for Cam16Qsh<T>
impl<T> SubAssign<T> for Cam16UcsJab<T>
impl<T> SubAssign<T> for Cam16UcsJmh<T>
impl<T> SubAssign<T> for Cam16Hue<T>where
T: SubAssign,
impl<T> SubAssign<T> for LabHue<T>where
T: SubAssign,
impl<T> SubAssign<T> for LuvHue<T>where
T: SubAssign,
impl<T> SubAssign<T> for OklabHue<T>where
T: SubAssign,
impl<T> SubAssign<T> for RgbHue<T>where
T: SubAssign,
impl<T> SubAssign<T> for Okhsl<T>
impl<T> SubAssign<T> for Okhsv<T>
impl<T> SubAssign<T> for Okhwb<T>
impl<T> SubAssign<T> for Oklab<T>
impl<T> SubAssign<T> for Oklch<T>
impl<T, C> SubAssign<T> for Alpha<C, T>
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<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.