pub trait Sub<Rhs = Self> {
type Output;
// Required method
fn sub(self, rhs: Rhs) -> Self::Output;
}
Expand description
core
The subtraction operator -
.
Re-exported from core
::ops::
.
The subtraction operator -
.
Note that Rhs
is Self
by default, but this is not mandatory. For
example, std::time::SystemTime
implements Sub<Duration>
, which permits
operations of the form SystemTime = SystemTime - Duration
.
§Examples
§Sub
tractable points
use std::ops::Sub;
#[derive(Debug, Copy, Clone, PartialEq)]
struct Point {
x: i32,
y: i32,
}
impl Sub for Point {
type Output = Self;
fn sub(self, other: Self) -> Self::Output {
Self {
x: self.x - other.x,
y: self.y - other.y,
}
}
}
assert_eq!(Point { x: 3, y: 3 } - Point { x: 2, y: 3 },
Point { x: 1, y: 0 });
§Implementing Sub
with generics
Here is an example of the same Point
struct implementing the Sub
trait
using generics.
use std::ops::Sub;
#[derive(Debug, PartialEq)]
struct Point<T> {
x: T,
y: T,
}
// Notice that the implementation uses the associated type `Output`.
impl<T: Sub<Output = T>> Sub for Point<T> {
type Output = Self;
fn sub(self, other: Self) -> Self::Output {
Point {
x: self.x - other.x,
y: self.y - other.y,
}
}
}
assert_eq!(Point { x: 2, y: 3 } - Point { x: 1, y: 0 },
Point { x: 1, y: 3 });
Required Associated Types§
Required Methods§
Implementors§
§impl Sub for KeyEventState
impl Sub for KeyEventState
type Output = KeyEventState
§impl Sub for KeyModifiers
impl Sub for KeyModifiers
type Output = KeyModifiers
§impl Sub for KeyboardEnhancementFlags
impl Sub for KeyboardEnhancementFlags
type Output = KeyboardEnhancementFlags
§impl Sub for Capabilities
impl Sub for Capabilities
type Output = Capabilities
§impl Sub for CodecProperties
impl Sub for CodecProperties
type Output = CodecProperties
§impl Sub for Disposition
impl Sub for Disposition
type Output = Disposition
§impl Sub for ChannelLayoutMask
impl Sub for ChannelLayoutMask
type Output = ChannelLayoutMask
§impl Sub for Date
Computes the span of time between two dates.
impl Sub for Date
Computes the span of time between two dates.
This will return a negative span when the date being subtracted is greater.
Since this uses the default configuration for calculating a span between two date (no rounding and largest units is days), this will never panic or fail in any way.
To configure the largest unit or enable rounding, use Date::since
.
§impl Sub for DateTime
Computes the span of time between two datetimes.
impl Sub for DateTime
Computes the span of time between two datetimes.
This will return a negative span when the datetime being subtracted is greater.
Since this uses the default configuration for calculating a span between
two datetimes (no rounding and largest units is days), this will never
panic or fail in any way. It is guaranteed that the largest non-zero
unit in the Span
returned will be days.
To configure the largest unit or enable rounding, use DateTime::since
.
If you need a SignedDuration
representing the span between two civil
datetimes, then use DateTime::duration_since
.
§impl Sub for Time
Computes the span of time between two times.
impl Sub for Time
Computes the span of time between two times.
This will return a negative span when the time being subtracted is greater.
Since this uses the default configuration for calculating a span between two times (no rounding and largest units is hours), this will never panic or fail in any way.
To configure the largest unit or enable rounding, use Time::since
.
§impl Sub for SignedDuration
impl Sub for SignedDuration
type Output = SignedDuration
§impl Sub for Timestamp
Computes the span of time between two timestamps.
impl Sub for Timestamp
Computes the span of time between two timestamps.
This will return a negative span when the timestamp being subtracted is greater.
Since this uses the default configuration for calculating a span between two timestamps (no rounding and largest units is seconds), this will never panic or fail in any way.
To configure the largest unit or enable rounding, use Timestamp::since
.
§impl Sub for Offset
Computes the span of time between two offsets.
impl Sub for Offset
Computes the span of time between two offsets.
This will return a negative span when the offset being subtracted is greater (i.e., more east with respect to the prime meridian).
§impl Sub for PlaybackRate
impl Sub for PlaybackRate
type Output = PlaybackRate
§impl Sub for MessageBoxButtonFlag
impl Sub for MessageBoxButtonFlag
type Output = MessageBoxButtonFlag
§impl Sub for MessageBoxFlag
impl Sub for MessageBoxFlag
type Output = MessageBoxFlag
§impl Sub for AllowChangeFlag
impl Sub for AllowChangeFlag
type Output = AllowChangeFlag
1.74.0 · Source§impl Sub for Saturating<i8>
impl Sub for Saturating<i8>
type Output = Saturating<i8>
1.74.0 · Source§impl Sub for Saturating<i16>
impl Sub for Saturating<i16>
type Output = Saturating<i16>
1.74.0 · Source§impl Sub for Saturating<i32>
impl Sub for Saturating<i32>
type Output = Saturating<i32>
1.74.0 · Source§impl Sub for Saturating<i64>
impl Sub for Saturating<i64>
type Output = Saturating<i64>
1.74.0 · Source§impl Sub for Saturating<i128>
impl Sub for Saturating<i128>
type Output = Saturating<i128>
1.74.0 · Source§impl Sub for Saturating<isize>
impl Sub for Saturating<isize>
type Output = Saturating<isize>
1.74.0 · Source§impl Sub for Saturating<u8>
impl Sub for Saturating<u8>
type Output = Saturating<u8>
1.74.0 · Source§impl Sub for Saturating<u16>
impl Sub for Saturating<u16>
type Output = Saturating<u16>
1.74.0 · Source§impl Sub for Saturating<u32>
impl Sub for Saturating<u32>
type Output = Saturating<u32>
1.74.0 · Source§impl Sub for Saturating<u64>
impl Sub for Saturating<u64>
type Output = Saturating<u64>
1.74.0 · Source§impl Sub for Saturating<u128>
impl Sub for Saturating<u128>
type Output = Saturating<u128>
1.74.0 · Source§impl Sub for Saturating<usize>
impl Sub for Saturating<usize>
type Output = Saturating<usize>
1.74.0 · Source§impl Sub<&Saturating<i8>> for &Saturating<i8>
impl Sub<&Saturating<i8>> for &Saturating<i8>
1.74.0 · Source§impl Sub<&Saturating<i8>> for Saturating<i8>
impl Sub<&Saturating<i8>> for Saturating<i8>
1.74.0 · Source§impl Sub<&Saturating<i16>> for &Saturating<i16>
impl Sub<&Saturating<i16>> for &Saturating<i16>
1.74.0 · Source§impl Sub<&Saturating<i16>> for Saturating<i16>
impl Sub<&Saturating<i16>> for Saturating<i16>
1.74.0 · Source§impl Sub<&Saturating<i32>> for &Saturating<i32>
impl Sub<&Saturating<i32>> for &Saturating<i32>
1.74.0 · Source§impl Sub<&Saturating<i32>> for Saturating<i32>
impl Sub<&Saturating<i32>> for Saturating<i32>
1.74.0 · Source§impl Sub<&Saturating<i64>> for &Saturating<i64>
impl Sub<&Saturating<i64>> for &Saturating<i64>
1.74.0 · Source§impl Sub<&Saturating<i64>> for Saturating<i64>
impl Sub<&Saturating<i64>> for Saturating<i64>
1.74.0 · Source§impl Sub<&Saturating<i128>> for &Saturating<i128>
impl Sub<&Saturating<i128>> for &Saturating<i128>
1.74.0 · Source§impl Sub<&Saturating<i128>> for Saturating<i128>
impl Sub<&Saturating<i128>> for Saturating<i128>
1.74.0 · Source§impl Sub<&Saturating<isize>> for &Saturating<isize>
impl Sub<&Saturating<isize>> for &Saturating<isize>
1.74.0 · Source§impl Sub<&Saturating<isize>> for Saturating<isize>
impl Sub<&Saturating<isize>> for Saturating<isize>
1.74.0 · Source§impl Sub<&Saturating<u8>> for &Saturating<u8>
impl Sub<&Saturating<u8>> for &Saturating<u8>
1.74.0 · Source§impl Sub<&Saturating<u8>> for Saturating<u8>
impl Sub<&Saturating<u8>> for Saturating<u8>
1.74.0 · Source§impl Sub<&Saturating<u16>> for &Saturating<u16>
impl Sub<&Saturating<u16>> for &Saturating<u16>
1.74.0 · Source§impl Sub<&Saturating<u16>> for Saturating<u16>
impl Sub<&Saturating<u16>> for Saturating<u16>
1.74.0 · Source§impl Sub<&Saturating<u32>> for &Saturating<u32>
impl Sub<&Saturating<u32>> for &Saturating<u32>
1.74.0 · Source§impl Sub<&Saturating<u32>> for Saturating<u32>
impl Sub<&Saturating<u32>> for Saturating<u32>
1.74.0 · Source§impl Sub<&Saturating<u64>> for &Saturating<u64>
impl Sub<&Saturating<u64>> for &Saturating<u64>
1.74.0 · Source§impl Sub<&Saturating<u64>> for Saturating<u64>
impl Sub<&Saturating<u64>> for Saturating<u64>
1.74.0 · Source§impl Sub<&Saturating<u128>> for &Saturating<u128>
impl Sub<&Saturating<u128>> for &Saturating<u128>
1.74.0 · Source§impl Sub<&Saturating<u128>> for Saturating<u128>
impl Sub<&Saturating<u128>> for Saturating<u128>
1.74.0 · Source§impl Sub<&Saturating<usize>> for &Saturating<usize>
impl Sub<&Saturating<usize>> for &Saturating<usize>
1.74.0 · Source§impl Sub<&Saturating<usize>> for Saturating<usize>
impl Sub<&Saturating<usize>> for Saturating<usize>
§impl Sub<SignedDuration> for Date
Subtracts a signed duration of time from a date.
impl Sub<SignedDuration> for Date
Subtracts a signed duration of time from a date.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Date::checked_sub
.
§impl Sub<SignedDuration> for DateTime
Subtracts a signed duration of time from a datetime.
impl Sub<SignedDuration> for DateTime
Subtracts a signed duration of time from a datetime.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use DateTime::checked_sub
.
§impl Sub<SignedDuration> for Time
Subtracts a signed duration of time. This uses wrapping arithmetic.
impl Sub<SignedDuration> for Time
Subtracts a signed duration of time. This uses wrapping arithmetic.
For checked arithmetic, see Time::checked_sub
.
§impl Sub<SignedDuration> for Timestamp
Subtracts a signed duration of time from a timestamp.
impl Sub<SignedDuration> for Timestamp
Subtracts a signed duration of time from a timestamp.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Timestamp::checked_sub
.
§impl Sub<SignedDuration> for Offset
Subtracts a signed duration of time from an offset. This panics on
overflow.
impl Sub<SignedDuration> for Offset
Subtracts a signed duration of time from an offset. This panics on overflow.
For checked arithmetic, see Offset::checked_sub
.
§impl Sub<Span> for Date
Subtracts a span of time from a date.
impl Sub<Span> for Date
Subtracts a span of time from a date.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Date::checked_sub
.
§impl Sub<Span> for DateTime
Subtracts a span of time from a datetime.
impl Sub<Span> for DateTime
Subtracts a span of time from a datetime.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use DateTime::checked_sub
.
§impl Sub<Span> for Time
Subtracts a span of time. This uses wrapping arithmetic.
impl Sub<Span> for Time
Subtracts a span of time. This uses wrapping arithmetic.
For checked arithmetic, see Time::checked_sub
.
§impl Sub<Span> for Timestamp
Subtracts a span of time from a timestamp.
impl Sub<Span> for Timestamp
Subtracts a span of time from a timestamp.
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 Sub<Span> for Offset
Subtracts a span of time from an offset. This panics on overflow.
impl Sub<Span> for Offset
Subtracts a span of time from an offset. This panics on overflow.
For checked arithmetic, see Offset::checked_sub
.
§impl Sub<Duration> for Date
Subtracts an unsigned duration of time from a date.
impl Sub<Duration> for Date
Subtracts an unsigned duration of time from a date.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Date::checked_sub
.
§impl Sub<Duration> for DateTime
Subtracts an unsigned duration of time from a datetime.
impl Sub<Duration> for DateTime
Subtracts an unsigned duration of time from a datetime.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use DateTime::checked_sub
.
§impl Sub<Duration> for Time
Subtracts an unsigned duration of time. This uses wrapping arithmetic.
impl Sub<Duration> for Time
Subtracts an unsigned duration of time. This uses wrapping arithmetic.
For checked arithmetic, see Time::checked_sub
.
§impl Sub<Duration> for Timestamp
Subtracts an unsigned duration of time from a timestamp.
impl Sub<Duration> for Timestamp
Subtracts an unsigned duration of time from a timestamp.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Timestamp::checked_sub
.
§impl Sub<Duration> for Offset
Subtracts an unsigned duration of time from an offset. This panics on
overflow.
impl Sub<Duration> for Offset
Subtracts an unsigned duration of time from an offset. This panics on overflow.
For checked arithmetic, see Offset::checked_sub
.
1.8.0 · Source§impl Sub<Duration> for SystemTime
impl Sub<Duration> for SystemTime
type Output = SystemTime
Source§impl Sub<TimeDelta> for SystemInstant
Moves Instant backward or forward.
impl Sub<TimeDelta> for SystemInstant
Moves Instant backward or forward.
§impl<'a> Sub for &'a Zoned
Computes the span of time between two zoned datetimes.
impl<'a> Sub for &'a Zoned
Computes the span of time between two zoned datetimes.
This will return a negative span when the zoned datetime being subtracted is greater.
Since this uses the default configuration for calculating a span between
two zoned datetimes (no rounding and largest units is hours), this will
never panic or fail in any way. It is guaranteed that the largest non-zero
unit in the Span
returned will be hours.
To configure the largest unit or enable rounding, use Zoned::since
.
§impl<'a> Sub<SignedDuration> for &'a Zoned
Subtracts a signed duration of time from a zoned datetime.
impl<'a> Sub<SignedDuration> for &'a Zoned
Subtracts a signed duration of time from a zoned datetime.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Zoned::checked_sub
.
§impl<'a> Sub<Span> for &'a Zoned
Subtracts a span of time from a zoned datetime.
impl<'a> Sub<Span> for &'a Zoned
Subtracts a span of time from a zoned datetime.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Zoned::checked_sub
.
§impl<'a> Sub<Duration> for &'a Zoned
Subtracts an unsigned duration of time from a zoned datetime.
impl<'a> Sub<Duration> for &'a Zoned
Subtracts an unsigned duration of time from a zoned datetime.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use Zoned::checked_sub
.
1.74.0 · Source§impl<'a> Sub<Saturating<i8>> for &'a Saturating<i8>
impl<'a> Sub<Saturating<i8>> for &'a Saturating<i8>
1.74.0 · Source§impl<'a> Sub<Saturating<i16>> for &'a Saturating<i16>
impl<'a> Sub<Saturating<i16>> for &'a Saturating<i16>
1.74.0 · Source§impl<'a> Sub<Saturating<i32>> for &'a Saturating<i32>
impl<'a> Sub<Saturating<i32>> for &'a Saturating<i32>
1.74.0 · Source§impl<'a> Sub<Saturating<i64>> for &'a Saturating<i64>
impl<'a> Sub<Saturating<i64>> for &'a Saturating<i64>
1.74.0 · Source§impl<'a> Sub<Saturating<i128>> for &'a Saturating<i128>
impl<'a> Sub<Saturating<i128>> for &'a Saturating<i128>
1.74.0 · Source§impl<'a> Sub<Saturating<isize>> for &'a Saturating<isize>
impl<'a> Sub<Saturating<isize>> for &'a Saturating<isize>
1.74.0 · Source§impl<'a> Sub<Saturating<u8>> for &'a Saturating<u8>
impl<'a> Sub<Saturating<u8>> for &'a Saturating<u8>
1.74.0 · Source§impl<'a> Sub<Saturating<u16>> for &'a Saturating<u16>
impl<'a> Sub<Saturating<u16>> for &'a Saturating<u16>
1.74.0 · Source§impl<'a> Sub<Saturating<u32>> for &'a Saturating<u32>
impl<'a> Sub<Saturating<u32>> for &'a Saturating<u32>
1.74.0 · Source§impl<'a> Sub<Saturating<u64>> for &'a Saturating<u64>
impl<'a> Sub<Saturating<u64>> for &'a Saturating<u64>
1.74.0 · Source§impl<'a> Sub<Saturating<u128>> for &'a Saturating<u128>
impl<'a> Sub<Saturating<u128>> for &'a Saturating<u128>
1.74.0 · Source§impl<'a> Sub<Saturating<usize>> for &'a Saturating<usize>
impl<'a> Sub<Saturating<usize>> for &'a Saturating<usize>
Source§impl<'s, 'o> Sub<&'o Float<f64>> for &'s Float<f64>
Available on crate feature _float_f64
only.
impl<'s, 'o> Sub<&'o Float<f64>> for &'s Float<f64>
_float_f64
only.Source§impl<T: Clone + Sub<Output = T>, const D: usize> Sub for Vector<T, D>
Available on crate feature linear
only.
impl<T: Clone + Sub<Output = T>, const D: usize> Sub for Vector<T, D>
linear
only.