#unwrap #unsafe #result #options

无 std 不安全_unwrap

在不检查的情况下不安全地展开 Result 和 Option 类型

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2017年7月12日

#216无标准库

Download history • Rust 包仓库 6862/week @ 2024-03-04 • Rust 包仓库 5970/week @ 2024-03-11 • Rust 包仓库 4422/week @ 2024-03-18 • Rust 包仓库 7525/week @ 2024-03-25 • Rust 包仓库 4358/week @ 2024-04-01 • Rust 包仓库 7106/week @ 2024-04-08 • Rust 包仓库 6783/week @ 2024-04-15 • Rust 包仓库 9385/week @ 2024-04-22 • Rust 包仓库 6633/week @ 2024-04-29 • Rust 包仓库 2371/week @ 2024-05-06 • Rust 包仓库 6539/week @ 2024-05-13 • Rust 包仓库 2986/week @ 2024-05-20 • Rust 包仓库 4575/week @ 2024-05-27 • Rust 包仓库 6224/week @ 2024-06-03 • Rust 包仓库 6678/week @ 2024-06-10 • Rust 包仓库 6151/week @ 2024-06-17 • Rust 包仓库

23,684 每月下载量
49 个 Crates 中使用 (直接使用 8 个)

MIT/Apache

8KB
87

unsafe_unwrap

一个 Rust 库,它允许在不检查的情况下对 OptionResult 类型进行展开。

用法

unsafe_unwrap() 方法可以在使用 unwrap() 的任何地方使用。在不优化构建中,它的行为类似于 unwrap(),而在优化构建中会移除检查。

extern crate unsafe_unwrap;
use unsafe_unwrap::UnsafeUnwrap;

let x = Some(42);
let y = unsafe { x.unsafe_unwrap() };

基准测试

bench_normal_unwrap_1000 bench_unsafe_unwrap_1000
929 ns/iter (+/- 176) 302 ns/iter (+/- 28)

许可证

该项目可以选择以下任一许可证发布:

由您选择。


lib.rs:

提供了一种快速但不安全地展开已知存在内部值的类型的方法。

通过调用 unsafe_unwrap(),在优化构建中,编译器被告知展开永远不会失败。在调试构建中,它将引发恐慌。

有时优化器可以删除检查展开,如果它可以证明值存在。然而,在它可能无法做到这一点的时候,这可以作为替代方案。

这与 Swift 中 OptionalunsafelyUnwrapped 属性类似。

示例

use unsafe_unwrap::UnsafeUnwrap;

let x = Some(20);
let y = unsafe { x.unsafe_unwrap() };

无运行时依赖