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 |
#164 in No standard library
24 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