#likely #hint #intrinsics #optimization #performance

no-std likely_stable

稳定 Rust 中的 likely 和 unlikely 编译器提示

1 个不稳定版本

0.1.2 2021 年 3 月 9 日
0.1.1 2021 年 3 月 9 日
0.1.0 2021 年 3 月 9 日

#410无标准库

Download history 1148/week @ 2024-03-17 1848/week @ 2024-03-24 1722/week @ 2024-03-31 1758/week @ 2024-04-07 1898/week @ 2024-04-14 2161/week @ 2024-04-21 1553/week @ 2024-04-28 2580/week @ 2024-05-05 2176/week @ 2024-05-12 2508/week @ 2024-05-19 2407/week @ 2024-05-26 2506/week @ 2024-06-02 1845/week @ 2024-06-09 2013/week @ 2024-06-16 2237/week @ 2024-06-23 838/week @ 2024-06-30

每月 7,137 次下载
用于 5 个包 (直接使用 4 个)

MIT/Apache 许可协议

29KB
675

LICENSE LICENSE Documentation Crates.io Version

此包将 likelyunlikely 分支预测提示引入到稳定 Rust 中

use likely_stable::{likely,unlikely};
use rand::random;

if likely(random::<i32>() > 10) {
    println!("likely!")
} else {
    println!("unlikely!")
}

它还提供了 if_likelyif_unlikely 用于 if let 语句的分支预测。

use likely_stable::if_likely;
use rand::random;

let v = Some(random()).filter(|v:&i32| *v > 10);

if_likely!{let Some(v) = v => {
    println!("likely!")
} else {
    println!("unlikely!")
}};

此外,特质 LikelyBoolLikelyOptionLikelyResult 为类型 boolOptionResult 常用的方法提供了 likelyunlikely 版本。

use likely_stable::LikelyOption;
use rand::random;

let v = Some(random()).filter(|v:&i32| *v > 10);

v.map_or_else_likely(
    || println!("unlikely"),
    |v| println!("likely {}",v));

用法

将此添加到您的 Cargo.toml

[dependencies]
likely_stable = "0.1"

依赖项

~200KB