Skip to main content

SubAssign

Trait SubAssign 

1.8.0 (const: unstable) · 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 (const: unstable) · Source§

impl SubAssign for f16

1.8.0 (const: unstable) · Source§

impl SubAssign for f32

1.8.0 (const: unstable) · Source§

impl SubAssign for f64

1.8.0 (const: unstable) · Source§

impl SubAssign for f128

1.8.0 (const: unstable) · Source§

impl SubAssign for i8

1.8.0 (const: unstable) · Source§

impl SubAssign for i16

1.8.0 (const: unstable) · Source§

impl SubAssign for i32

1.8.0 (const: unstable) · Source§

impl SubAssign for i64

1.8.0 (const: unstable) · Source§

impl SubAssign for i128

1.8.0 (const: unstable) · Source§

impl SubAssign for isize

1.8.0 (const: unstable) · Source§

impl SubAssign for u8

1.8.0 (const: unstable) · Source§

impl SubAssign for u16

1.8.0 (const: unstable) · Source§

impl SubAssign for u32

1.8.0 (const: unstable) · Source§

impl SubAssign for u64

1.8.0 (const: unstable) · Source§

impl SubAssign for u128

1.8.0 (const: unstable) · Source§

impl SubAssign for usize

Source§

impl SubAssign for icydb_core::types::Date

Source§

impl SubAssign for icydb_core::types::Decimal

Source§

impl SubAssign for icydb_core::types::Duration

Source§

impl SubAssign for E8s

Source§

impl SubAssign for E18s

Source§

impl SubAssign for Int128

Source§

impl SubAssign for icydb_core::types::Int

Source§

impl SubAssign for Nat128

Source§

impl SubAssign for icydb_core::types::Nat

Source§

impl SubAssign for Timestamp

1.74.0 (const: unstable) · Source§

impl SubAssign for Saturating<i8>

1.74.0 (const: unstable) · Source§

impl SubAssign for Saturating<i16>

1.74.0 (const: unstable) · Source§

impl SubAssign for Saturating<i32>

1.74.0 (const: unstable) · Source§

impl SubAssign for Saturating<i64>

1.74.0 (const: unstable) · Source§

impl SubAssign for Saturating<i128>

1.74.0 (const: unstable) · Source§

impl SubAssign for Saturating<isize>

1.74.0 (const: unstable) · Source§

impl SubAssign for Saturating<u8>

1.74.0 (const: unstable) · Source§

impl SubAssign for Saturating<u16>

1.74.0 (const: unstable) · Source§

impl SubAssign for Saturating<u32>

1.74.0 (const: unstable) · Source§

impl SubAssign for Saturating<u64>

1.74.0 (const: unstable) · Source§

impl SubAssign for Saturating<u128>

1.74.0 (const: unstable) · Source§

impl SubAssign for Saturating<usize>

1.8.0 (const: unstable) · Source§

impl SubAssign for Wrapping<i8>

1.8.0 (const: unstable) · Source§

impl SubAssign for Wrapping<i16>

1.8.0 (const: unstable) · Source§

impl SubAssign for Wrapping<i32>

1.8.0 (const: unstable) · Source§

impl SubAssign for Wrapping<i64>

1.8.0 (const: unstable) · Source§

impl SubAssign for Wrapping<i128>

1.8.0 (const: unstable) · Source§

impl SubAssign for Wrapping<isize>

1.8.0 (const: unstable) · Source§

impl SubAssign for Wrapping<u8>

1.8.0 (const: unstable) · Source§

impl SubAssign for Wrapping<u16>

1.8.0 (const: unstable) · Source§

impl SubAssign for Wrapping<u32>

1.8.0 (const: unstable) · Source§

impl SubAssign for Wrapping<u64>

1.8.0 (const: unstable) · Source§

impl SubAssign for Wrapping<u128>

1.8.0 (const: unstable) · Source§

impl SubAssign for Wrapping<usize>

1.9.0 (const: unstable) · Source§

impl SubAssign for core::time::Duration

Source§

impl SubAssign for candid::types::number::Int

Source§

impl SubAssign for candid::types::number::Nat

Source§

impl SubAssign for Cycles

Source§

impl SubAssign for TimeDelta

Source§

impl SubAssign for bf16

Source§

impl SubAssign for f16

Source§

impl SubAssign for G1Projective

Source§

impl SubAssign for G2Projective

Source§

impl SubAssign for Gt

Source§

impl SubAssign for Scalar

Source§

impl SubAssign for BigInt

Source§

impl SubAssign for BigUint

Source§

impl SubAssign for rust_decimal::decimal::Decimal

Source§

impl SubAssign for time::duration::Duration

1.22.0 (const: unstable) · Source§

impl SubAssign<&f16> for f16

1.22.0 (const: unstable) · Source§

impl SubAssign<&f32> for f32

1.22.0 (const: unstable) · Source§

impl SubAssign<&f64> for f64

1.22.0 (const: unstable) · Source§

impl SubAssign<&f128> for f128

1.22.0 (const: unstable) · Source§

impl SubAssign<&i8> for i8

1.74.0 (const: unstable) · Source§

impl SubAssign<&i8> for Saturating<i8>

1.22.0 (const: unstable) · Source§

impl SubAssign<&i8> for Wrapping<i8>

1.22.0 (const: unstable) · Source§

impl SubAssign<&i16> for i16

1.74.0 (const: unstable) · Source§

impl SubAssign<&i16> for Saturating<i16>

1.22.0 (const: unstable) · Source§

impl SubAssign<&i16> for Wrapping<i16>

1.22.0 (const: unstable) · Source§

impl SubAssign<&i32> for i32

1.74.0 (const: unstable) · Source§

impl SubAssign<&i32> for Saturating<i32>

1.22.0 (const: unstable) · Source§

impl SubAssign<&i32> for Wrapping<i32>

1.22.0 (const: unstable) · Source§

impl SubAssign<&i64> for i64

1.74.0 (const: unstable) · Source§

impl SubAssign<&i64> for Saturating<i64>

1.22.0 (const: unstable) · Source§

impl SubAssign<&i64> for Wrapping<i64>

1.22.0 (const: unstable) · Source§

impl SubAssign<&i128> for i128

1.74.0 (const: unstable) · Source§

impl SubAssign<&i128> for Saturating<i128>

1.22.0 (const: unstable) · Source§

impl SubAssign<&i128> for Wrapping<i128>

1.22.0 (const: unstable) · Source§

impl SubAssign<&isize> for isize

1.74.0 (const: unstable) · Source§

impl SubAssign<&isize> for Saturating<isize>

1.22.0 (const: unstable) · Source§

impl SubAssign<&isize> for Wrapping<isize>

1.22.0 (const: unstable) · Source§

impl SubAssign<&u8> for u8

1.74.0 (const: unstable) · Source§

impl SubAssign<&u8> for Saturating<u8>

1.22.0 (const: unstable) · Source§

impl SubAssign<&u8> for Wrapping<u8>

1.22.0 (const: unstable) · Source§

impl SubAssign<&u16> for u16

1.74.0 (const: unstable) · Source§

impl SubAssign<&u16> for Saturating<u16>

1.22.0 (const: unstable) · Source§

impl SubAssign<&u16> for Wrapping<u16>

1.22.0 (const: unstable) · Source§

impl SubAssign<&u32> for u32

1.74.0 (const: unstable) · Source§

impl SubAssign<&u32> for Saturating<u32>

1.22.0 (const: unstable) · Source§

impl SubAssign<&u32> for Wrapping<u32>

1.22.0 (const: unstable) · Source§

impl SubAssign<&u64> for u64

1.74.0 (const: unstable) · Source§

impl SubAssign<&u64> for Saturating<u64>

1.22.0 (const: unstable) · Source§

impl SubAssign<&u64> for Wrapping<u64>

1.22.0 (const: unstable) · Source§

impl SubAssign<&u128> for u128

1.74.0 (const: unstable) · Source§

impl SubAssign<&u128> for Saturating<u128>

1.22.0 (const: unstable) · Source§

impl SubAssign<&u128> for Wrapping<u128>

1.22.0 (const: unstable) · Source§

impl SubAssign<&usize> for usize

1.74.0 (const: unstable) · Source§

impl SubAssign<&usize> for Saturating<usize>

1.22.0 (const: unstable) · Source§

impl SubAssign<&usize> for Wrapping<usize>

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.22.0 (const: unstable) · Source§

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

1.22.0 (const: unstable) · Source§

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

1.22.0 (const: unstable) · Source§

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

1.22.0 (const: unstable) · Source§

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

1.22.0 (const: unstable) · Source§

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

1.22.0 (const: unstable) · Source§

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

1.22.0 (const: unstable) · Source§

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

1.22.0 (const: unstable) · Source§

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

1.22.0 (const: unstable) · Source§

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

1.22.0 (const: unstable) · Source§

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

1.22.0 (const: unstable) · Source§

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

1.22.0 (const: unstable) · Source§

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

Source§

impl SubAssign<&bf16> for bf16

Source§

impl SubAssign<&f16> for f16

Source§

impl SubAssign<&BigInt> for BigInt

Source§

impl SubAssign<&BigUint> for BigUint

1.74.0 (const: unstable) · Source§

impl SubAssign<i8> for Saturating<i8>

1.60.0 (const: unstable) · Source§

impl SubAssign<i8> for Wrapping<i8>

Source§

impl SubAssign<i8> for candid::types::number::Int

Source§

impl SubAssign<i8> for BigInt

1.74.0 (const: unstable) · Source§

impl SubAssign<i16> for Saturating<i16>

1.60.0 (const: unstable) · Source§

impl SubAssign<i16> for Wrapping<i16>

Source§

impl SubAssign<i16> for candid::types::number::Int

Source§

impl SubAssign<i16> for BigInt

1.74.0 (const: unstable) · Source§

impl SubAssign<i32> for Saturating<i32>

1.60.0 (const: unstable) · Source§

impl SubAssign<i32> for Wrapping<i32>

Source§

impl SubAssign<i32> for candid::types::number::Int

Source§

impl SubAssign<i32> for BigInt

1.74.0 (const: unstable) · Source§

impl SubAssign<i64> for Saturating<i64>

1.60.0 (const: unstable) · Source§

impl SubAssign<i64> for Wrapping<i64>

Source§

impl SubAssign<i64> for candid::types::number::Int

Source§

impl SubAssign<i64> for BigInt

1.74.0 (const: unstable) · Source§

impl SubAssign<i128> for Saturating<i128>

1.60.0 (const: unstable) · Source§

impl SubAssign<i128> for Wrapping<i128>

Source§

impl SubAssign<i128> for candid::types::number::Int

Source§

impl SubAssign<i128> for BigInt

1.74.0 (const: unstable) · Source§

impl SubAssign<isize> for Saturating<isize>

1.60.0 (const: unstable) · Source§

impl SubAssign<isize> for Wrapping<isize>

Source§

impl SubAssign<isize> for candid::types::number::Int

Source§

impl SubAssign<isize> for BigInt

1.74.0 (const: unstable) · Source§

impl SubAssign<u8> for Saturating<u8>

1.60.0 (const: unstable) · Source§

impl SubAssign<u8> for Wrapping<u8>

Source§

impl SubAssign<u8> for candid::types::number::Int

Source§

impl SubAssign<u8> for candid::types::number::Nat

Source§

impl SubAssign<u8> for BigInt

Source§

impl SubAssign<u8> for BigUint

1.74.0 (const: unstable) · Source§

impl SubAssign<u16> for Saturating<u16>

1.60.0 (const: unstable) · Source§

impl SubAssign<u16> for Wrapping<u16>

Source§

impl SubAssign<u16> for candid::types::number::Int

Source§

impl SubAssign<u16> for candid::types::number::Nat

Source§

impl SubAssign<u16> for BigInt

Source§

impl SubAssign<u16> for BigUint

1.74.0 (const: unstable) · Source§

impl SubAssign<u32> for Saturating<u32>

1.60.0 (const: unstable) · Source§

impl SubAssign<u32> for Wrapping<u32>

Source§

impl SubAssign<u32> for candid::types::number::Int

Source§

impl SubAssign<u32> for candid::types::number::Nat

Source§

impl SubAssign<u32> for BigInt

Source§

impl SubAssign<u32> for BigUint

1.74.0 (const: unstable) · Source§

impl SubAssign<u64> for Saturating<u64>

1.60.0 (const: unstable) · Source§

impl SubAssign<u64> for Wrapping<u64>

Source§

impl SubAssign<u64> for candid::types::number::Int

Source§

impl SubAssign<u64> for candid::types::number::Nat

Source§

impl SubAssign<u64> for BigInt

Source§

impl SubAssign<u64> for BigUint

1.74.0 (const: unstable) · Source§

impl SubAssign<u128> for Saturating<u128>

1.60.0 (const: unstable) · Source§

impl SubAssign<u128> for Wrapping<u128>

Source§

impl SubAssign<u128> for candid::types::number::Int

Source§

impl SubAssign<u128> for candid::types::number::Nat

Source§

impl SubAssign<u128> for BigInt

Source§

impl SubAssign<u128> for BigUint

1.74.0 (const: unstable) · Source§

impl SubAssign<usize> for Saturating<usize>

1.60.0 (const: unstable) · Source§

impl SubAssign<usize> for Wrapping<usize>

Source§

impl SubAssign<usize> for candid::types::number::Int

Source§

impl SubAssign<usize> for candid::types::number::Nat

Source§

impl SubAssign<usize> for BigInt

Source§

impl SubAssign<usize> for BigUint

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<Duration> for time::date::Date

Source§

impl SubAssign<Duration> for time::duration::Duration

Source§

impl SubAssign<Duration> for OffsetDateTime

Source§

impl SubAssign<Duration> for PrimitiveDateTime

Source§

impl SubAssign<Duration> for Time

Source§

impl SubAssign<Duration> for UtcDateTime

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 SubAssign<G1Affine> for G1Projective

Source§

impl SubAssign<G2Affine> for G2Projective

Source§

impl SubAssign<Decimal> for &mut rust_decimal::decimal::Decimal

Source§

impl SubAssign<Duration> for core::time::Duration

Source§

impl SubAssign<Duration> for Instant

Source§

impl SubAssign<Duration> for SystemTime

Available on crate feature std only.
Source§

impl SubAssign<Duration> for time::date::Date

Source§

impl SubAssign<Duration> for OffsetDateTime

Source§

impl SubAssign<Duration> for PrimitiveDateTime

Source§

impl SubAssign<Duration> for Time

Source§

impl SubAssign<Duration> for UtcDateTime

Source§

impl<'a> SubAssign<&'a Decimal> for &'a mut rust_decimal::decimal::Decimal

Source§

impl<'a> SubAssign<&'a Decimal> for rust_decimal::decimal::Decimal

Source§

impl<'b> SubAssign<&'b G1Affine> for G1Projective

Source§

impl<'b> SubAssign<&'b G1Projective> for G1Projective

Source§

impl<'b> SubAssign<&'b G2Affine> for G2Projective

Source§

impl<'b> SubAssign<&'b G2Projective> for G2Projective

Source§

impl<'b> SubAssign<&'b Gt> for Gt

Source§

impl<'b> SubAssign<&'b Scalar> for Scalar

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, U, const N: usize> SubAssign<U> for Simd<T, N>
where Simd<T, N>: Sub<U, Output = Simd<T, N>>, T: SimdElement,

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 chrono::date::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.