pub trait Sub<Rhs = Self> {
type Output;
// Required method
fn sub(self, rhs: Rhs) -> Self::Output;
}Expand description
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
§Subtractable 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 ShutdownState
impl Sub for ShutdownState
type Output = ShutdownState
§impl Sub for SslOptions
impl Sub for SslOptions
type Output = SslOptions
§impl Sub for SslSessionCacheMode
impl Sub for SslSessionCacheMode
type Output = SslSessionCacheMode
§impl Sub for SslVerifyMode
impl Sub for SslVerifyMode
type Output = SslVerifyMode
§impl Sub for X509CheckFlags
impl Sub for X509CheckFlags
type Output = X509CheckFlags
§impl Sub for X509VerifyFlags
impl Sub for X509VerifyFlags
type Output = X509VerifyFlags
1.74.0 (const: unstable) · Source§impl Sub for Saturating<i128>
impl Sub for Saturating<i128>
type Output = Saturating<i128>
1.74.0 (const: unstable) · Source§impl Sub for Saturating<isize>
impl Sub for Saturating<isize>
type Output = Saturating<isize>
1.74.0 (const: unstable) · Source§impl Sub for Saturating<u128>
impl Sub for Saturating<u128>
type Output = Saturating<u128>
1.74.0 (const: unstable) · Source§impl Sub for Saturating<usize>
impl Sub for Saturating<usize>
type Output = Saturating<usize>
§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 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 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 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 Zoned
Computes the span of time between two zoned datetimes.
impl Sub for 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].
Using this implementation will result in consuming the Zoned value. Since
it is not Copy, this will prevent further use. If this is undesirable,
consider using the trait implementation for &Zoned, Zoned::since,
Zoned::until or cloning the Zoned value.
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<i8>> for &Saturating<i8>
impl Sub<&Saturating<i8>> for &Saturating<i8>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<i8>> for Saturating<i8>
impl Sub<&Saturating<i8>> for Saturating<i8>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<i16>> for &Saturating<i16>
impl Sub<&Saturating<i16>> for &Saturating<i16>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<i16>> for Saturating<i16>
impl Sub<&Saturating<i16>> for Saturating<i16>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<i32>> for &Saturating<i32>
impl Sub<&Saturating<i32>> for &Saturating<i32>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<i32>> for Saturating<i32>
impl Sub<&Saturating<i32>> for Saturating<i32>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<i64>> for &Saturating<i64>
impl Sub<&Saturating<i64>> for &Saturating<i64>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<i64>> for Saturating<i64>
impl Sub<&Saturating<i64>> for Saturating<i64>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<i128>> for &Saturating<i128>
impl Sub<&Saturating<i128>> for &Saturating<i128>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<i128>> for Saturating<i128>
impl Sub<&Saturating<i128>> for Saturating<i128>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<isize>> for &Saturating<isize>
impl Sub<&Saturating<isize>> for &Saturating<isize>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<isize>> for Saturating<isize>
impl Sub<&Saturating<isize>> for Saturating<isize>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<u8>> for &Saturating<u8>
impl Sub<&Saturating<u8>> for &Saturating<u8>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<u8>> for Saturating<u8>
impl Sub<&Saturating<u8>> for Saturating<u8>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<u16>> for &Saturating<u16>
impl Sub<&Saturating<u16>> for &Saturating<u16>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<u16>> for Saturating<u16>
impl Sub<&Saturating<u16>> for Saturating<u16>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<u32>> for &Saturating<u32>
impl Sub<&Saturating<u32>> for &Saturating<u32>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<u32>> for Saturating<u32>
impl Sub<&Saturating<u32>> for Saturating<u32>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<u64>> for &Saturating<u64>
impl Sub<&Saturating<u64>> for &Saturating<u64>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<u64>> for Saturating<u64>
impl Sub<&Saturating<u64>> for Saturating<u64>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<u128>> for &Saturating<u128>
impl Sub<&Saturating<u128>> for &Saturating<u128>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<u128>> for Saturating<u128>
impl Sub<&Saturating<u128>> for Saturating<u128>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<usize>> for &Saturating<usize>
impl Sub<&Saturating<usize>> for &Saturating<usize>
1.74.0 (const: unstable) · Source§impl Sub<&Saturating<usize>> for Saturating<usize>
impl Sub<&Saturating<usize>> for Saturating<usize>
1.74.0 (const: unstable) · Source§impl Sub<Saturating<i8>> for &Saturating<i8>
impl Sub<Saturating<i8>> for &Saturating<i8>
1.74.0 (const: unstable) · Source§impl Sub<Saturating<i16>> for &Saturating<i16>
impl Sub<Saturating<i16>> for &Saturating<i16>
1.74.0 (const: unstable) · Source§impl Sub<Saturating<i32>> for &Saturating<i32>
impl Sub<Saturating<i32>> for &Saturating<i32>
1.74.0 (const: unstable) · Source§impl Sub<Saturating<i64>> for &Saturating<i64>
impl Sub<Saturating<i64>> for &Saturating<i64>
1.74.0 (const: unstable) · Source§impl Sub<Saturating<i128>> for &Saturating<i128>
impl Sub<Saturating<i128>> for &Saturating<i128>
1.74.0 (const: unstable) · Source§impl Sub<Saturating<isize>> for &Saturating<isize>
impl Sub<Saturating<isize>> for &Saturating<isize>
1.74.0 (const: unstable) · Source§impl Sub<Saturating<u8>> for &Saturating<u8>
impl Sub<Saturating<u8>> for &Saturating<u8>
1.74.0 (const: unstable) · Source§impl Sub<Saturating<u16>> for &Saturating<u16>
impl Sub<Saturating<u16>> for &Saturating<u16>
1.74.0 (const: unstable) · Source§impl Sub<Saturating<u32>> for &Saturating<u32>
impl Sub<Saturating<u32>> for &Saturating<u32>
1.74.0 (const: unstable) · Source§impl Sub<Saturating<u64>> for &Saturating<u64>
impl Sub<Saturating<u64>> for &Saturating<u64>
1.74.0 (const: unstable) · Source§impl Sub<Saturating<u128>> for &Saturating<u128>
impl Sub<Saturating<u128>> for &Saturating<u128>
1.74.0 (const: unstable) · Source§impl Sub<Saturating<usize>> for &Saturating<usize>
impl Sub<Saturating<usize>> for &Saturating<usize>
1.8.0 · Source§impl Sub<Duration> for SystemTime
impl Sub<Duration> for SystemTime
type Output = SystemTime
§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 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].
§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 Zoned
Subtracts an unsigned duration of time from a zoned datetime.
impl Sub<Duration> for 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].
Using this implementation will result in consuming the Zoned value. Since
it is not Copy, this will prevent further use. If this is undesirable,
consider using the trait implementation for &Zoned, Zoned::checked_sub
or cloning the Zoned value.
§impl Sub<SystemTime> for OffsetDateTime
impl Sub<SystemTime> for OffsetDateTime
§impl Sub<SystemTime> for UtcDateTime
impl Sub<SystemTime> for UtcDateTime
§impl Sub<Duration> for SystemTime
Available on crate feature std only.
impl Sub<Duration> for SystemTime
std only.type Output = SystemTime
§impl Sub<OffsetDateTime> for SystemTime
impl Sub<OffsetDateTime> for SystemTime
§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 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<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 Zoned
Subtracts a signed duration of time from a zoned datetime.
impl Sub<SignedDuration> for 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].
Using this implementation will result in consuming the Zoned value. Since
it is not Copy, this will prevent further use. If this is undesirable,
consider using the trait implementation for &Zoned, Zoned::checked_sub
or cloning the Zoned value.
§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 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<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<UtcDateTime> for SystemTime
impl Sub<UtcDateTime> for SystemTime
§impl<'a> Sub for &'a Zoned
Computes the span of time between two borrowed zoned datetimes.
impl<'a> Sub for &'a Zoned
Computes the span of time between two borrowed 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<Duration> for &'a Zoned
Subtracts an unsigned duration of time from a borrowed zoned datetime.
impl<'a> Sub<Duration> for &'a Zoned
Subtracts an unsigned duration of time from a borrowed zoned datetime.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Zoned::checked_sub].
§impl<'a> Sub<SignedDuration> for &'a Zoned
Subtracts a signed duration of time from a borrowed zoned datetime.
impl<'a> Sub<SignedDuration> for &'a Zoned
Subtracts a signed duration of time from a borrowed 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 borrowed zoned datetime.
impl<'a> Sub<Span> for &'a Zoned
Subtracts a span of time from a borrowed zoned datetime.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Zoned::checked_sub].
§impl<'a> Sub<Span> for Zoned
Subtracts a span of time from a zoned datetime.
impl<'a> Sub<Span> for 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].
Using this implementation will result in consuming the Zoned value. Since
it is not Copy, this will prevent further use. If this is undesirable,
consider using the trait implementation for &Zoned, Zoned::checked_sub
or cloning the Zoned value.
1.0.0 · Source§impl<T, S> Sub<&HashSet<T, S>> for &rama::crypto::dep::x509_parser::prelude::asn1_rs::nom::lib::std::collections::HashSet<T, S>
impl<T, S> Sub<&HashSet<T, S>> for &rama::crypto::dep::x509_parser::prelude::asn1_rs::nom::lib::std::collections::HashSet<T, S>
Source§impl<Ul, Bl, Ur> Sub<Ur> for UInt<Ul, Bl>
Subtracting unsigned integers. We just do our PrivateSub and then Trim the output.
impl<Ul, Bl, Ur> Sub<Ur> for UInt<Ul, Bl>
Subtracting unsigned integers. We just do our PrivateSub and then Trim the output.