Trait SubAssign

1.8.0 · Source
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 · Source

fn sub_assign(&mut self, rhs: Rhs)

Performs the -= operation.

§Example
let mut x: u32 = 12;
x -= 1;
assert_eq!(x, 11);

Implementors§

1.8.0 · Source§

impl SubAssign for f16

1.8.0 · Source§

impl SubAssign for f32

1.8.0 · Source§

impl SubAssign for f64

1.8.0 · Source§

impl SubAssign for f128

1.8.0 · Source§

impl SubAssign for i8

1.8.0 · Source§

impl SubAssign for i16

1.8.0 · Source§

impl SubAssign for i32

1.8.0 · Source§

impl SubAssign for i64

1.8.0 · Source§

impl SubAssign for i128

1.8.0 · Source§

impl SubAssign for isize

1.8.0 · Source§

impl SubAssign for u8

1.8.0 · Source§

impl SubAssign for u16

1.8.0 · Source§

impl SubAssign for u32

1.8.0 · Source§

impl SubAssign for u64

1.8.0 · Source§

impl SubAssign for u128

1.8.0 · Source§

impl SubAssign for usize

1.74.0 · Source§

impl SubAssign for Saturating<i8>

1.74.0 · Source§

impl SubAssign for Saturating<i16>

1.74.0 · Source§

impl SubAssign for Saturating<i32>

1.74.0 · Source§

impl SubAssign for Saturating<i64>

1.74.0 · Source§

impl SubAssign for Saturating<i128>

1.74.0 · Source§

impl SubAssign for Saturating<isize>

1.74.0 · Source§

impl SubAssign for Saturating<u8>

1.74.0 · Source§

impl SubAssign for Saturating<u16>

1.74.0 · Source§

impl SubAssign for Saturating<u32>

1.74.0 · Source§

impl SubAssign for Saturating<u64>

1.74.0 · Source§

impl SubAssign for Saturating<u128>

1.74.0 · Source§

impl SubAssign for Saturating<usize>

1.8.0 · Source§

impl SubAssign for Wrapping<i8>

1.8.0 · Source§

impl SubAssign for Wrapping<i16>

1.8.0 · Source§

impl SubAssign for Wrapping<i32>

1.8.0 · Source§

impl SubAssign for Wrapping<i64>

1.8.0 · Source§

impl SubAssign for Wrapping<i128>

1.8.0 · Source§

impl SubAssign for Wrapping<isize>

1.8.0 · Source§

impl SubAssign for Wrapping<u8>

1.8.0 · Source§

impl SubAssign for Wrapping<u16>

1.8.0 · Source§

impl SubAssign for Wrapping<u32>

1.8.0 · Source§

impl SubAssign for Wrapping<u64>

1.8.0 · Source§

impl SubAssign for Wrapping<u128>

1.8.0 · Source§

impl SubAssign for Wrapping<usize>

1.9.0 · Source§

impl SubAssign for Duration

Source§

impl SubAssign for Point

Source§

impl SubAssign for Sides

Source§

impl SubAssign for TimeDelta

Source§

impl SubAssign for AtFlags

Source§

impl SubAssign for FallocateFlags

Source§

impl SubAssign for nix::fcntl::FdFlag

Source§

impl SubAssign for OFlag

Source§

impl SubAssign for SealFlag

Source§

impl SubAssign for SpliceFFlags

Source§

impl SubAssign for DeleteModuleFlags

Source§

impl SubAssign for ModuleInitFlags

Source§

impl SubAssign for MntFlags

Source§

impl SubAssign for nix::mount::MsFlags

Source§

impl SubAssign for nix::mqueue::FdFlag

Source§

impl SubAssign for MQ_OFlag

Source§

impl SubAssign for InterfaceFlags

Source§

impl SubAssign for PollFlags

Source§

impl SubAssign for CloneFlags

Source§

impl SubAssign for EpollCreateFlags

Source§

impl SubAssign for EpollFlags

Source§

impl SubAssign for EfdFlags

Source§

impl SubAssign for AddWatchFlags

Source§

impl SubAssign for InitFlags

Source§

impl SubAssign for MemFdCreateFlag

Source§

impl SubAssign for MapFlags

Source§

impl SubAssign for MlockAllFlags

Source§

impl SubAssign for nix::sys::mman::MsFlags

Source§

impl SubAssign for ProtFlags

Source§

impl SubAssign for Options

Source§

impl SubAssign for QuotaValidFlags

Source§

impl SubAssign for SaFlags

Source§

impl SubAssign for SfdFlags

Source§

impl SubAssign for MsgFlags

Source§

impl SubAssign for SockFlag

Source§

impl SubAssign for nix::sys::stat::Mode

Source§

impl SubAssign for SFlag

Source§

impl SubAssign for FsFlags

Source§

impl SubAssign for ControlFlags

Source§

impl SubAssign for InputFlags

Source§

impl SubAssign for LocalFlags

Source§

impl SubAssign for OutputFlags

Source§

impl SubAssign for WaitPidFlag

Source§

impl SubAssign for AccessFlags

Source§

impl SubAssign for Transformations

Source§

impl SubAssign for Extensions

Source§

impl SubAssign for DndAction

Source§

impl SubAssign for wayland_client::protocol::wl_output::Mode

Source§

impl SubAssign for Capability

Source§

impl SubAssign for Resize

Source§

impl SubAssign for Transient

Source§

impl SubAssign for wayland_protocols::stable::xdg_shell::generated::client::xdg_positioner::ConstraintAdjustment

Source§

impl SubAssign for ContentHint

Source§

impl SubAssign for wayland_protocols::unstable::xdg_shell::v6::generated::client::zxdg_positioner_v6::Anchor

Source§

impl SubAssign for wayland_protocols::unstable::xdg_shell::v6::generated::client::zxdg_positioner_v6::ConstraintAdjustment

Source§

impl SubAssign for Gravity

Source§

impl SubAssign for wayland_protocols::wlr::unstable::layer_shell::v1::generated::client::zwlr_layer_surface_v1::Anchor

Source§

impl SubAssign for Flags

Source§

impl SubAssign for ModifiersState

1.22.0 · Source§

impl SubAssign<&f16> for f16

1.22.0 · Source§

impl SubAssign<&f32> for f32

1.22.0 · Source§

impl SubAssign<&f64> for f64

1.22.0 · Source§

impl SubAssign<&f128> for f128

1.22.0 · Source§

impl SubAssign<&i8> for i8

1.22.0 · Source§

impl SubAssign<&i8> for Saturating<i8>

1.22.0 · Source§

impl SubAssign<&i8> for Wrapping<i8>

1.22.0 · Source§

impl SubAssign<&i16> for i16

1.22.0 · Source§

impl SubAssign<&i16> for Saturating<i16>

1.22.0 · Source§

impl SubAssign<&i16> for Wrapping<i16>

1.22.0 · Source§

impl SubAssign<&i32> for i32

1.22.0 · Source§

impl SubAssign<&i32> for Saturating<i32>

1.22.0 · Source§

impl SubAssign<&i32> for Wrapping<i32>

1.22.0 · Source§

impl SubAssign<&i64> for i64

1.22.0 · Source§

impl SubAssign<&i64> for Saturating<i64>

1.22.0 · Source§

impl SubAssign<&i64> for Wrapping<i64>

1.22.0 · Source§

impl SubAssign<&i128> for i128

1.22.0 · Source§

impl SubAssign<&i128> for Saturating<i128>

1.22.0 · Source§

impl SubAssign<&i128> for Wrapping<i128>

1.22.0 · Source§

impl SubAssign<&isize> for isize

1.22.0 · Source§

impl SubAssign<&isize> for Saturating<isize>

1.22.0 · Source§

impl SubAssign<&isize> for Wrapping<isize>

1.22.0 · Source§

impl SubAssign<&u8> for u8

1.22.0 · Source§

impl SubAssign<&u8> for Saturating<u8>

1.22.0 · Source§

impl SubAssign<&u8> for Wrapping<u8>

1.22.0 · Source§

impl SubAssign<&u16> for u16

1.22.0 · Source§

impl SubAssign<&u16> for Saturating<u16>

1.22.0 · Source§

impl SubAssign<&u16> for Wrapping<u16>

1.22.0 · Source§

impl SubAssign<&u32> for u32

1.22.0 · Source§

impl SubAssign<&u32> for Saturating<u32>

1.22.0 · Source§

impl SubAssign<&u32> for Wrapping<u32>

1.22.0 · Source§

impl SubAssign<&u64> for u64

1.22.0 · Source§

impl SubAssign<&u64> for Saturating<u64>

1.22.0 · Source§

impl SubAssign<&u64> for Wrapping<u64>

1.22.0 · Source§

impl SubAssign<&u128> for u128

1.22.0 · Source§

impl SubAssign<&u128> for Saturating<u128>

1.22.0 · Source§

impl SubAssign<&u128> for Wrapping<u128>

1.22.0 · Source§

impl SubAssign<&usize> for usize

1.22.0 · Source§

impl SubAssign<&usize> for Saturating<usize>

1.22.0 · Source§

impl SubAssign<&usize> for Wrapping<usize>

1.22.0 · Source§

impl SubAssign<&Saturating<i8>> for Saturating<i8>

1.22.0 · Source§

impl SubAssign<&Saturating<i16>> for Saturating<i16>

1.22.0 · Source§

impl SubAssign<&Saturating<i32>> for Saturating<i32>

1.22.0 · Source§

impl SubAssign<&Saturating<i64>> for Saturating<i64>

1.22.0 · Source§

impl SubAssign<&Saturating<i128>> for Saturating<i128>

1.22.0 · Source§

impl SubAssign<&Saturating<isize>> for Saturating<isize>

1.22.0 · Source§

impl SubAssign<&Saturating<u8>> for Saturating<u8>

1.22.0 · Source§

impl SubAssign<&Saturating<u16>> for Saturating<u16>

1.22.0 · Source§

impl SubAssign<&Saturating<u32>> for Saturating<u32>

1.22.0 · Source§

impl SubAssign<&Saturating<u64>> for Saturating<u64>

1.22.0 · Source§

impl SubAssign<&Saturating<u128>> for Saturating<u128>

1.22.0 · Source§

impl SubAssign<&Saturating<usize>> for Saturating<usize>

1.22.0 · Source§

impl SubAssign<&Wrapping<i8>> for Wrapping<i8>

1.22.0 · Source§

impl SubAssign<&Wrapping<i16>> for Wrapping<i16>

1.22.0 · Source§

impl SubAssign<&Wrapping<i32>> for Wrapping<i32>

1.22.0 · Source§

impl SubAssign<&Wrapping<i64>> for Wrapping<i64>

1.22.0 · Source§

impl SubAssign<&Wrapping<i128>> for Wrapping<i128>

1.22.0 · Source§

impl SubAssign<&Wrapping<isize>> for Wrapping<isize>

1.22.0 · Source§

impl SubAssign<&Wrapping<u8>> for Wrapping<u8>

1.22.0 · Source§

impl SubAssign<&Wrapping<u16>> for Wrapping<u16>

1.22.0 · Source§

impl SubAssign<&Wrapping<u32>> for Wrapping<u32>

1.22.0 · Source§

impl SubAssign<&Wrapping<u64>> for Wrapping<u64>

1.22.0 · Source§

impl SubAssign<&Wrapping<u128>> for Wrapping<u128>

1.22.0 · Source§

impl SubAssign<&Wrapping<usize>> for Wrapping<usize>

1.74.0 · Source§

impl SubAssign<i8> for Saturating<i8>

1.60.0 · Source§

impl SubAssign<i8> for Wrapping<i8>

1.74.0 · Source§

impl SubAssign<i16> for Saturating<i16>

1.60.0 · Source§

impl SubAssign<i16> for Wrapping<i16>

1.74.0 · Source§

impl SubAssign<i32> for Saturating<i32>

1.60.0 · Source§

impl SubAssign<i32> for Wrapping<i32>

1.74.0 · Source§

impl SubAssign<i64> for Saturating<i64>

1.60.0 · Source§

impl SubAssign<i64> for Wrapping<i64>

1.74.0 · Source§

impl SubAssign<i128> for Saturating<i128>

1.60.0 · Source§

impl SubAssign<i128> for Wrapping<i128>

1.74.0 · Source§

impl SubAssign<isize> for Saturating<isize>

1.60.0 · Source§

impl SubAssign<isize> for Wrapping<isize>

1.74.0 · Source§

impl SubAssign<u8> for Saturating<u8>

1.60.0 · Source§

impl SubAssign<u8> for Wrapping<u8>

1.74.0 · Source§

impl SubAssign<u16> for Saturating<u16>

1.60.0 · Source§

impl SubAssign<u16> for Wrapping<u16>

1.74.0 · Source§

impl SubAssign<u32> for Saturating<u32>

1.60.0 · Source§

impl SubAssign<u32> for Wrapping<u32>

1.74.0 · Source§

impl SubAssign<u64> for Saturating<u64>

1.60.0 · Source§

impl SubAssign<u64> for Wrapping<u64>

1.74.0 · Source§

impl SubAssign<u128> for Saturating<u128>

1.60.0 · Source§

impl SubAssign<u128> for Wrapping<u128>

1.74.0 · Source§

impl SubAssign<usize> for Saturating<usize>

1.60.0 · Source§

impl SubAssign<usize> for Wrapping<usize>

1.9.0 · Source§

impl SubAssign<Duration> for Instant

1.9.0 · Source§

impl SubAssign<Duration> for SystemTime

Source§

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.

Source§

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.

Source§

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.

Source§

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.

Source§

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.

Source§

impl<'a, T> SubAssign<&'a Ratio<T>> for Ratio<T>
where T: Clone + Integer + NumAssign,

Source§

impl<'a, T> SubAssign<&'a T> for Ratio<T>
where T: Clone + Integer + NumAssign,

Source§

impl<O> SubAssign for F32<O>
where O: ByteOrder,

Source§

impl<O> SubAssign for F64<O>
where O: ByteOrder,

Source§

impl<O> SubAssign for I16<O>
where O: ByteOrder,

Source§

impl<O> SubAssign for I32<O>
where O: ByteOrder,

Source§

impl<O> SubAssign for I64<O>
where O: ByteOrder,

Source§

impl<O> SubAssign for I128<O>
where O: ByteOrder,

Source§

impl<O> SubAssign for Isize<O>
where O: ByteOrder,

Source§

impl<O> SubAssign for U16<O>
where O: ByteOrder,

Source§

impl<O> SubAssign for U32<O>
where O: ByteOrder,

Source§

impl<O> SubAssign for U64<O>
where O: ByteOrder,

Source§

impl<O> SubAssign for U128<O>
where O: ByteOrder,

Source§

impl<O> SubAssign for Usize<O>
where O: ByteOrder,

Source§

impl<O> SubAssign<f32> for F32<O>
where O: ByteOrder,

Source§

impl<O> SubAssign<f64> for F64<O>
where O: ByteOrder,

Source§

impl<O> SubAssign<i16> for I16<O>
where O: ByteOrder,

Source§

impl<O> SubAssign<i32> for I32<O>
where O: ByteOrder,

Source§

impl<O> SubAssign<i64> for I64<O>
where O: ByteOrder,

Source§

impl<O> SubAssign<i128> for I128<O>
where O: ByteOrder,

Source§

impl<O> SubAssign<isize> for Isize<O>
where O: ByteOrder,

Source§

impl<O> SubAssign<u16> for U16<O>
where O: ByteOrder,

Source§

impl<O> SubAssign<u32> for U32<O>
where O: ByteOrder,

Source§

impl<O> SubAssign<u64> for U64<O>
where O: ByteOrder,

Source§

impl<O> SubAssign<u128> for U128<O>
where O: ByteOrder,

Source§

impl<O> SubAssign<usize> for Usize<O>
where O: ByteOrder,

Source§

impl<O> SubAssign<F32<O>> for f32
where O: ByteOrder,

Source§

impl<O> SubAssign<F64<O>> for f64
where O: ByteOrder,

Source§

impl<O> SubAssign<I16<O>> for i16
where O: ByteOrder,

Source§

impl<O> SubAssign<I32<O>> for i32
where O: ByteOrder,

Source§

impl<O> SubAssign<I64<O>> for i64
where O: ByteOrder,

Source§

impl<O> SubAssign<I128<O>> for i128
where O: ByteOrder,

Source§

impl<O> SubAssign<Isize<O>> for isize
where O: ByteOrder,

Source§

impl<O> SubAssign<U16<O>> for u16
where O: ByteOrder,

Source§

impl<O> SubAssign<U32<O>> for u32
where O: ByteOrder,

Source§

impl<O> SubAssign<U64<O>> for u64
where O: ByteOrder,

Source§

impl<O> SubAssign<U128<O>> for u128
where O: ByteOrder,

Source§

impl<O> SubAssign<Usize<O>> for usize
where O: ByteOrder,

Source§

impl<T> SubAssign for Ratio<T>
where T: Clone + Integer + NumAssign,

Source§

impl<T> SubAssign for NotNan<T>
where T: FloatCore + SubAssign,

Source§

impl<T> SubAssign for Mat4<T>
where T: Num + Copy + SubAssign,

Source§

impl<T> SubAssign for RealImpl<T>
where T: Float,

Source§

impl<T> SubAssign for Vec2<T>
where T: SubAssign,

Source§

impl<T> SubAssign for Vec3<T>
where T: SubAssign,

Source§

impl<T> SubAssign for Vec4<T>
where T: SubAssign,

Source§

impl<T> SubAssign<T> for Ready
where T: Into<Ready>,

Source§

impl<T> SubAssign<T> for Ratio<T>
where T: Clone + Integer + NumAssign,

Source§

impl<T> SubAssign<T> for NotNan<T>
where T: FloatCore + SubAssign,

Subtracts a float directly.

Panics if the provided value is NaN or the computation results in NaN

Source§

impl<T, U, const N: usize> SubAssign<U> for Simd<T, N>
where Simd<T, N>: Sub<U, Output = Simd<T, N>>, T: SimdElement, LaneCount<N>: SupportedLaneCount,

Source§

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.

Source§

impl<Tz> SubAssign<TimeDelta> for Date<Tz>
where Tz: TimeZone,

Source§

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.