Trait asprim::AsPrim

source ·
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

Required Methods

Provided Methods

Cast self to the type T

Implementations on Foreign Types

Implementors