pub trait Div<Rhs = Self> {
type Output;
// Required method
fn div(self, rhs: Rhs) -> Self::Output;
}
Expand description
core
The division operator /
.
Re-exported from core
::ops::
.
The division operator /
.
Note that Rhs
is Self
by default, but this is not mandatory.
§Examples
§Div
idable rational numbers
use std::ops::Div;
// By the fundamental theorem of arithmetic, rational numbers in lowest
// terms are unique. So, by keeping `Rational`s in reduced form, we can
// derive `Eq` and `PartialEq`.
#[derive(Debug, Eq, PartialEq)]
struct Rational {
numerator: usize,
denominator: usize,
}
impl Rational {
fn new(numerator: usize, denominator: usize) -> Self {
if denominator == 0 {
panic!("Zero is an invalid denominator!");
}
// Reduce to lowest terms by dividing by the greatest common
// divisor.
let gcd = gcd(numerator, denominator);
Self {
numerator: numerator / gcd,
denominator: denominator / gcd,
}
}
}
impl Div for Rational {
// The division of rational numbers is a closed operation.
type Output = Self;
fn div(self, rhs: Self) -> Self::Output {
if rhs.numerator == 0 {
panic!("Cannot divide by zero-valued `Rational`!");
}
let numerator = self.numerator * rhs.denominator;
let denominator = self.denominator * rhs.numerator;
Self::new(numerator, denominator)
}
}
// Euclid's two-thousand-year-old algorithm for finding the greatest common
// divisor.
fn gcd(x: usize, y: usize) -> usize {
let mut x = x;
let mut y = y;
while y != 0 {
let t = y;
y = x % y;
x = t;
}
x
}
assert_eq!(Rational::new(1, 2), Rational::new(2, 4));
assert_eq!(Rational::new(1, 2) / Rational::new(3, 4),
Rational::new(2, 3));
§Dividing vectors by scalars as in linear algebra
use std::ops::Div;
struct Scalar { value: f32 }
#[derive(Debug, PartialEq)]
struct Vector { value: Vec<f32> }
impl Div<Scalar> for Vector {
type Output = Self;
fn div(self, rhs: Scalar) -> Self::Output {
Self { value: self.value.iter().map(|v| v / rhs.value).collect() }
}
}
let scalar = Scalar { value: 2f32 };
let vector = Vector { value: vec![2f32, 4f32, 6f32] };
assert_eq!(vector / scalar, Vector { value: vec![1f32, 2f32, 3f32] });
Required Associated Types§
Required Methods§
Implementors§
1.0.0 · Source§impl Div for i8
This operation rounds towards zero, truncating any
fractional part of the exact result.
impl Div for i8
This operation rounds towards zero, truncating any fractional part of the exact result.
§Panics
This operation will panic if other == 0
or the division results in overflow.
1.0.0 · Source§impl Div for i16
This operation rounds towards zero, truncating any
fractional part of the exact result.
impl Div for i16
This operation rounds towards zero, truncating any fractional part of the exact result.
§Panics
This operation will panic if other == 0
or the division results in overflow.
1.0.0 · Source§impl Div for i32
This operation rounds towards zero, truncating any
fractional part of the exact result.
impl Div for i32
This operation rounds towards zero, truncating any fractional part of the exact result.
§Panics
This operation will panic if other == 0
or the division results in overflow.
1.0.0 · Source§impl Div for i64
This operation rounds towards zero, truncating any
fractional part of the exact result.
impl Div for i64
This operation rounds towards zero, truncating any fractional part of the exact result.
§Panics
This operation will panic if other == 0
or the division results in overflow.
1.0.0 · Source§impl Div for i128
This operation rounds towards zero, truncating any
fractional part of the exact result.
impl Div for i128
This operation rounds towards zero, truncating any fractional part of the exact result.
§Panics
This operation will panic if other == 0
or the division results in overflow.
1.0.0 · Source§impl Div for isize
This operation rounds towards zero, truncating any
fractional part of the exact result.
impl Div for isize
This operation rounds towards zero, truncating any fractional part of the exact result.
§Panics
This operation will panic if other == 0
or the division results in overflow.
1.0.0 · Source§impl Div for u8
This operation rounds towards zero, truncating any
fractional part of the exact result.
impl Div for u8
This operation rounds towards zero, truncating any fractional part of the exact result.
§Panics
This operation will panic if other == 0
.
1.0.0 · Source§impl Div for u16
This operation rounds towards zero, truncating any
fractional part of the exact result.
impl Div for u16
This operation rounds towards zero, truncating any fractional part of the exact result.
§Panics
This operation will panic if other == 0
.
1.0.0 · Source§impl Div for u32
This operation rounds towards zero, truncating any
fractional part of the exact result.
impl Div for u32
This operation rounds towards zero, truncating any fractional part of the exact result.
§Panics
This operation will panic if other == 0
.
1.0.0 · Source§impl Div for u64
This operation rounds towards zero, truncating any
fractional part of the exact result.
impl Div for u64
This operation rounds towards zero, truncating any fractional part of the exact result.
§Panics
This operation will panic if other == 0
.
1.0.0 · Source§impl Div for u128
This operation rounds towards zero, truncating any
fractional part of the exact result.
impl Div for u128
This operation rounds towards zero, truncating any fractional part of the exact result.
§Panics
This operation will panic if other == 0
.
1.0.0 · Source§impl Div for usize
This operation rounds towards zero, truncating any
fractional part of the exact result.
impl Div for usize
This operation rounds towards zero, truncating any fractional part of the exact result.
§Panics
This operation will panic if other == 0
.
1.74.0 · Source§impl Div for Saturating<i8>
§Examples
Basic usage:
impl Div for Saturating<i8>
§Examples
Basic usage:
use std::num::Saturating;
assert_eq!(Saturating(2i8), Saturating(5i8) / Saturating(2));
assert_eq!(Saturating(i8::MAX), Saturating(i8::MAX) / Saturating(1));
assert_eq!(Saturating(i8::MIN), Saturating(i8::MIN) / Saturating(1));
use std::num::Saturating;
let _ = Saturating(0i8) / Saturating(0);
type Output = Saturating<i8>
1.74.0 · Source§impl Div for Saturating<i16>
§Examples
Basic usage:
impl Div for Saturating<i16>
§Examples
Basic usage:
use std::num::Saturating;
assert_eq!(Saturating(2i16), Saturating(5i16) / Saturating(2));
assert_eq!(Saturating(i16::MAX), Saturating(i16::MAX) / Saturating(1));
assert_eq!(Saturating(i16::MIN), Saturating(i16::MIN) / Saturating(1));
use std::num::Saturating;
let _ = Saturating(0i16) / Saturating(0);
type Output = Saturating<i16>
1.74.0 · Source§impl Div for Saturating<i32>
§Examples
Basic usage:
impl Div for Saturating<i32>
§Examples
Basic usage:
use std::num::Saturating;
assert_eq!(Saturating(2i32), Saturating(5i32) / Saturating(2));
assert_eq!(Saturating(i32::MAX), Saturating(i32::MAX) / Saturating(1));
assert_eq!(Saturating(i32::MIN), Saturating(i32::MIN) / Saturating(1));
use std::num::Saturating;
let _ = Saturating(0i32) / Saturating(0);
type Output = Saturating<i32>
1.74.0 · Source§impl Div for Saturating<i64>
§Examples
Basic usage:
impl Div for Saturating<i64>
§Examples
Basic usage:
use std::num::Saturating;
assert_eq!(Saturating(2i64), Saturating(5i64) / Saturating(2));
assert_eq!(Saturating(i64::MAX), Saturating(i64::MAX) / Saturating(1));
assert_eq!(Saturating(i64::MIN), Saturating(i64::MIN) / Saturating(1));
use std::num::Saturating;
let _ = Saturating(0i64) / Saturating(0);
type Output = Saturating<i64>
1.74.0 · Source§impl Div for Saturating<i128>
§Examples
Basic usage:
impl Div for Saturating<i128>
§Examples
Basic usage:
use std::num::Saturating;
assert_eq!(Saturating(2i128), Saturating(5i128) / Saturating(2));
assert_eq!(Saturating(i128::MAX), Saturating(i128::MAX) / Saturating(1));
assert_eq!(Saturating(i128::MIN), Saturating(i128::MIN) / Saturating(1));
use std::num::Saturating;
let _ = Saturating(0i128) / Saturating(0);
type Output = Saturating<i128>
1.74.0 · Source§impl Div for Saturating<isize>
§Examples
Basic usage:
impl Div for Saturating<isize>
§Examples
Basic usage:
use std::num::Saturating;
assert_eq!(Saturating(2isize), Saturating(5isize) / Saturating(2));
assert_eq!(Saturating(isize::MAX), Saturating(isize::MAX) / Saturating(1));
assert_eq!(Saturating(isize::MIN), Saturating(isize::MIN) / Saturating(1));
use std::num::Saturating;
let _ = Saturating(0isize) / Saturating(0);
type Output = Saturating<isize>
1.74.0 · Source§impl Div for Saturating<u8>
§Examples
Basic usage:
impl Div for Saturating<u8>
§Examples
Basic usage:
use std::num::Saturating;
assert_eq!(Saturating(2u8), Saturating(5u8) / Saturating(2));
assert_eq!(Saturating(u8::MAX), Saturating(u8::MAX) / Saturating(1));
assert_eq!(Saturating(u8::MIN), Saturating(u8::MIN) / Saturating(1));
use std::num::Saturating;
let _ = Saturating(0u8) / Saturating(0);
type Output = Saturating<u8>
1.74.0 · Source§impl Div for Saturating<u16>
§Examples
Basic usage:
impl Div for Saturating<u16>
§Examples
Basic usage:
use std::num::Saturating;
assert_eq!(Saturating(2u16), Saturating(5u16) / Saturating(2));
assert_eq!(Saturating(u16::MAX), Saturating(u16::MAX) / Saturating(1));
assert_eq!(Saturating(u16::MIN), Saturating(u16::MIN) / Saturating(1));
use std::num::Saturating;
let _ = Saturating(0u16) / Saturating(0);
type Output = Saturating<u16>
1.74.0 · Source§impl Div for Saturating<u32>
§Examples
Basic usage:
impl Div for Saturating<u32>
§Examples
Basic usage:
use std::num::Saturating;
assert_eq!(Saturating(2u32), Saturating(5u32) / Saturating(2));
assert_eq!(Saturating(u32::MAX), Saturating(u32::MAX) / Saturating(1));
assert_eq!(Saturating(u32::MIN), Saturating(u32::MIN) / Saturating(1));
use std::num::Saturating;
let _ = Saturating(0u32) / Saturating(0);
type Output = Saturating<u32>
1.74.0 · Source§impl Div for Saturating<u64>
§Examples
Basic usage:
impl Div for Saturating<u64>
§Examples
Basic usage:
use std::num::Saturating;
assert_eq!(Saturating(2u64), Saturating(5u64) / Saturating(2));
assert_eq!(Saturating(u64::MAX), Saturating(u64::MAX) / Saturating(1));
assert_eq!(Saturating(u64::MIN), Saturating(u64::MIN) / Saturating(1));
use std::num::Saturating;
let _ = Saturating(0u64) / Saturating(0);
type Output = Saturating<u64>
1.74.0 · Source§impl Div for Saturating<u128>
§Examples
Basic usage:
impl Div for Saturating<u128>
§Examples
Basic usage:
use std::num::Saturating;
assert_eq!(Saturating(2u128), Saturating(5u128) / Saturating(2));
assert_eq!(Saturating(u128::MAX), Saturating(u128::MAX) / Saturating(1));
assert_eq!(Saturating(u128::MIN), Saturating(u128::MIN) / Saturating(1));
use std::num::Saturating;
let _ = Saturating(0u128) / Saturating(0);
type Output = Saturating<u128>
1.74.0 · Source§impl Div for Saturating<usize>
§Examples
Basic usage:
impl Div for Saturating<usize>
§Examples
Basic usage:
use std::num::Saturating;
assert_eq!(Saturating(2usize), Saturating(5usize) / Saturating(2));
assert_eq!(Saturating(usize::MAX), Saturating(usize::MAX) / Saturating(1));
assert_eq!(Saturating(usize::MIN), Saturating(usize::MIN) / Saturating(1));
use std::num::Saturating;
let _ = Saturating(0usize) / Saturating(0);
type Output = Saturating<usize>
1.74.0 · Source§impl Div<&Saturating<i8>> for &Saturating<i8>
impl Div<&Saturating<i8>> for &Saturating<i8>
1.74.0 · Source§impl Div<&Saturating<i8>> for Saturating<i8>
impl Div<&Saturating<i8>> for Saturating<i8>
1.74.0 · Source§impl Div<&Saturating<i16>> for &Saturating<i16>
impl Div<&Saturating<i16>> for &Saturating<i16>
1.74.0 · Source§impl Div<&Saturating<i16>> for Saturating<i16>
impl Div<&Saturating<i16>> for Saturating<i16>
1.74.0 · Source§impl Div<&Saturating<i32>> for &Saturating<i32>
impl Div<&Saturating<i32>> for &Saturating<i32>
1.74.0 · Source§impl Div<&Saturating<i32>> for Saturating<i32>
impl Div<&Saturating<i32>> for Saturating<i32>
1.74.0 · Source§impl Div<&Saturating<i64>> for &Saturating<i64>
impl Div<&Saturating<i64>> for &Saturating<i64>
1.74.0 · Source§impl Div<&Saturating<i64>> for Saturating<i64>
impl Div<&Saturating<i64>> for Saturating<i64>
1.74.0 · Source§impl Div<&Saturating<i128>> for &Saturating<i128>
impl Div<&Saturating<i128>> for &Saturating<i128>
1.74.0 · Source§impl Div<&Saturating<i128>> for Saturating<i128>
impl Div<&Saturating<i128>> for Saturating<i128>
1.74.0 · Source§impl Div<&Saturating<isize>> for &Saturating<isize>
impl Div<&Saturating<isize>> for &Saturating<isize>
1.74.0 · Source§impl Div<&Saturating<isize>> for Saturating<isize>
impl Div<&Saturating<isize>> for Saturating<isize>
1.74.0 · Source§impl Div<&Saturating<u8>> for &Saturating<u8>
impl Div<&Saturating<u8>> for &Saturating<u8>
1.74.0 · Source§impl Div<&Saturating<u8>> for Saturating<u8>
impl Div<&Saturating<u8>> for Saturating<u8>
1.74.0 · Source§impl Div<&Saturating<u16>> for &Saturating<u16>
impl Div<&Saturating<u16>> for &Saturating<u16>
1.74.0 · Source§impl Div<&Saturating<u16>> for Saturating<u16>
impl Div<&Saturating<u16>> for Saturating<u16>
1.74.0 · Source§impl Div<&Saturating<u32>> for &Saturating<u32>
impl Div<&Saturating<u32>> for &Saturating<u32>
1.74.0 · Source§impl Div<&Saturating<u32>> for Saturating<u32>
impl Div<&Saturating<u32>> for Saturating<u32>
1.74.0 · Source§impl Div<&Saturating<u64>> for &Saturating<u64>
impl Div<&Saturating<u64>> for &Saturating<u64>
1.74.0 · Source§impl Div<&Saturating<u64>> for Saturating<u64>
impl Div<&Saturating<u64>> for Saturating<u64>
1.74.0 · Source§impl Div<&Saturating<u128>> for &Saturating<u128>
impl Div<&Saturating<u128>> for &Saturating<u128>
1.74.0 · Source§impl Div<&Saturating<u128>> for Saturating<u128>
impl Div<&Saturating<u128>> for Saturating<u128>
1.74.0 · Source§impl Div<&Saturating<usize>> for &Saturating<usize>
impl Div<&Saturating<usize>> for &Saturating<usize>
1.74.0 · Source§impl Div<&Saturating<usize>> for Saturating<usize>
impl Div<&Saturating<usize>> for Saturating<usize>
§impl Div<f64> for PlaybackRate
impl Div<f64> for PlaybackRate
type Output = PlaybackRate
§impl Div<i32> for SignedDuration
impl Div<i32> for SignedDuration
type Output = SignedDuration
1.74.0 · Source§impl<'a> Div<Saturating<i8>> for &'a Saturating<i8>
impl<'a> Div<Saturating<i8>> for &'a Saturating<i8>
1.74.0 · Source§impl<'a> Div<Saturating<i16>> for &'a Saturating<i16>
impl<'a> Div<Saturating<i16>> for &'a Saturating<i16>
1.74.0 · Source§impl<'a> Div<Saturating<i32>> for &'a Saturating<i32>
impl<'a> Div<Saturating<i32>> for &'a Saturating<i32>
1.74.0 · Source§impl<'a> Div<Saturating<i64>> for &'a Saturating<i64>
impl<'a> Div<Saturating<i64>> for &'a Saturating<i64>
1.74.0 · Source§impl<'a> Div<Saturating<i128>> for &'a Saturating<i128>
impl<'a> Div<Saturating<i128>> for &'a Saturating<i128>
1.74.0 · Source§impl<'a> Div<Saturating<isize>> for &'a Saturating<isize>
impl<'a> Div<Saturating<isize>> for &'a Saturating<isize>
1.74.0 · Source§impl<'a> Div<Saturating<u8>> for &'a Saturating<u8>
impl<'a> Div<Saturating<u8>> for &'a Saturating<u8>
1.74.0 · Source§impl<'a> Div<Saturating<u16>> for &'a Saturating<u16>
impl<'a> Div<Saturating<u16>> for &'a Saturating<u16>
1.74.0 · Source§impl<'a> Div<Saturating<u32>> for &'a Saturating<u32>
impl<'a> Div<Saturating<u32>> for &'a Saturating<u32>
1.74.0 · Source§impl<'a> Div<Saturating<u64>> for &'a Saturating<u64>
impl<'a> Div<Saturating<u64>> for &'a Saturating<u64>
1.74.0 · Source§impl<'a> Div<Saturating<u128>> for &'a Saturating<u128>
impl<'a> Div<Saturating<u128>> for &'a Saturating<u128>
1.74.0 · Source§impl<'a> Div<Saturating<usize>> for &'a Saturating<usize>
impl<'a> Div<Saturating<usize>> for &'a Saturating<usize>
Source§impl<'s, 'o> Div<&'o Float<f32>> for &'s Float<f32>
Available on crate feature _float_f32
only.
impl<'s, 'o> Div<&'o Float<f32>> for &'s Float<f32>
_float_f32
only.Source§impl<'s, 'o> Div<&'o Float<f64>> for &'s Float<f64>
Available on crate feature _float_f64
only.
impl<'s, 'o> Div<&'o Float<f64>> for &'s Float<f64>
_float_f64
only.Source§impl<'s, 'o> Div<&'o Int<isize>> for &'s Int<isize>
Available on crate feature _int_isize
only.
impl<'s, 'o> Div<&'o Int<isize>> for &'s Int<isize>
_int_isize
only.Source§impl<'s, 'o> Div<&'o Int<usize>> for &'s Int<usize>
Available on crate feature _int_usize
only.
impl<'s, 'o> Div<&'o Int<usize>> for &'s Int<usize>
_int_usize
only.§impl<T> Div<T> for SampleRate
impl<T> Div<T> for SampleRate
type Output = SampleRate
Source§impl<T: Clone + Div<Output = T>> Div<&T> for VecVector<T>
Available on crate feature alg
only.
impl<T: Clone + Div<Output = T>> Div<&T> for VecVector<T>
alg
only.Source§impl<T: Clone + Div<Output = T>, const D: usize> Div<&T> for Vector<T, D>
Available on crate feature alg
only.
impl<T: Clone + Div<Output = T>, const D: usize> Div<&T> for Vector<T, D>
alg
only.Source§impl<T: Clone + Div<Output = T>, const D: usize> Div<T> for Vector<T, D>
Available on crate feature alg
only.
impl<T: Clone + Div<Output = T>, const D: usize> Div<T> for Vector<T, D>
alg
only.