#unwrap #unsafe #result #options

无 std 不安全_unwrap

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

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2017年7月12日

#216无标准库

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

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

无运行时依赖