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 |
#218 in No standard library
46 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