pub trait Rem<Rhs = Self> {
type Output;
// Required method
fn rem(self, rhs: Rhs) -> Self::Output;
}
Expand description
The remainder operator %
.
Note that Rhs
is Self
by default, but this is not mandatory.
§Examples
This example implements Rem
on a SplitSlice
object. After Rem
is
implemented, one can use the %
operator to find out what the remaining
elements of the slice would be after splitting it into equal slices of a
given length.
use std::ops::Rem;
#[derive(PartialEq, Debug)]
struct SplitSlice<'a, T> {
slice: &'a [T],
}
impl<'a, T> Rem<usize> for SplitSlice<'a, T> {
type Output = Self;
fn rem(self, modulus: usize) -> Self::Output {
let len = self.slice.len();
let rem = len % modulus;
let start = len - rem;
Self {slice: &self.slice[start..]}
}
}
// If we were to divide &[0, 1, 2, 3, 4, 5, 6, 7] into slices of size 3,
// the remainder would be &[6, 7].
assert_eq!(SplitSlice { slice: &[0, 1, 2, 3, 4, 5, 6, 7] } % 3,
SplitSlice { slice: &[6, 7] });
Required Associated Types§
Required Methods§
Implementors§
1.0.0 · Source§impl Rem for f16
The remainder from the division of two floats.
impl Rem for f16
The remainder from the division of two floats.
The remainder has the same sign as the dividend and is computed as:
x - (x / y).trunc() * y
.
§Examples
let x: f32 = 50.50;
let y: f32 = 8.125;
let remainder = x - (x / y).trunc() * y;
// The answer to both operations is 1.75
assert_eq!(x % y, remainder);
1.0.0 · Source§impl Rem for f32
The remainder from the division of two floats.
impl Rem for f32
The remainder from the division of two floats.
The remainder has the same sign as the dividend and is computed as:
x - (x / y).trunc() * y
.
§Examples
let x: f32 = 50.50;
let y: f32 = 8.125;
let remainder = x - (x / y).trunc() * y;
// The answer to both operations is 1.75
assert_eq!(x % y, remainder);
1.0.0 · Source§impl Rem for f64
The remainder from the division of two floats.
impl Rem for f64
The remainder from the division of two floats.
The remainder has the same sign as the dividend and is computed as:
x - (x / y).trunc() * y
.
§Examples
let x: f32 = 50.50;
let y: f32 = 8.125;
let remainder = x - (x / y).trunc() * y;
// The answer to both operations is 1.75
assert_eq!(x % y, remainder);
1.0.0 · Source§impl Rem for f128
The remainder from the division of two floats.
impl Rem for f128
The remainder from the division of two floats.
The remainder has the same sign as the dividend and is computed as:
x - (x / y).trunc() * y
.
§Examples
let x: f32 = 50.50;
let y: f32 = 8.125;
let remainder = x - (x / y).trunc() * y;
// The answer to both operations is 1.75
assert_eq!(x % y, remainder);
1.0.0 · Source§impl Rem for i8
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
impl Rem for i8
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
§Panics
This operation will panic if other == 0
or if self / other
results in overflow.
1.0.0 · Source§impl Rem for i16
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
impl Rem for i16
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
§Panics
This operation will panic if other == 0
or if self / other
results in overflow.
1.0.0 · Source§impl Rem for i32
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
impl Rem for i32
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
§Panics
This operation will panic if other == 0
or if self / other
results in overflow.
1.0.0 · Source§impl Rem for i64
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
impl Rem for i64
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
§Panics
This operation will panic if other == 0
or if self / other
results in overflow.
1.0.0 · Source§impl Rem for i128
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
impl Rem for i128
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
§Panics
This operation will panic if other == 0
or if self / other
results in overflow.
1.0.0 · Source§impl Rem for isize
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
impl Rem for isize
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
§Panics
This operation will panic if other == 0
or if self / other
results in overflow.
1.0.0 · Source§impl Rem for u8
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
impl Rem for u8
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
§Panics
This operation will panic if other == 0
.
1.0.0 · Source§impl Rem for u16
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
impl Rem for u16
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
§Panics
This operation will panic if other == 0
.
1.0.0 · Source§impl Rem for u32
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
impl Rem for u32
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
§Panics
This operation will panic if other == 0
.
1.0.0 · Source§impl Rem for u64
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
impl Rem for u64
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
§Panics
This operation will panic if other == 0
.
1.0.0 · Source§impl Rem for u128
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
impl Rem for u128
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
§Panics
This operation will panic if other == 0
.
1.0.0 · Source§impl Rem for usize
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
impl Rem for usize
This operation satisfies n % d == n - (n / d) * d
. The
result has the same sign as the left operand.
§Panics
This operation will panic if other == 0
.
Source§impl Rem for IntervalDayTime
impl Rem for IntervalDayTime
type Output = IntervalDayTime
Source§impl Rem for IntervalMonthDayNano
impl Rem for IntervalMonthDayNano
1.74.0 · Source§impl Rem for Saturating<i8>
impl Rem for Saturating<i8>
type Output = Saturating<i8>
1.74.0 · Source§impl Rem for Saturating<i16>
impl Rem for Saturating<i16>
type Output = Saturating<i16>
1.74.0 · Source§impl Rem for Saturating<i32>
impl Rem for Saturating<i32>
type Output = Saturating<i32>
1.74.0 · Source§impl Rem for Saturating<i64>
impl Rem for Saturating<i64>
type Output = Saturating<i64>
1.74.0 · Source§impl Rem for Saturating<i128>
impl Rem for Saturating<i128>
type Output = Saturating<i128>
1.74.0 · Source§impl Rem for Saturating<isize>
impl Rem for Saturating<isize>
type Output = Saturating<isize>
1.74.0 · Source§impl Rem for Saturating<u8>
impl Rem for Saturating<u8>
type Output = Saturating<u8>
1.74.0 · Source§impl Rem for Saturating<u16>
impl Rem for Saturating<u16>
type Output = Saturating<u16>
1.74.0 · Source§impl Rem for Saturating<u32>
impl Rem for Saturating<u32>
type Output = Saturating<u32>
1.74.0 · Source§impl Rem for Saturating<u64>
impl Rem for Saturating<u64>
type Output = Saturating<u64>
1.74.0 · Source§impl Rem for Saturating<u128>
impl Rem for Saturating<u128>
type Output = Saturating<u128>
1.74.0 · Source§impl Rem for Saturating<usize>
impl Rem for Saturating<usize>
type Output = Saturating<usize>
Source§impl Rem for BigDecimal
impl Rem for BigDecimal
type Output = BigDecimal
1.74.0 · Source§impl Rem<&Saturating<i8>> for &Saturating<i8>
impl Rem<&Saturating<i8>> for &Saturating<i8>
1.74.0 · Source§impl Rem<&Saturating<i8>> for Saturating<i8>
impl Rem<&Saturating<i8>> for Saturating<i8>
1.74.0 · Source§impl Rem<&Saturating<i16>> for &Saturating<i16>
impl Rem<&Saturating<i16>> for &Saturating<i16>
1.74.0 · Source§impl Rem<&Saturating<i16>> for Saturating<i16>
impl Rem<&Saturating<i16>> for Saturating<i16>
1.74.0 · Source§impl Rem<&Saturating<i32>> for &Saturating<i32>
impl Rem<&Saturating<i32>> for &Saturating<i32>
1.74.0 · Source§impl Rem<&Saturating<i32>> for Saturating<i32>
impl Rem<&Saturating<i32>> for Saturating<i32>
1.74.0 · Source§impl Rem<&Saturating<i64>> for &Saturating<i64>
impl Rem<&Saturating<i64>> for &Saturating<i64>
1.74.0 · Source§impl Rem<&Saturating<i64>> for Saturating<i64>
impl Rem<&Saturating<i64>> for Saturating<i64>
1.74.0 · Source§impl Rem<&Saturating<i128>> for &Saturating<i128>
impl Rem<&Saturating<i128>> for &Saturating<i128>
1.74.0 · Source§impl Rem<&Saturating<i128>> for Saturating<i128>
impl Rem<&Saturating<i128>> for Saturating<i128>
1.74.0 · Source§impl Rem<&Saturating<isize>> for &Saturating<isize>
impl Rem<&Saturating<isize>> for &Saturating<isize>
1.74.0 · Source§impl Rem<&Saturating<isize>> for Saturating<isize>
impl Rem<&Saturating<isize>> for Saturating<isize>
1.74.0 · Source§impl Rem<&Saturating<u8>> for &Saturating<u8>
impl Rem<&Saturating<u8>> for &Saturating<u8>
1.74.0 · Source§impl Rem<&Saturating<u8>> for Saturating<u8>
impl Rem<&Saturating<u8>> for Saturating<u8>
1.74.0 · Source§impl Rem<&Saturating<u16>> for &Saturating<u16>
impl Rem<&Saturating<u16>> for &Saturating<u16>
1.74.0 · Source§impl Rem<&Saturating<u16>> for Saturating<u16>
impl Rem<&Saturating<u16>> for Saturating<u16>
1.74.0 · Source§impl Rem<&Saturating<u32>> for &Saturating<u32>
impl Rem<&Saturating<u32>> for &Saturating<u32>
1.74.0 · Source§impl Rem<&Saturating<u32>> for Saturating<u32>
impl Rem<&Saturating<u32>> for Saturating<u32>
1.74.0 · Source§impl Rem<&Saturating<u64>> for &Saturating<u64>
impl Rem<&Saturating<u64>> for &Saturating<u64>
1.74.0 · Source§impl Rem<&Saturating<u64>> for Saturating<u64>
impl Rem<&Saturating<u64>> for Saturating<u64>
1.74.0 · Source§impl Rem<&Saturating<u128>> for &Saturating<u128>
impl Rem<&Saturating<u128>> for &Saturating<u128>
1.74.0 · Source§impl Rem<&Saturating<u128>> for Saturating<u128>
impl Rem<&Saturating<u128>> for Saturating<u128>
1.74.0 · Source§impl Rem<&Saturating<usize>> for &Saturating<usize>
impl Rem<&Saturating<usize>> for &Saturating<usize>
1.74.0 · Source§impl Rem<&Saturating<usize>> for Saturating<usize>
impl Rem<&Saturating<usize>> for Saturating<usize>
Source§impl Rem<&BigDecimal> for &BigDecimal
impl Rem<&BigDecimal> for &BigDecimal
type Output = BigDecimal
Source§impl Rem<&BigDecimal> for BigDecimal
impl Rem<&BigDecimal> for BigDecimal
type Output = BigDecimal
Source§impl Rem<BigDecimal> for &BigDecimal
impl Rem<BigDecimal> for &BigDecimal
type Output = BigDecimal
Source§impl<'a> Rem<&'a IntervalDayTime> for IntervalDayTime
impl<'a> Rem<&'a IntervalDayTime> for IntervalDayTime
type Output = IntervalDayTime
Source§impl<'a> Rem<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Rem<&'a IntervalMonthDayNano> for IntervalMonthDayNano
Source§impl<'a> Rem<IntervalDayTime> for &'a IntervalDayTime
impl<'a> Rem<IntervalDayTime> for &'a IntervalDayTime
type Output = IntervalDayTime
Source§impl<'a> Rem<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Rem<IntervalMonthDayNano> for &'a IntervalMonthDayNano
1.74.0 · Source§impl<'a> Rem<Saturating<i8>> for &'a Saturating<i8>
impl<'a> Rem<Saturating<i8>> for &'a Saturating<i8>
1.74.0 · Source§impl<'a> Rem<Saturating<i16>> for &'a Saturating<i16>
impl<'a> Rem<Saturating<i16>> for &'a Saturating<i16>
1.74.0 · Source§impl<'a> Rem<Saturating<i32>> for &'a Saturating<i32>
impl<'a> Rem<Saturating<i32>> for &'a Saturating<i32>
1.74.0 · Source§impl<'a> Rem<Saturating<i64>> for &'a Saturating<i64>
impl<'a> Rem<Saturating<i64>> for &'a Saturating<i64>
1.74.0 · Source§impl<'a> Rem<Saturating<i128>> for &'a Saturating<i128>
impl<'a> Rem<Saturating<i128>> for &'a Saturating<i128>
1.74.0 · Source§impl<'a> Rem<Saturating<isize>> for &'a Saturating<isize>
impl<'a> Rem<Saturating<isize>> for &'a Saturating<isize>
1.74.0 · Source§impl<'a> Rem<Saturating<u8>> for &'a Saturating<u8>
impl<'a> Rem<Saturating<u8>> for &'a Saturating<u8>
1.74.0 · Source§impl<'a> Rem<Saturating<u16>> for &'a Saturating<u16>
impl<'a> Rem<Saturating<u16>> for &'a Saturating<u16>
1.74.0 · Source§impl<'a> Rem<Saturating<u32>> for &'a Saturating<u32>
impl<'a> Rem<Saturating<u32>> for &'a Saturating<u32>
1.74.0 · Source§impl<'a> Rem<Saturating<u64>> for &'a Saturating<u64>
impl<'a> Rem<Saturating<u64>> for &'a Saturating<u64>
1.74.0 · Source§impl<'a> Rem<Saturating<u128>> for &'a Saturating<u128>
impl<'a> Rem<Saturating<u128>> for &'a Saturating<u128>
1.74.0 · Source§impl<'a> Rem<Saturating<usize>> for &'a Saturating<usize>
impl<'a> Rem<Saturating<usize>> for &'a Saturating<usize>
Source§impl<'a, 'b> Rem<&'b IntervalDayTime> for &'a IntervalDayTime
impl<'a, 'b> Rem<&'b IntervalDayTime> for &'a IntervalDayTime
type Output = IntervalDayTime
Source§impl<'a, 'b> Rem<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a, 'b> Rem<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
Source§impl<'a, T> Rem for &'a OrderedFloat<T>
impl<'a, T> Rem for &'a OrderedFloat<T>
Source§impl<'a, T> Rem<&'a OrderedFloat<T>> for OrderedFloat<T>
impl<'a, T> Rem<&'a OrderedFloat<T>> for OrderedFloat<T>
Source§impl<'a, T> Rem<&'a T> for &'a OrderedFloat<T>
impl<'a, T> Rem<&'a T> for &'a OrderedFloat<T>
Source§impl<'a, T> Rem<&'a T> for OrderedFloat<T>
impl<'a, T> Rem<&'a T> for OrderedFloat<T>
Source§impl<'a, T> Rem<OrderedFloat<T>> for &'a OrderedFloat<T>
impl<'a, T> Rem<OrderedFloat<T>> for &'a OrderedFloat<T>
Source§impl<'a, T> Rem<T> for &'a OrderedFloat<T>
impl<'a, T> Rem<T> for &'a OrderedFloat<T>
Source§impl<T> Rem for OrderedFloat<T>where
T: Rem,
impl<T> Rem for OrderedFloat<T>where
T: Rem,
Source§impl<T> Rem<T> for NotNan<T>where
T: Float,
Calculates %
with a float directly.
impl<T> Rem<T> for NotNan<T>where
T: Float,
Calculates %
with a float directly.
Panics if the provided value is NaN or the computation results in NaN