Trait snarkvm_console_program::string::Rem
1.0.0 · source · 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§
source§impl Rem for f32
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);
source§impl Rem for f64
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);
source§impl Rem for i8
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.
source§impl Rem for i16
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.
source§impl Rem for i32
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.
source§impl Rem for i64
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.
source§impl Rem for i128
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.
source§impl Rem for isize
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.
source§impl Rem for u8
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
.
source§impl Rem for u16
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
.
source§impl Rem for u32
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
.
source§impl Rem for u64
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
.
source§impl Rem for u128
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
.
source§impl Rem for usize
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 · 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>
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>
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<'lhs, 'rhs, T, const LANES: usize> Rem<&'rhs Simd<T, LANES>> for &'lhs Simd<T, LANES>where
T: SimdElement,
Simd<T, LANES>: Rem<Output = Simd<T, LANES>>,
LaneCount<LANES>: SupportedLaneCount,
impl<'lhs, 'rhs, T, const LANES: usize> Rem<&'rhs Simd<T, LANES>> for &'lhs Simd<T, LANES>where T: SimdElement, Simd<T, LANES>: Rem<Output = Simd<T, LANES>>, LaneCount<LANES>: SupportedLaneCount,
§impl<E, I> Rem for Integer<E, I>where
E: Environment,
I: IntegerType,
impl<E, I> Rem for Integer<E, I>where E: Environment, I: IntegerType,
§impl<E, I> Rem<&Integer<E, I>> for Integer<E, I>where
E: Environment,
I: IntegerType,
impl<E, I> Rem<&Integer<E, I>> for Integer<E, I>where E: Environment, I: IntegerType,
source§impl<T, const LANES: usize> Rem<&Simd<T, LANES>> for Simd<T, LANES>where
T: SimdElement,
Simd<T, LANES>: Rem<Output = Simd<T, LANES>>,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> Rem<&Simd<T, LANES>> for Simd<T, LANES>where T: SimdElement, Simd<T, LANES>: Rem<Output = Simd<T, LANES>>, LaneCount<LANES>: SupportedLaneCount,
source§impl<T, const LANES: usize> Rem<Simd<T, LANES>> for &Simd<T, LANES>where
T: SimdElement,
Simd<T, LANES>: Rem<Output = Simd<T, LANES>>,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> Rem<Simd<T, LANES>> for &Simd<T, LANES>where T: SimdElement, Simd<T, LANES>: Rem<Output = Simd<T, LANES>>, LaneCount<LANES>: SupportedLaneCount,
source§impl<Ul, Bl, Ur, Br> Rem<UInt<Ur, Br>> for UInt<Ul, Bl>where
Ul: Unsigned,
Bl: Bit,
Ur: Unsigned,
Br: Bit,
UInt<Ul, Bl>: Len,
<UInt<Ul, Bl> as Len>::Output: Sub<B1>,
(): PrivateDiv<UInt<Ul, Bl>, UInt<Ur, Br>, UTerm, UTerm, <<UInt<Ul, Bl> as Len>::Output as Sub<B1>>::Output>,
impl<Ul, Bl, Ur, Br> Rem<UInt<Ur, Br>> for UInt<Ul, Bl>where Ul: Unsigned, Bl: Bit, Ur: Unsigned, Br: Bit, UInt<Ul, Bl>: Len, <UInt<Ul, Bl> as Len>::Output: Sub<B1>, (): PrivateDiv<UInt<Ul, Bl>, UInt<Ur, Br>, UTerm, UTerm, <<UInt<Ul, Bl> as Len>::Output as Sub<B1>>::Output>,
source§impl<Ul, Ur> Rem<NInt<Ur>> for NInt<Ul>where
Ul: Unsigned + NonZero + Rem<Ur>,
Ur: Unsigned + NonZero,
NInt<Ul>: PrivateRem<<Ul as Rem<Ur>>::Output, NInt<Ur>>,
impl<Ul, Ur> Rem<NInt<Ur>> for NInt<Ul>where Ul: Unsigned + NonZero + Rem<Ur>, Ur: Unsigned + NonZero, NInt<Ul>: PrivateRem<<Ul as Rem<Ur>>::Output, NInt<Ur>>,
$A<Ul> % $B<Ur> = $R<Ul % Ur>
source§impl<Ul, Ur> Rem<NInt<Ur>> for PInt<Ul>where
Ul: Unsigned + NonZero + Rem<Ur>,
Ur: Unsigned + NonZero,
PInt<Ul>: PrivateRem<<Ul as Rem<Ur>>::Output, NInt<Ur>>,
impl<Ul, Ur> Rem<NInt<Ur>> for PInt<Ul>where Ul: Unsigned + NonZero + Rem<Ur>, Ur: Unsigned + NonZero, PInt<Ul>: PrivateRem<<Ul as Rem<Ur>>::Output, NInt<Ur>>,
$A<Ul> % $B<Ur> = $R<Ul % Ur>
source§impl<Ul, Ur> Rem<PInt<Ur>> for NInt<Ul>where
Ul: Unsigned + NonZero + Rem<Ur>,
Ur: Unsigned + NonZero,
NInt<Ul>: PrivateRem<<Ul as Rem<Ur>>::Output, PInt<Ur>>,
impl<Ul, Ur> Rem<PInt<Ur>> for NInt<Ul>where Ul: Unsigned + NonZero + Rem<Ur>, Ur: Unsigned + NonZero, NInt<Ul>: PrivateRem<<Ul as Rem<Ur>>::Output, PInt<Ur>>,
$A<Ul> % $B<Ur> = $R<Ul % Ur>
source§impl<Ul, Ur> Rem<PInt<Ur>> for PInt<Ul>where
Ul: Unsigned + NonZero + Rem<Ur>,
Ur: Unsigned + NonZero,
PInt<Ul>: PrivateRem<<Ul as Rem<Ur>>::Output, PInt<Ur>>,
impl<Ul, Ur> Rem<PInt<Ur>> for PInt<Ul>where Ul: Unsigned + NonZero + Rem<Ur>, Ur: Unsigned + NonZero, PInt<Ul>: PrivateRem<<Ul as Rem<Ur>>::Output, PInt<Ur>>,
$A<Ul> % $B<Ur> = $R<Ul % Ur>