Trait rug::ops::DivRounding [] [src]

pub trait DivRounding<Rhs = Self> {
    type Output;
    fn div_trunc(self, rhs: Rhs) -> Self::Output;
fn div_ceil(self, rhs: Rhs) -> Self::Output;
fn div_floor(self, rhs: Rhs) -> Self::Output;
fn div_euc(self, rhs: Rhs) -> Self::Output; }

Rounding variants of division.

Examples

use rug::ops::DivRounding;
struct I(i32);
impl DivRounding<i32> for I {
    type Output = i32;
    fn div_trunc(self, rhs: i32) -> i32 {
        self.0 / rhs
    }
    fn div_ceil(self, rhs: i32) -> i32 {
        let (q, r) = (self.0 / rhs, self.0 % rhs);
        let change = if rhs > 0 { r > 0 } else { r < 0 };
        if change { q + 1 } else { q }
    }
    fn div_floor(self, rhs: i32) -> i32 {
        let (q, r) = (self.0 / rhs, self.0 % rhs);
        let change = if rhs > 0 { r < 0 } else { r > 0 };
        if change { q - 1 } else { q }
    }
    fn div_euc(self, rhs: i32) -> i32 {
        let (q, r) = (self.0 / rhs, self.0 % rhs);
        if r < 0 {
            if rhs < 0 { q + 1 } else { q - 1 }
        } else {
            q
        }
    }
}
assert_eq!(I(-10).div_trunc(-3), 3);
assert_eq!(I(-10).div_ceil(-3), 4);
assert_eq!(I(-10).div_floor(-3), 3);
assert_eq!(I(-10).div_euc(-3), 4);

Associated Types

The resulting type from the division operation.

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 DivRounding for i8
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a i8> for &'b i8
[src]

[src]

[src]

[src]

[src]

impl DivRounding for i16
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a i16> for &'b i16
[src]

[src]

[src]

[src]

[src]

impl DivRounding for i32
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a i32> for &'b i32
[src]

[src]

[src]

[src]

[src]

impl DivRounding for i64
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a i64> for &'b i64
[src]

[src]

[src]

[src]

[src]

impl DivRounding for isize
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a isize> for &'b isize
[src]

[src]

[src]

[src]

[src]

impl DivRounding for i128
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a i128> for &'b i128
[src]

[src]

[src]

[src]

[src]

impl DivRounding for u8
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a u8> for &'b u8
[src]

[src]

[src]

[src]

[src]

impl DivRounding for u16
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a u16> for &'b u16
[src]

[src]

[src]

[src]

[src]

impl DivRounding for u32
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a u32> for &'b u32
[src]

[src]

[src]

[src]

[src]

impl DivRounding for u64
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a u64> for &'b u64
[src]

[src]

[src]

[src]

[src]

impl DivRounding for usize
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a usize> for &'b usize
[src]

[src]

[src]

[src]

[src]

impl DivRounding for u128
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a u128> for &'b u128
[src]

[src]

[src]

[src]

[src]

impl DivRounding for f32
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a f32> for &'b f32
[src]

[src]

[src]

[src]

[src]

impl DivRounding for f64
[src]

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

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

[src]

[src]

[src]

[src]

impl<'a, 'b> DivRounding<&'a f64> for &'b f64
[src]

[src]

[src]

[src]

[src]

impl DivRounding<Integer> for i32
[src]

[src]

[src]

[src]

[src]

impl<'i> DivRounding<&'i Integer> for i32
[src]

[src]

[src]

[src]

[src]

impl<'t> DivRounding<Integer> for &'t i32
[src]

[src]

[src]

[src]

[src]

impl<'i, 't> DivRounding<&'i Integer> for &'t i32
[src]

[src]

[src]

[src]

[src]

impl DivRounding<Integer> for u32
[src]

[src]

[src]

[src]

[src]

impl<'i> DivRounding<&'i Integer> for u32
[src]

[src]

[src]

[src]

[src]

impl<'t> DivRounding<Integer> for &'t u32
[src]

[src]

[src]

[src]

[src]

impl<'i, 't> DivRounding<&'i Integer> for &'t u32
[src]

[src]

[src]

[src]

[src]

Implementors