#numbers #primitive #from #into #as

无 std number-as

扩展基本数字类型,使其具有 number_as 方法

10 个稳定版本

1.0.10 2022年3月18日
1.0.9 2021年4月21日
1.0.7 2020年7月29日
1.0.5 2019年9月17日
1.0.2 2018年11月14日

#142无标准库

39 每月下载量
用于 sophon

MIT 许可证

6KB
80

Number As

CI

使用 当前作用域中的 NumberAs 特性,让所有基本数字类型都具有 number_as 方法。

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());

NumberAs 特性的所有实现可以视为一个整体的 基本数字。如果您想设计一个接受所有基本数字的 函数,您可以使用 Number 特性作为特质的界限。

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

文档

https://docs.rs/number-as

许可证

MIT

无运行时依赖