Trait complexfloat::AsPrim [] [src]

pub trait AsPrim: Copy + 'static {
    fn as_usize(self) -> usize;
    fn as_isize(self) -> isize;
    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>(T) -> Self where T: AsPrim;

    fn as_<T>(self) -> T where T: AsPrim { ... }
}

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_()
}

Required Methods

Provided Methods

Cast self to the type T

Implementors