#primitive #number #into #from #as

no-std number-as

Extend primitive number types to make them have a number_as method

10 stable releases

1.0.10 Mar 18, 2022
1.0.9 Apr 21, 2021
1.0.7 Jul 29, 2020
1.0.5 Sep 17, 2019
1.0.2 Nov 14, 2018

#36 in No standard library

Download history 10/week @ 2023-06-09 23/week @ 2023-06-16 7/week @ 2023-06-23 32/week @ 2023-06-30 44/week @ 2023-07-07 5/week @ 2023-07-14 9/week @ 2023-07-21 6/week @ 2023-07-28 6/week @ 2023-08-04 4/week @ 2023-08-11 16/week @ 2023-08-18 14/week @ 2023-08-25 17/week @ 2023-09-01 36/week @ 2023-09-08 5/week @ 2023-09-15 12/week @ 2023-09-22

72 downloads per month
Used in sophon

MIT license

6KB
80 lines

Number As

CI

Use the trait NumberAs in the current scope to let all primitive number types have a number_as method.

use number_as::NumberAs;

let a: i32 = 2u16.number_as();

assert_eq!(2i32, a);

assert_eq!(2i32, 2u16.number_as());

assert_eq!(20i32, 20.6.number_as());

All implements for the NumberAs trait can be considered as a whole Primitive Number. If you want to design an add function, which accepts all kinds of primitive numbers, you can use the Number trait as a trait bound.

use number_as::{Number, NumberAs};

fn add<T, J, K>(a: T, b: J) -> K where T: Number, J: Number, K: Number, i128: NumberAs<K> {
    let a: i128 = a.number_as();
    let b: i128 = b.number_as();

    let c = a + b;

    c.number_as()
}

assert_eq!(40i32, add(5u8, 35i16));

Crates.io

https://crates.io/crates/number-as

Documentation

https://docs.rs/number-as

License

MIT

No runtime deps