pub trait AsPrim: 'static + Copy {
Show 16 methods
fn as_usize(self) -> usize;
fn as_isize(self) -> isize;
fn as_u128(self) -> u128;
fn as_i128(self) -> i128;
fn as_u64(self) -> u64;
fn as_i64(self) -> i64;
fn as_u32(self) -> u32;
fn as_i32(self) -> i32;
fn as_u16(self) -> u16;
fn as_i16(self) -> i16;
fn as_u8(self) -> u8;
fn as_i8(self) -> i8;
fn as_f32(self) -> f32;
fn as_f64(self) -> f64;
fn cast_from<T: AsPrim>(_: T) -> Self;
fn as_<T: AsPrim>(self) -> T { ... }
}
Expand description
Cast to a primitive numeric type using as
.
AsPrim
converts any primitive numeric type to any other,
using the regular cast operator as
.
use asprim::AsPrim;
// Compute the mean value using f64 then cast back
fn mean<P>(data: &[P]) -> P
where P: AsPrim
{
let mut sum = 0.;
for elt in data {
sum += elt.as_f64();
}
sum /= data.len() as f64;
sum.as_()
}
fn pi<P: AsPrim>() -> P {
3.1415926535897932384626433.as_()
}
Rust Version
Requires Rust 1.26 or later due to supporting as_u128