pub trait SubAssign<Rhs = Self> {
// Required method
fn sub_assign(&mut self, rhs: Rhs);
}
Expand description
core
The subtraction assignment operator -=
.
Re-exported from core
::ops::
.
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 KeyEventState
impl SubAssign for KeyModifiers
impl SubAssign for KeyboardEnhancementFlags
impl SubAssign for devela::_dep::ffmpeg_the_third::codec::decoder::slice::Flags
impl SubAssign for Check
impl SubAssign for Conceal
impl SubAssign for devela::_dep::ffmpeg_the_third::codec::packet::Flags
impl SubAssign for Capabilities
impl SubAssign for CodecProperties
impl SubAssign for Debug
impl SubAssign for devela::_dep::ffmpeg_the_third::codec::Flags
impl SubAssign for devela::_dep::ffmpeg_the_third::codec::subtitle::Flags
impl SubAssign for devela::_dep::ffmpeg_the_third::filter::Flags
impl SubAssign for Disposition
impl SubAssign for devela::_dep::ffmpeg_the_third::format::Flags
impl SubAssign for devela::_dep::ffmpeg_the_third::software::resampling::Flags
impl SubAssign for devela::_dep::ffmpeg_the_third::software::scaling::Flags
impl SubAssign for ChannelLayoutMask
impl SubAssign for devela::_dep::ffmpeg_the_third::util::frame::Flags
impl SubAssign for devela::_dep::ffmpeg_the_third::util::log::Flags
impl SubAssign for Type
impl SubAssign for Ticks
impl SubAssign for SignedDuration
impl SubAssign for Decibels
impl SubAssign for Frame
impl SubAssign for Mix
impl SubAssign for Panning
impl SubAssign for PlaybackRate
impl SubAssign for Semitones
impl SubAssign for devela::_dep::sdl2::image::InitFlag
impl SubAssign for devela::_dep::sdl2::keyboard::Mod
impl SubAssign for devela::_dep::sdl2::messagebox::MessageBoxButtonFlag
impl SubAssign for devela::_dep::sdl2::messagebox::MessageBoxFlag
impl SubAssign for devela::_dep::sdl2::mixer::InitFlag
impl SubAssign for FPoint
impl SubAssign for devela::_dep::sdl2::rect::Point
impl SubAssign for FontStyle
impl SubAssign for GlobFlags
impl SubAssign for devela::_dep::sdl3::keyboard::Mod
impl SubAssign for devela::_dep::sdl3::messagebox::MessageBoxButtonFlag
impl SubAssign for devela::_dep::sdl3::messagebox::MessageBoxFlag
impl SubAssign for devela::_dep::sdl3::rect::Point
impl SubAssign for Channels
impl SubAssign for Complex
impl SubAssign for f32x4
impl SubAssign for f32x8
impl SubAssign for f64x2
impl SubAssign for f64x4
impl SubAssign for i8x16
impl SubAssign for i8x32
impl SubAssign for i16x8
impl SubAssign for i16x16
impl SubAssign for i32x4
impl SubAssign for i32x8
impl SubAssign for i64x2
impl SubAssign for u8x16
impl SubAssign for u16x8
impl SubAssign for u16x16
impl SubAssign for u32x4
impl SubAssign for u32x8
impl SubAssign for u64x2
impl SubAssign for u64x4
impl SubAssign for Float<f64>
_float_f64
only.impl SubAssign for Int<i64>
_int_i64
only.impl SubAssign for Int<u32>
_int_u32
only.impl SubAssign for MilliBel
impl SubAssign for alsa::poll::Flags
impl SubAssign for PortCap
impl SubAssign for PortType
impl SubAssign for Remove
impl SubAssign for Mat3
impl SubAssign for Mat2
impl SubAssign for Mat3A
impl SubAssign for Mat4
impl SubAssign for Vec3A
impl SubAssign for Vec4
impl SubAssign for Vec2
impl SubAssign for Vec3
impl SubAssign for DMat2
impl SubAssign for DMat3
impl SubAssign for DMat4
impl SubAssign for DVec2
impl SubAssign for DVec3
impl SubAssign for DVec4
impl SubAssign for I8Vec2
impl SubAssign for I8Vec3
impl SubAssign for I8Vec4
impl SubAssign for I16Vec2
impl SubAssign for I16Vec3
impl SubAssign for I16Vec4
impl SubAssign for IVec2
impl SubAssign for IVec3
impl SubAssign for IVec4
impl SubAssign for I64Vec2
impl SubAssign for I64Vec3
impl SubAssign for I64Vec4
impl SubAssign for U8Vec2
impl SubAssign for U8Vec3
impl SubAssign for U8Vec4
impl SubAssign for U16Vec2
impl SubAssign for U16Vec3
impl SubAssign for U16Vec4
impl SubAssign for UVec2
impl SubAssign for UVec3
impl SubAssign for UVec4
impl SubAssign for U64Vec2
impl SubAssign for U64Vec3
impl SubAssign for U64Vec4
impl SubAssign for USizeVec2
impl SubAssign for USizeVec3
impl SubAssign for USizeVec4
impl SubAssign for EventMask
impl SubAssign for WatchMask
impl SubAssign for EpollCreateFlags
impl SubAssign for EpollFlags
impl SubAssign for EfdFlags
impl SubAssign for Transformations
impl SubAssign for DupFlags
impl SubAssign for FdFlags
impl SubAssign for ReadWriteFlags
impl SubAssign for ControlModes
impl SubAssign for InputModes
impl SubAssign for LocalModes
impl SubAssign for OutputModes
impl SubAssign for 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 TimeDelta
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 m128
impl SubAssign for m128d
impl SubAssign for m256
impl SubAssign for m256d
impl SubAssign<&f16> for f16
impl SubAssign<&f32> for f32
impl SubAssign<&f32> for Vec3A
impl SubAssign<&f32> for Vec4
impl SubAssign<&f32> for Vec2
impl SubAssign<&f32> for Vec3
impl SubAssign<&f64> for f64
impl SubAssign<&f64> for DVec2
impl SubAssign<&f64> for DVec3
impl SubAssign<&f64> for DVec4
impl SubAssign<&f128> for f128
impl SubAssign<&i8> for i8
impl SubAssign<&i8> for I8Vec2
impl SubAssign<&i8> for I8Vec3
impl SubAssign<&i8> for I8Vec4
impl SubAssign<&i8> for Saturating<i8>
impl SubAssign<&i8> for Wrapping<i8>
impl SubAssign<&i16> for i16
impl SubAssign<&i16> for I16Vec2
impl SubAssign<&i16> for I16Vec3
impl SubAssign<&i16> for I16Vec4
impl SubAssign<&i16> for Saturating<i16>
impl SubAssign<&i16> for Wrapping<i16>
impl SubAssign<&i32> for i32
impl SubAssign<&i32> for IVec2
impl SubAssign<&i32> for IVec3
impl SubAssign<&i32> for IVec4
impl SubAssign<&i32> for Saturating<i32>
impl SubAssign<&i32> for Wrapping<i32>
impl SubAssign<&i64> for i64
impl SubAssign<&i64> for I64Vec2
impl SubAssign<&i64> for I64Vec3
impl SubAssign<&i64> for I64Vec4
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 U8Vec2
impl SubAssign<&u8> for U8Vec3
impl SubAssign<&u8> for U8Vec4
impl SubAssign<&u8> for Saturating<u8>
impl SubAssign<&u8> for Wrapping<u8>
impl SubAssign<&u16> for u16
impl SubAssign<&u16> for U16Vec2
impl SubAssign<&u16> for U16Vec3
impl SubAssign<&u16> for U16Vec4
impl SubAssign<&u16> for Saturating<u16>
impl SubAssign<&u16> for Wrapping<u16>
impl SubAssign<&u32> for u32
impl SubAssign<&u32> for UVec2
impl SubAssign<&u32> for UVec3
impl SubAssign<&u32> for UVec4
impl SubAssign<&u32> for Saturating<u32>
impl SubAssign<&u32> for Wrapping<u32>
impl SubAssign<&u64> for u64
impl SubAssign<&u64> for U64Vec2
impl SubAssign<&u64> for U64Vec3
impl SubAssign<&u64> for U64Vec4
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 USizeVec2
impl SubAssign<&usize> for USizeVec3
impl SubAssign<&usize> for USizeVec4
impl SubAssign<&usize> for Saturating<usize>
impl SubAssign<&usize> for Wrapping<usize>
impl SubAssign<&f32x4> for f32x4
impl SubAssign<&f32x8> for f32x8
impl SubAssign<&f64x2> for f64x2
impl SubAssign<&f64x4> for f64x4
impl SubAssign<&i8x16> for i8x16
impl SubAssign<&i8x32> for i8x32
impl SubAssign<&i16x8> for i16x8
impl SubAssign<&i16x16> for i16x16
impl SubAssign<&i32x4> for i32x4
impl SubAssign<&i32x8> for i32x8
impl SubAssign<&i64x2> for i64x2
impl SubAssign<&u8x16> for u8x16
impl SubAssign<&u16x8> for u16x8
impl SubAssign<&u16x16> for u16x16
impl SubAssign<&u32x4> for u32x4
impl SubAssign<&u32x8> for u32x8
impl SubAssign<&u64x2> for u64x2
impl SubAssign<&u64x4> for u64x4
impl SubAssign<&Vec3A> for Vec3A
impl SubAssign<&Vec4> for Vec4
impl SubAssign<&Vec2> for Vec2
impl SubAssign<&Vec3> for Vec3
impl SubAssign<&DVec2> for DVec2
impl SubAssign<&DVec3> for DVec3
impl SubAssign<&DVec4> for DVec4
impl SubAssign<&I8Vec2> for I8Vec2
impl SubAssign<&I8Vec3> for I8Vec3
impl SubAssign<&I8Vec4> for I8Vec4
impl SubAssign<&I16Vec2> for I16Vec2
impl SubAssign<&I16Vec3> for I16Vec3
impl SubAssign<&I16Vec4> for I16Vec4
impl SubAssign<&IVec2> for IVec2
impl SubAssign<&IVec3> for IVec3
impl SubAssign<&IVec4> for IVec4
impl SubAssign<&I64Vec2> for I64Vec2
impl SubAssign<&I64Vec3> for I64Vec3
impl SubAssign<&I64Vec4> for I64Vec4
impl SubAssign<&U8Vec2> for U8Vec2
impl SubAssign<&U8Vec3> for U8Vec3
impl SubAssign<&U8Vec4> for U8Vec4
impl SubAssign<&U16Vec2> for U16Vec2
impl SubAssign<&U16Vec3> for U16Vec3
impl SubAssign<&U16Vec4> for U16Vec4
impl SubAssign<&UVec2> for UVec2
impl SubAssign<&UVec3> for UVec3
impl SubAssign<&UVec4> for UVec4
impl SubAssign<&U64Vec2> for U64Vec2
impl SubAssign<&U64Vec3> for U64Vec3
impl SubAssign<&U64Vec4> for U64Vec4
impl SubAssign<&USizeVec2> for USizeVec2
impl SubAssign<&USizeVec3> for USizeVec3
impl SubAssign<&USizeVec4> for USizeVec4
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<f32> for Vec3A
impl SubAssign<f32> for Vec4
impl SubAssign<f32> for Vec2
impl SubAssign<f32> for Vec3
impl SubAssign<f64> for ClockTime
impl SubAssign<f64> for Float<f64>
_float_f64
only.impl SubAssign<f64> for DVec2
impl SubAssign<f64> for DVec3
impl SubAssign<f64> for DVec4
impl SubAssign<i8> for Weekday
impl SubAssign<i8> for I8Vec2
impl SubAssign<i8> for I8Vec3
impl SubAssign<i8> for I8Vec4
impl SubAssign<i8> for Saturating<i8>
impl SubAssign<i8> for Wrapping<i8>
impl SubAssign<i16> for Weekday
impl SubAssign<i16> for I16Vec2
impl SubAssign<i16> for I16Vec3
impl SubAssign<i16> for I16Vec4
impl SubAssign<i16> for Saturating<i16>
impl SubAssign<i16> for Wrapping<i16>
impl SubAssign<i32> for Weekday
impl SubAssign<i32> for IVec2
impl SubAssign<i32> for IVec3
impl SubAssign<i32> for IVec4
impl SubAssign<i32> for Saturating<i32>
impl SubAssign<i32> for Wrapping<i32>
impl SubAssign<i64> for Weekday
impl SubAssign<i64> for Int<i64>
_int_i64
only.impl SubAssign<i64> for I64Vec2
impl SubAssign<i64> for I64Vec3
impl SubAssign<i64> for I64Vec4
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 U8Vec2
impl SubAssign<u8> for U8Vec3
impl SubAssign<u8> for U8Vec4
impl SubAssign<u8> for Saturating<u8>
impl SubAssign<u8> for Wrapping<u8>
impl SubAssign<u16> for U16Vec2
impl SubAssign<u16> for U16Vec3
impl SubAssign<u16> for U16Vec4
impl SubAssign<u16> for Saturating<u16>
impl SubAssign<u16> for Wrapping<u16>
impl SubAssign<u32> for Int<u32>
_int_u32
only.impl SubAssign<u32> for UVec2
impl SubAssign<u32> for UVec3
impl SubAssign<u32> for UVec4
impl SubAssign<u32> for Saturating<u32>
impl SubAssign<u32> for Wrapping<u32>
impl SubAssign<u64> for ClockTime
impl SubAssign<u64> for U64Vec2
impl SubAssign<u64> for U64Vec3
impl SubAssign<u64> for U64Vec4
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 USizeVec2
impl SubAssign<usize> for USizeVec3
impl SubAssign<usize> for USizeVec4
impl SubAssign<usize> for Saturating<usize>
impl SubAssign<usize> for Wrapping<usize>
impl SubAssign<SignedDuration> for 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 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 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 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 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 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 Instant
impl SubAssign<Duration> for SystemTime
impl<'o> SubAssign<&'o f64> for Float<f64>
_float_f64
only.impl<'o> SubAssign<&'o i64> for Int<i64>
_int_i64
only.impl<'o> SubAssign<&'o u32> for Int<u32>
_int_u32
only.impl<'o> SubAssign<&'o Float<f64>> for Float<f64>
_float_f64
only.impl<'o> SubAssign<&'o Int<i64>> for Int<i64>
_int_i64
only.impl<'o> SubAssign<&'o Int<u32>> for Int<u32>
_int_u32
only.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<T: Clone + Sub<Output = T>> SubAssign<&VecVector<T>> for VecVector<T>
linear
only.impl<T: Clone + Sub<Output = T>, const D: usize> SubAssign<&Vector<T, D>> for Vector<T, D>
linear
only.