1 unstable release
Uses old Rust 2015
0.1.0 | Jul 12, 2017 |
---|
#266 in No standard library
25,562 downloads per month
Used in 50 crates
(8 directly)
8KB
87 lines
unsafe_unwrap
A Rust library that enables unchecked unwrapping on Option
and Result
types.
Usage
The unsafe_unwrap()
method can be used anywhere unwrap()
is used. It behaves
similar to unwrap()
in unoptimized builds and will remove checks in optimized
builds.
extern crate unsafe_unwrap;
use unsafe_unwrap::UnsafeUnwrap;
let x = Some(42);
let y = unsafe { x.unsafe_unwrap() };
Benchmark
bench_normal_unwrap_1000 |
bench_unsafe_unwrap_1000 |
---|---|
929 ns/iter (+/- 176) | 302 ns/iter (+/- 28) |
License
This project is released under either:
at your choosing.
lib.rs
:
Provides a way to quickly yet unsafely unwrap types whose inner values are known to exist.
By calling unsafe_unwrap()
, the compiler is told, in optimized builds,
that the unwrap will never fail. In debug builds it will emit a panic.
Sometimes the optimizer can remove checked unwrapping if it can prove that a value exists. However, in times that it may not be able to do so, this works as an alternative.
This is akin to the unsafelyUnwrapped
property of Optional
in Swift.
Examples
use unsafe_unwrap::UnsafeUnwrap;
let x = Some(20);
let y = unsafe { x.unsafe_unwrap() };