Trait rug::ops::DivRoundingAssign [] [src]

pub trait DivRoundingAssign<Rhs = Self> {
    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); }

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

Performs division, rounding the quotient towards zero.

Performs division, rounding the quotient up.

Performs division, rounding the quotient down.

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

Implementations on Foreign Types

impl DivRoundingAssign for i8
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a i8> for i8
[src]

[src]

[src]

[src]

[src]

impl DivRoundingAssign for i16
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a i16> for i16
[src]

[src]

[src]

[src]

[src]

impl DivRoundingAssign for i32
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a i32> for i32
[src]

[src]

[src]

[src]

[src]

impl DivRoundingAssign for i64
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a i64> for i64
[src]

[src]

[src]

[src]

[src]

impl DivRoundingAssign for isize
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a isize> for isize
[src]

[src]

[src]

[src]

[src]

impl DivRoundingAssign for i128
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a i128> for i128
[src]

[src]

[src]

[src]

[src]

impl DivRoundingAssign for u8
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a u8> for u8
[src]

[src]

[src]

[src]

[src]

impl DivRoundingAssign for u16
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a u16> for u16
[src]

[src]

[src]

[src]

[src]

impl DivRoundingAssign for u32
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a u32> for u32
[src]

[src]

[src]

[src]

[src]

impl DivRoundingAssign for u64
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a u64> for u64
[src]

[src]

[src]

[src]

[src]

impl DivRoundingAssign for usize
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a usize> for usize
[src]

[src]

[src]

[src]

[src]

impl DivRoundingAssign for u128
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a u128> for u128
[src]

[src]

[src]

[src]

[src]

impl DivRoundingAssign for f32
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a f32> for f32
[src]

[src]

[src]

[src]

[src]

impl DivRoundingAssign for f64
[src]

[src]

[src]

[src]

[src]

impl<'a> DivRoundingAssign<&'a f64> for f64
[src]

[src]

[src]

[src]

[src]

Implementors