#traits #integer #int

int_traits

提供整数扩展函数的特质

2个版本

使用旧的Rust 2015

0.1.1 2016年9月28日
0.1.0 2016年7月14日

#41 in #int

Download history • Rust 包仓库 838/week @ 2024-03-14 • Rust 包仓库 735/week @ 2024-03-21 • Rust 包仓库 725/week @ 2024-03-28 • Rust 包仓库 659/week @ 2024-04-04 • Rust 包仓库 522/week @ 2024-04-11 • Rust 包仓库 578/week @ 2024-04-18 • Rust 包仓库 188/week @ 2024-04-25 • Rust 包仓库 303/week @ 2024-05-02 • Rust 包仓库 287/week @ 2024-05-09 • Rust 包仓库 315/week @ 2024-05-16 • Rust 包仓库 395/week @ 2024-05-23 • Rust 包仓库 522/week @ 2024-05-30 • Rust 包仓库 607/week @ 2024-06-06 • Rust 包仓库 688/week @ 2024-06-13 • Rust 包仓库 432/week @ 2024-06-20 • Rust 包仓库 160/week @ 2024-06-27 • Rust 包仓库

2,003 每月下载量
5 crates 中使用

Apache-2.0/MIT

7KB
122

int_traits

此crate提供用于处理整数的额外特质。提供的特质是默认为浮点值提供的,但扩展以提供优化的整数例程。

这主要是为了避免在需要对整数进行扩展操作时进行大量的类型转换。

let a = 50_usize;
let a_sqrt = (a as f32).sqrt() as usize;

变为

let a = 50_usize;
let a_sqrt = a.sqrt();

覆盖率

我们为以下类型提供以下函数

sqrt
cbrt
log
log2
log10

i8
i16
i32
i64
u8
u16
u32
u64
isize
usize

如果将负数传递给这些函数之一,则在运行时恐慌。

示例

extern crate int_traits;

use int_traits::IntTraits;

fn main() {
    let a = 50_usize;

    println!("{}", a.sqrt());
}

设计问题

  • 我们不知道是想返回浮点值还是显式进行整数舍入。

    这可能会被拆分成单独的函数 isqrtsqrt,或者可以提供两种不同的特质实现。

  • 我们目前没有执行任何优化函数。例如,由于我们不需要计算平方根的小数部分,我们可以采取一些潜在的方法来提高效率。

无运行时依赖