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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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 (const: unstable) ยท 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.
1.74.0 (const: unstable) ยท Sourceยงimpl Rem for Saturating<i16>
impl Rem for Saturating<i16>
type Output = Saturating<i16>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem for Saturating<i32>
impl Rem for Saturating<i32>
type Output = Saturating<i32>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem for Saturating<i64>
impl Rem for Saturating<i64>
type Output = Saturating<i64>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem for Saturating<i128>
impl Rem for Saturating<i128>
type Output = Saturating<i128>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem for Saturating<isize>
impl Rem for Saturating<isize>
type Output = Saturating<isize>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem for Saturating<u16>
impl Rem for Saturating<u16>
type Output = Saturating<u16>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem for Saturating<u32>
impl Rem for Saturating<u32>
type Output = Saturating<u32>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem for Saturating<u64>
impl Rem for Saturating<u64>
type Output = Saturating<u64>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem for Saturating<u128>
impl Rem for Saturating<u128>
type Output = Saturating<u128>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem for Saturating<usize>
impl Rem for Saturating<usize>
type Output = Saturating<usize>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<i8>> for &Saturating<i8>
impl Rem<&Saturating<i8>> for &Saturating<i8>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<i8>> for Saturating<i8>
impl Rem<&Saturating<i8>> for Saturating<i8>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<i16>> for &Saturating<i16>
impl Rem<&Saturating<i16>> for &Saturating<i16>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<i16>> for Saturating<i16>
impl Rem<&Saturating<i16>> for Saturating<i16>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<i32>> for &Saturating<i32>
impl Rem<&Saturating<i32>> for &Saturating<i32>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<i32>> for Saturating<i32>
impl Rem<&Saturating<i32>> for Saturating<i32>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<i64>> for &Saturating<i64>
impl Rem<&Saturating<i64>> for &Saturating<i64>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<i64>> for Saturating<i64>
impl Rem<&Saturating<i64>> for Saturating<i64>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<i128>> for &Saturating<i128>
impl Rem<&Saturating<i128>> for &Saturating<i128>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<i128>> for Saturating<i128>
impl Rem<&Saturating<i128>> for Saturating<i128>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<isize>> for &Saturating<isize>
impl Rem<&Saturating<isize>> for &Saturating<isize>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<isize>> for Saturating<isize>
impl Rem<&Saturating<isize>> for Saturating<isize>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<u8>> for &Saturating<u8>
impl Rem<&Saturating<u8>> for &Saturating<u8>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<u8>> for Saturating<u8>
impl Rem<&Saturating<u8>> for Saturating<u8>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<u16>> for &Saturating<u16>
impl Rem<&Saturating<u16>> for &Saturating<u16>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<u16>> for Saturating<u16>
impl Rem<&Saturating<u16>> for Saturating<u16>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<u32>> for &Saturating<u32>
impl Rem<&Saturating<u32>> for &Saturating<u32>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<u32>> for Saturating<u32>
impl Rem<&Saturating<u32>> for Saturating<u32>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<u64>> for &Saturating<u64>
impl Rem<&Saturating<u64>> for &Saturating<u64>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<u64>> for Saturating<u64>
impl Rem<&Saturating<u64>> for Saturating<u64>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<u128>> for &Saturating<u128>
impl Rem<&Saturating<u128>> for &Saturating<u128>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<u128>> for Saturating<u128>
impl Rem<&Saturating<u128>> for Saturating<u128>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<usize>> for &Saturating<usize>
impl Rem<&Saturating<usize>> for &Saturating<usize>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<&Saturating<usize>> for Saturating<usize>
impl Rem<&Saturating<usize>> for Saturating<usize>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<Saturating<i8>> for &Saturating<i8>
impl Rem<Saturating<i8>> for &Saturating<i8>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<Saturating<i16>> for &Saturating<i16>
impl Rem<Saturating<i16>> for &Saturating<i16>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<Saturating<i32>> for &Saturating<i32>
impl Rem<Saturating<i32>> for &Saturating<i32>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<Saturating<i64>> for &Saturating<i64>
impl Rem<Saturating<i64>> for &Saturating<i64>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<Saturating<i128>> for &Saturating<i128>
impl Rem<Saturating<i128>> for &Saturating<i128>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<Saturating<isize>> for &Saturating<isize>
impl Rem<Saturating<isize>> for &Saturating<isize>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<Saturating<u8>> for &Saturating<u8>
impl Rem<Saturating<u8>> for &Saturating<u8>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<Saturating<u16>> for &Saturating<u16>
impl Rem<Saturating<u16>> for &Saturating<u16>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<Saturating<u32>> for &Saturating<u32>
impl Rem<Saturating<u32>> for &Saturating<u32>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<Saturating<u64>> for &Saturating<u64>
impl Rem<Saturating<u64>> for &Saturating<u64>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<Saturating<u128>> for &Saturating<u128>
impl Rem<Saturating<u128>> for &Saturating<u128>
1.74.0 (const: unstable) ยท Sourceยงimpl Rem<Saturating<usize>> for &Saturating<usize>
impl Rem<Saturating<usize>> for &Saturating<usize>
ยง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
ยงimpl<T> Rem<T> for NotNan<T>where
T: FloatCore,
Calculates % with a float directly.
impl<T> Rem<T> for NotNan<T>where
T: FloatCore,
Calculates % with a float directly.
This returns a T and not a NotNan<T> because if the RHS is NaN, this will be NaN