pub trait DivRoundingAssign<Rhs = Self> {
    // Required methods
    fn div_trunc_assign(&mut self, rhs: Rhs);
    fn div_ceil_assign(&mut self, rhs: Rhs);
    fn div_floor_assign(&mut self, rhs: Rhs);
    fn div_euc_assign(&mut self, rhs: Rhs);
}
Expand description

Compound assignment and rounding variants of division.

§Examples

use rug::ops::DivRoundingAssign;
struct I(i32);
impl DivRoundingAssign<i32> for I {
    fn div_trunc_assign(&mut self, rhs: i32) {
        self.0 /= rhs;
    }
    fn div_ceil_assign(&mut self, rhs: i32) {
        let (q, r) = (self.0 / rhs, self.0 % rhs);
        let change = if rhs > 0 { r > 0 } else { r < 0 };
        self.0 = if change { q + 1 } else { q };
    }
    fn div_floor_assign(&mut self, rhs: i32) {
        let (q, r) = (self.0 / rhs, self.0 % rhs);
        let change = if rhs > 0 { r < 0 } else { r > 0 };
        self.0 = if change { q - 1 } else { q };
    }
    fn div_euc_assign(&mut self, rhs: i32) {
        let (q, r) = (self.0 / rhs, self.0 % rhs);
        self.0 = if r < 0 {
            if rhs < 0 {
                q + 1
            } else {
                q - 1
            }
        } else {
            q
        };
    }
}
let mut div_floor = I(-10);
div_floor.div_floor_assign(3);
assert_eq!(div_floor.0, -4);

Required Methods§

source

fn div_trunc_assign(&mut self, rhs: Rhs)

Performs division, rounding the quotient towards zero.

source

fn div_ceil_assign(&mut self, rhs: Rhs)

Performs division, rounding the quotient up.

source

fn div_floor_assign(&mut self, rhs: Rhs)

Performs division, rounding the quotient down.

source

fn div_euc_assign(&mut self, rhs: Rhs)

Performs Euclidean division, rounding the quotient so that the remainder cannot be negative.

Implementations on Foreign Types§

source§

impl DivRoundingAssign for f32

source§

fn div_trunc_assign(&mut self, rhs: f32)

source§

fn div_ceil_assign(&mut self, rhs: f32)

source§

fn div_floor_assign(&mut self, rhs: f32)

source§

fn div_euc_assign(&mut self, rhs: f32)

source§

impl DivRoundingAssign for f64

source§

fn div_trunc_assign(&mut self, rhs: f64)

source§

fn div_ceil_assign(&mut self, rhs: f64)

source§

fn div_floor_assign(&mut self, rhs: f64)

source§

fn div_euc_assign(&mut self, rhs: f64)

source§

impl DivRoundingAssign for i8

source§

fn div_trunc_assign(&mut self, rhs: i8)

source§

fn div_ceil_assign(&mut self, rhs: i8)

source§

fn div_floor_assign(&mut self, rhs: i8)

source§

fn div_euc_assign(&mut self, rhs: i8)

source§

impl DivRoundingAssign for i16

source§

fn div_trunc_assign(&mut self, rhs: i16)

source§

fn div_ceil_assign(&mut self, rhs: i16)

source§

fn div_floor_assign(&mut self, rhs: i16)

source§

fn div_euc_assign(&mut self, rhs: i16)

source§

impl DivRoundingAssign for i32

source§

fn div_trunc_assign(&mut self, rhs: i32)

source§

fn div_ceil_assign(&mut self, rhs: i32)

source§

fn div_floor_assign(&mut self, rhs: i32)

source§

fn div_euc_assign(&mut self, rhs: i32)

source§

impl DivRoundingAssign for i64

source§

fn div_trunc_assign(&mut self, rhs: i64)

source§

fn div_ceil_assign(&mut self, rhs: i64)

source§

fn div_floor_assign(&mut self, rhs: i64)

source§

fn div_euc_assign(&mut self, rhs: i64)

source§

impl DivRoundingAssign for i128

source§

fn div_trunc_assign(&mut self, rhs: i128)

source§

fn div_ceil_assign(&mut self, rhs: i128)

source§

fn div_floor_assign(&mut self, rhs: i128)

source§

fn div_euc_assign(&mut self, rhs: i128)

source§

impl DivRoundingAssign for isize

source§

fn div_trunc_assign(&mut self, rhs: isize)

source§

fn div_ceil_assign(&mut self, rhs: isize)

source§

fn div_floor_assign(&mut self, rhs: isize)

source§

fn div_euc_assign(&mut self, rhs: isize)

source§

impl DivRoundingAssign for u8

source§

fn div_trunc_assign(&mut self, rhs: u8)

source§

fn div_ceil_assign(&mut self, rhs: u8)

source§

fn div_floor_assign(&mut self, rhs: u8)

source§

fn div_euc_assign(&mut self, rhs: u8)

source§

impl DivRoundingAssign for u16

source§

fn div_trunc_assign(&mut self, rhs: u16)

source§

fn div_ceil_assign(&mut self, rhs: u16)

source§

fn div_floor_assign(&mut self, rhs: u16)

source§

fn div_euc_assign(&mut self, rhs: u16)

source§

impl DivRoundingAssign for u32

source§

fn div_trunc_assign(&mut self, rhs: u32)

source§

fn div_ceil_assign(&mut self, rhs: u32)

source§

fn div_floor_assign(&mut self, rhs: u32)

source§

fn div_euc_assign(&mut self, rhs: u32)

source§

impl DivRoundingAssign for u64

source§

fn div_trunc_assign(&mut self, rhs: u64)

source§

fn div_ceil_assign(&mut self, rhs: u64)

source§

fn div_floor_assign(&mut self, rhs: u64)

source§

fn div_euc_assign(&mut self, rhs: u64)

source§

impl DivRoundingAssign for u128

source§

fn div_trunc_assign(&mut self, rhs: u128)

source§

fn div_ceil_assign(&mut self, rhs: u128)

source§

fn div_floor_assign(&mut self, rhs: u128)

source§

fn div_euc_assign(&mut self, rhs: u128)

source§

impl DivRoundingAssign for usize

source§

fn div_trunc_assign(&mut self, rhs: usize)

source§

fn div_ceil_assign(&mut self, rhs: usize)

source§

fn div_floor_assign(&mut self, rhs: usize)

source§

fn div_euc_assign(&mut self, rhs: usize)

source§

impl DivRoundingAssign<&f32> for f32

source§

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

source§

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

source§

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

source§

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

source§

impl DivRoundingAssign<&f64> for f64

source§

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

source§

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

source§

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

source§

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

source§

impl DivRoundingAssign<&i8> for i8

source§

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

source§

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

source§

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

source§

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

source§

impl DivRoundingAssign<&i16> for i16

source§

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

source§

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

source§

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

source§

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

source§

impl DivRoundingAssign<&i32> for i32

source§

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

source§

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

source§

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

source§

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

source§

impl DivRoundingAssign<&i64> for i64

source§

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

source§

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

source§

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

source§

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

source§

impl DivRoundingAssign<&i128> for i128

source§

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

source§

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

source§

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

source§

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

source§

impl DivRoundingAssign<&isize> for isize

source§

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

source§

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

source§

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

source§

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

source§

impl DivRoundingAssign<&u8> for u8

source§

fn div_trunc_assign(&mut self, rhs: &u8)

source§

fn div_ceil_assign(&mut self, rhs: &u8)

source§

fn div_floor_assign(&mut self, rhs: &u8)

source§

fn div_euc_assign(&mut self, rhs: &u8)

source§

impl DivRoundingAssign<&u16> for u16

source§

fn div_trunc_assign(&mut self, rhs: &u16)

source§

fn div_ceil_assign(&mut self, rhs: &u16)

source§

fn div_floor_assign(&mut self, rhs: &u16)

source§

fn div_euc_assign(&mut self, rhs: &u16)

source§

impl DivRoundingAssign<&u32> for u32

source§

fn div_trunc_assign(&mut self, rhs: &u32)

source§

fn div_ceil_assign(&mut self, rhs: &u32)

source§

fn div_floor_assign(&mut self, rhs: &u32)

source§

fn div_euc_assign(&mut self, rhs: &u32)

source§

impl DivRoundingAssign<&u64> for u64

source§

fn div_trunc_assign(&mut self, rhs: &u64)

source§

fn div_ceil_assign(&mut self, rhs: &u64)

source§

fn div_floor_assign(&mut self, rhs: &u64)

source§

fn div_euc_assign(&mut self, rhs: &u64)

source§

impl DivRoundingAssign<&u128> for u128

source§

fn div_trunc_assign(&mut self, rhs: &u128)

source§

fn div_ceil_assign(&mut self, rhs: &u128)

source§

fn div_floor_assign(&mut self, rhs: &u128)

source§

fn div_euc_assign(&mut self, rhs: &u128)

source§

impl DivRoundingAssign<&usize> for usize

source§

fn div_trunc_assign(&mut self, rhs: &usize)

source§

fn div_ceil_assign(&mut self, rhs: &usize)

source§

fn div_floor_assign(&mut self, rhs: &usize)

source§

fn div_euc_assign(&mut self, rhs: &usize)

Implementors§