impl ToPrimitive, FromPrimitive and NumCast for Wrapping<T>
This commit is contained in:
parent
35a9bcba19
commit
f249edf546
|
@ -1,4 +1,5 @@
|
||||||
use std::mem::size_of;
|
use std::mem::size_of;
|
||||||
|
use std::num::Wrapping;
|
||||||
|
|
||||||
use identities::Zero;
|
use identities::Zero;
|
||||||
use bounds::Bounded;
|
use bounds::Bounded;
|
||||||
|
@ -385,6 +386,17 @@ impl_from_primitive!(u64, to_u64);
|
||||||
impl_from_primitive!(f32, to_f32);
|
impl_from_primitive!(f32, to_f32);
|
||||||
impl_from_primitive!(f64, to_f64);
|
impl_from_primitive!(f64, to_f64);
|
||||||
|
|
||||||
|
|
||||||
|
impl<T: ToPrimitive> ToPrimitive for Wrapping<T> {
|
||||||
|
fn to_i64(&self) -> Option<i64> { self.0.to_i64() }
|
||||||
|
fn to_u64(&self) -> Option<u64> { self.0.to_u64() }
|
||||||
|
}
|
||||||
|
impl<T: FromPrimitive> FromPrimitive for Wrapping<T> {
|
||||||
|
fn from_u64(n: u64) -> Option<Self> { T::from_u64(n).map(Wrapping) }
|
||||||
|
fn from_i64(n: i64) -> Option<Self> { T::from_i64(n).map(Wrapping) }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Cast from one machine scalar to another.
|
/// Cast from one machine scalar to another.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
|
@ -434,6 +446,11 @@ impl_num_cast!(isize, to_isize);
|
||||||
impl_num_cast!(f32, to_f32);
|
impl_num_cast!(f32, to_f32);
|
||||||
impl_num_cast!(f64, to_f64);
|
impl_num_cast!(f64, to_f64);
|
||||||
|
|
||||||
|
impl<T: NumCast> NumCast for Wrapping<T> {
|
||||||
|
fn from<U: ToPrimitive>(n: U) -> Option<Self> {
|
||||||
|
T::from(n).map(Wrapping)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn to_primitive_float() {
|
fn to_primitive_float() {
|
||||||
|
|
Loading…
Reference in New Issue