pub trait RemRoundingAssign<Rhs = Self> {
    // Required methods
    fn rem_trunc_assign(&mut self, rhs: Rhs);
    fn rem_ceil_assign(&mut self, rhs: Rhs);
    fn rem_floor_assign(&mut self, rhs: Rhs);
    fn rem_euc_assign(&mut self, rhs: Rhs);
}
Expand description

Compound assignment and rounding variants of the remainder operation.

§Examples

use rug::ops::RemRoundingAssign;
struct I(i32);
impl RemRoundingAssign<i32> for I {
    fn rem_trunc_assign(&mut self, rhs: i32) {
        self.0 %= rhs;
    }
    fn rem_ceil_assign(&mut self, rhs: i32) {
        let r = self.0 % rhs;
        let change = if rhs > 0 { r > 0 } else { r < 0 };
        self.0 = if change { r - rhs } else { r };
    }
    fn rem_floor_assign(&mut self, rhs: i32) {
        let r = self.0 % rhs;
        let change = if rhs > 0 { r < 0 } else { r > 0 };
        self.0 = if change { r + rhs } else { r };
    }
    fn rem_euc_assign(&mut self, rhs: i32) {
        let r = self.0 % rhs;
        self.0 = if r < 0 {
            if rhs < 0 {
                r - rhs
            } else {
                r + rhs
            }
        } else {
            r
        };
    }
}
let mut rem_floor = I(-10);
rem_floor.rem_floor_assign(3);
assert_eq!(rem_floor.0, 2);

Required Methods§

source

fn rem_trunc_assign(&mut self, rhs: Rhs)

Finds the remainder when the quotient is rounded towards zero.

source

fn rem_ceil_assign(&mut self, rhs: Rhs)

Finds the remainder when the quotient is rounded up.

source

fn rem_floor_assign(&mut self, rhs: Rhs)

Finds the remainder when the quotient is rounded down.

source

fn rem_euc_assign(&mut self, rhs: Rhs)

Finds the positive remainder from Euclidean division.

Implementations on Foreign Types§

source§

impl RemRoundingAssign for f32

source§

fn rem_trunc_assign(&mut self, rhs: f32)

source§

fn rem_ceil_assign(&mut self, rhs: f32)

source§

fn rem_floor_assign(&mut self, rhs: f32)

source§

fn rem_euc_assign(&mut self, rhs: f32)

source§

impl RemRoundingAssign for f64

source§

fn rem_trunc_assign(&mut self, rhs: f64)

source§

fn rem_ceil_assign(&mut self, rhs: f64)

source§

fn rem_floor_assign(&mut self, rhs: f64)

source§

fn rem_euc_assign(&mut self, rhs: f64)

source§

impl RemRoundingAssign for i8

source§

fn rem_trunc_assign(&mut self, rhs: i8)

source§

fn rem_ceil_assign(&mut self, rhs: i8)

source§

fn rem_floor_assign(&mut self, rhs: i8)

source§

fn rem_euc_assign(&mut self, rhs: i8)

source§

impl RemRoundingAssign for i16

source§

fn rem_trunc_assign(&mut self, rhs: i16)

source§

fn rem_ceil_assign(&mut self, rhs: i16)

source§

fn rem_floor_assign(&mut self, rhs: i16)

source§

fn rem_euc_assign(&mut self, rhs: i16)

source§

impl RemRoundingAssign for i32

source§

fn rem_trunc_assign(&mut self, rhs: i32)

source§

fn rem_ceil_assign(&mut self, rhs: i32)

source§

fn rem_floor_assign(&mut self, rhs: i32)

source§

fn rem_euc_assign(&mut self, rhs: i32)

source§

impl RemRoundingAssign for i64

source§

fn rem_trunc_assign(&mut self, rhs: i64)

source§

fn rem_ceil_assign(&mut self, rhs: i64)

source§

fn rem_floor_assign(&mut self, rhs: i64)

source§

fn rem_euc_assign(&mut self, rhs: i64)

source§

impl RemRoundingAssign for i128

source§

fn rem_trunc_assign(&mut self, rhs: i128)

source§

fn rem_ceil_assign(&mut self, rhs: i128)

source§

fn rem_floor_assign(&mut self, rhs: i128)

source§

fn rem_euc_assign(&mut self, rhs: i128)

source§

impl RemRoundingAssign for isize

source§

fn rem_trunc_assign(&mut self, rhs: isize)

source§

fn rem_ceil_assign(&mut self, rhs: isize)

source§

fn rem_floor_assign(&mut self, rhs: isize)

source§

fn rem_euc_assign(&mut self, rhs: isize)

source§

impl RemRoundingAssign<&f32> for f32

source§

fn rem_trunc_assign(&mut self, rhs: &f32)

source§

fn rem_ceil_assign(&mut self, rhs: &f32)

source§

fn rem_floor_assign(&mut self, rhs: &f32)

source§

fn rem_euc_assign(&mut self, rhs: &f32)

source§

impl RemRoundingAssign<&f64> for f64

source§

fn rem_trunc_assign(&mut self, rhs: &f64)

source§

fn rem_ceil_assign(&mut self, rhs: &f64)

source§

fn rem_floor_assign(&mut self, rhs: &f64)

source§

fn rem_euc_assign(&mut self, rhs: &f64)

source§

impl RemRoundingAssign<&i8> for i8

source§

fn rem_trunc_assign(&mut self, rhs: &i8)

source§

fn rem_ceil_assign(&mut self, rhs: &i8)

source§

fn rem_floor_assign(&mut self, rhs: &i8)

source§

fn rem_euc_assign(&mut self, rhs: &i8)

source§

impl RemRoundingAssign<&i16> for i16

source§

fn rem_trunc_assign(&mut self, rhs: &i16)

source§

fn rem_ceil_assign(&mut self, rhs: &i16)

source§

fn rem_floor_assign(&mut self, rhs: &i16)

source§

fn rem_euc_assign(&mut self, rhs: &i16)

source§

impl RemRoundingAssign<&i32> for i32

source§

fn rem_trunc_assign(&mut self, rhs: &i32)

source§

fn rem_ceil_assign(&mut self, rhs: &i32)

source§

fn rem_floor_assign(&mut self, rhs: &i32)

source§

fn rem_euc_assign(&mut self, rhs: &i32)

source§

impl RemRoundingAssign<&i64> for i64

source§

fn rem_trunc_assign(&mut self, rhs: &i64)

source§

fn rem_ceil_assign(&mut self, rhs: &i64)

source§

fn rem_floor_assign(&mut self, rhs: &i64)

source§

fn rem_euc_assign(&mut self, rhs: &i64)

source§

impl RemRoundingAssign<&i128> for i128

source§

fn rem_trunc_assign(&mut self, rhs: &i128)

source§

fn rem_ceil_assign(&mut self, rhs: &i128)

source§

fn rem_floor_assign(&mut self, rhs: &i128)

source§

fn rem_euc_assign(&mut self, rhs: &i128)

source§

impl RemRoundingAssign<&isize> for isize

source§

fn rem_trunc_assign(&mut self, rhs: &isize)

source§

fn rem_ceil_assign(&mut self, rhs: &isize)

source§

fn rem_floor_assign(&mut self, rhs: &isize)

source§

fn rem_euc_assign(&mut self, rhs: &isize)

Implementors§