Trait asprim::AsPrim [] [src]

pub trait AsPrim: 'static + Copy {
    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: AsPrim>(T) -> Self;

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

Cast to an 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

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: AsPrim>(T) -> Self

Provided Methods

fn as_<T: AsPrim>(self) -> T

Cast self to the type T

Implementors