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
72 downloads per month
Used in sophon
6KB
80 lines
Number As
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