#对数 #整数 #函数 #优化 #内联 #类型 #10

无std ilog

适用于整数类型的10和2的对数函数

7个版本 (2个稳定版)

1.0.1 2023年3月7日
0.1.4 2022年12月14日

#733算法

Download history 97/week @ 2024-03-13 115/week @ 2024-03-20 143/week @ 2024-03-27 220/week @ 2024-04-03 106/week @ 2024-04-10 108/week @ 2024-04-17 110/week @ 2024-04-24 134/week @ 2024-05-01 128/week @ 2024-05-08 133/week @ 2024-05-15 125/week @ 2024-05-22 107/week @ 2024-05-29 125/week @ 2024-06-05 131/week @ 2024-06-12 120/week @ 2024-06-19 112/week @ 2024-06-26

每月506次下载
5 crate 中使用

MIT 许可证

18KB
199

ilog

crate documentation build status crate

适用于整数类型的10和2的对数函数

IntLog trait定义了以下方法

fn log10(self) -> usize
fn log2(self) -> usize
fn checked_log10(self) -> Option<usize>
fn checked_log2(self) -> Option<usize>

log2log10 方法针对整数宽度进行了优化,并且是 [inline] 的,因为代码足够小。它们通常使用仅存储一次的常量表,即使使用这些表的方法被内联多次。

方法的 checked 版本,即 checked_log2checked_log10,如果对数对于参数值未定义,则返回 None,而上面提到的未检查的方法简单地panic或返回错误值。

示例

use ilog::IntLog;

let hundred: u32 = 100;
assert_eq!(hundred.log10(), 2);
assert_eq!(u32::log10(99), 1);

let value: u64 = 256;
assert_eq!(value.log2(), 8);
assert_eq!(u64::log2(255), 7);

assert_eq!(u32::checked_log2(63), Some(5));
assert_eq!(0_u32.checked_log2(), None);

兼容性

ilog crate已在rustc 1.65及以上版本、Windows 64位和Linux 64/32位平台上进行了测试。

它不依赖于std库,并支持16、32和64位架构。

Rust版本1.64及之前

请注意,在1.64及之前版本中,loglog2log10 是 nightly experimental core::num 方法,然后在1.65版本(仍然为实验性)中分别重命名为 ilogilog2ilog10。作者在crate首次发布时不知道这一点。

如果您需要使用此crate与较早版本的rustc,可以使用此文件指令来屏蔽警告

    #![allow(unstable_name_collisions)]

或者在此方法使用之前使用此指令

    #[allow(unstable_name_collisions)]

版本

RELEASES.md 记录了所有版本的日志。

许可证

MIT许可证 保护。

无运行时依赖