# Trait core::ops::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] });``````
Run

## Required Associated Types§

1.0.0 · source

#### type Output

The resulting type after applying the `%` operator.

## Required Methods§

1.0.0 · source

#### fn rem(self, rhs: Rhs) -> Self::Output

Performs the `%` operation.

##### §Example
``assert_eq!(12 % 10, 2);``
Run

## Implementors§

1.0.0 · source§

### 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);``````
Run
§

1.0.0 · source§

### 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);``````
Run
§

1.0.0 · source§

### 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);``````
Run
§

1.0.0 · source§

### 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);``````
Run
§

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.

#### §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.

#### §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.

#### §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.

#### §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.

#### §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.

#### §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.

#### §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.

#### §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.

#### §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.

#### §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.

#### §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.

#### §Panics

This operation will panic if `other == 0`.

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.7.0 · source§

§

1.7.0 · source§

§

1.7.0 · source§

§

1.7.0 · source§

§

1.7.0 · source§

§

1.7.0 · source§

§

1.7.0 · source§

§

1.7.0 · source§

§

1.7.0 · source§

§

1.7.0 · source§

§

1.7.0 · source§

§

1.7.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.51.0 · source§

§

1.51.0 · source§

§

1.51.0 · source§

§

1.51.0 · source§

§

1.51.0 · source§

§

1.51.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.0.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.74.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

1.14.0 · source§

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

§