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 Duration
impl SubAssign for Point
impl SubAssign for Sides
impl SubAssign for TimeDelta
impl SubAssign for nix::fcntl::AtFlags
impl SubAssign for nix::fcntl::AtFlags
impl SubAssign for nix::fcntl::FallocateFlags
impl SubAssign for nix::fcntl::FallocateFlags
impl SubAssign for nix::fcntl::FdFlag
impl SubAssign for nix::fcntl::FdFlag
impl SubAssign for nix::fcntl::OFlag
impl SubAssign for nix::fcntl::OFlag
impl SubAssign for nix::fcntl::SealFlag
impl SubAssign for nix::fcntl::SealFlag
impl SubAssign for nix::fcntl::SpliceFFlags
impl SubAssign for nix::fcntl::SpliceFFlags
impl SubAssign for nix::kmod::DeleteModuleFlags
impl SubAssign for nix::kmod::DeleteModuleFlags
impl SubAssign for nix::kmod::ModuleInitFlags
impl SubAssign for nix::kmod::ModuleInitFlags
impl SubAssign for nix::mount::MntFlags
impl SubAssign for nix::mount::MntFlags
impl SubAssign for nix::mount::MsFlags
impl SubAssign for nix::mount::MsFlags
impl SubAssign for nix::mqueue::FdFlag
impl SubAssign for nix::mqueue::FdFlag
impl SubAssign for nix::mqueue::MQ_OFlag
impl SubAssign for nix::mqueue::MQ_OFlag
impl SubAssign for nix::net::if_::InterfaceFlags
impl SubAssign for nix::net::if_::InterfaceFlags
impl SubAssign for nix::poll::PollFlags
impl SubAssign for nix::poll::PollFlags
impl SubAssign for nix::sched::sched_linux_like::CloneFlags
impl SubAssign for nix::sched::sched_linux_like::CloneFlags
impl SubAssign for nix::sys::epoll::EpollCreateFlags
impl SubAssign for nix::sys::epoll::EpollCreateFlags
impl SubAssign for nix::sys::epoll::EpollFlags
impl SubAssign for nix::sys::epoll::EpollFlags
impl SubAssign for nix::sys::eventfd::EfdFlags
impl SubAssign for nix::sys::eventfd::EfdFlags
impl SubAssign for nix::sys::inotify::AddWatchFlags
impl SubAssign for nix::sys::inotify::AddWatchFlags
impl SubAssign for nix::sys::inotify::InitFlags
impl SubAssign for nix::sys::inotify::InitFlags
impl SubAssign for nix::sys::memfd::MemFdCreateFlag
impl SubAssign for nix::sys::memfd::MemFdCreateFlag
impl SubAssign for MRemapFlags
impl SubAssign for nix::sys::mman::MapFlags
impl SubAssign for nix::sys::mman::MapFlags
impl SubAssign for nix::sys::mman::MlockAllFlags
impl SubAssign for nix::sys::mman::MlockAllFlags
impl SubAssign for nix::sys::mman::MsFlags
impl SubAssign for nix::sys::mman::MsFlags
impl SubAssign for nix::sys::mman::ProtFlags
impl SubAssign for nix::sys::mman::ProtFlags
impl SubAssign for Persona
impl SubAssign for nix::sys::ptrace::linux::Options
impl SubAssign for nix::sys::ptrace::linux::Options
impl SubAssign for nix::sys::quota::QuotaValidFlags
impl SubAssign for nix::sys::quota::QuotaValidFlags
impl SubAssign for nix::sys::signal::SaFlags
impl SubAssign for nix::sys::signal::SaFlags
impl SubAssign for nix::sys::signalfd::SfdFlags
impl SubAssign for nix::sys::signalfd::SfdFlags
impl SubAssign for nix::sys::socket::MsgFlags
impl SubAssign for nix::sys::socket::MsgFlags
impl SubAssign for nix::sys::socket::SockFlag
impl SubAssign for nix::sys::socket::SockFlag
impl SubAssign for nix::sys::stat::Mode
impl SubAssign for nix::sys::stat::Mode
impl SubAssign for nix::sys::stat::SFlag
impl SubAssign for nix::sys::stat::SFlag
impl SubAssign for nix::sys::statvfs::FsFlags
impl SubAssign for nix::sys::statvfs::FsFlags
impl SubAssign for nix::sys::termios::ControlFlags
impl SubAssign for nix::sys::termios::ControlFlags
impl SubAssign for nix::sys::termios::InputFlags
impl SubAssign for nix::sys::termios::InputFlags
impl SubAssign for nix::sys::termios::LocalFlags
impl SubAssign for nix::sys::termios::LocalFlags
impl SubAssign for nix::sys::termios::OutputFlags
impl SubAssign for nix::sys::termios::OutputFlags
impl SubAssign for nix::sys::timerfd::TimerFlags
impl SubAssign for nix::sys::timerfd::TimerFlags
impl SubAssign for nix::sys::timerfd::TimerSetTimeFlags
impl SubAssign for nix::sys::timerfd::TimerSetTimeFlags
impl SubAssign for nix::sys::wait::WaitPidFlag
impl SubAssign for nix::sys::wait::WaitPidFlag
impl SubAssign for nix::unistd::AccessFlags
impl SubAssign for nix::unistd::AccessFlags
impl SubAssign for Transformations
impl SubAssign for DndAction
impl SubAssign for wayland_client::protocol::wl_output::Mode
impl SubAssign for Capability
impl SubAssign for Resize
impl SubAssign for Transient
impl SubAssign for Kind
impl SubAssign for wayland_protocols::stable::xdg_shell::generated::client::xdg_positioner::ConstraintAdjustment
impl SubAssign for ContentHint
impl SubAssign for wayland_protocols::unstable::xdg_shell::v6::generated::client::zxdg_positioner_v6::Anchor
impl SubAssign for wayland_protocols::unstable::xdg_shell::v6::generated::client::zxdg_positioner_v6::ConstraintAdjustment
impl SubAssign for Gravity
impl SubAssign for wayland_protocols::wlr::unstable::layer_shell::v1::generated::client::zwlr_layer_surface_v1::Anchor
impl SubAssign for Flags
impl SubAssign for ModifiersState
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 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<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<'a, T> SubAssign<&'a Ratio<T>> for Ratio<T>
impl<'a, T> SubAssign<&'a T> for Ratio<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<T> SubAssign for Ratio<T>
impl<T> SubAssign for Mat4<T>
impl<T> SubAssign for RealImpl<T>where
T: Float,
impl<T> SubAssign for Vec2<T>where
T: SubAssign,
impl<T> SubAssign for Vec3<T>where
T: SubAssign,
impl<T> SubAssign for Vec4<T>where
T: SubAssign,
impl<T> SubAssign<T> for Ready
impl<T> SubAssign<T> for Ratio<T>
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 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.