[−][src]Crate unchecked_unwrap
unchecked_unwrap
Table of contents
- Description
- Branches
- Usage
- Crate features
- Documentation
- Tests
- Benchmarks
- Alternatives
- Changelog
- License
- Contribution
Description
Adds an unchecked version of unwrap()
and expect()
to Option
and Result
for the rust programming language. Supports no_std
.
Branches
Usage
use unchecked_unwrap::UncheckedUnwrap; let x = Some("air"); assert_eq!(unsafe { x.unchecked_unwrap() }, "air"); let x: Result<u32, &str> = Ok(2); assert_eq!(unsafe { x.unchecked_unwrap() }, 2); let x = Some("value"); assert_eq!(unsafe { x.unchecked_expect("the world is ending") }, "value"); let x: Result<u32, &str> = Ok(2); assert_eq!(unsafe { x.unchecked_expect("the sky is falling down") }, 2);
checked | unchecked |
---|---|
fn test_checked(value: Option<&str>) -> &str {
value.unwrap()
}
|
fn test_unchecked(value: Option<&str>) -> &str {
unsafe { value.unchecked_unwrap() }
}
|
push rax
test rdi, rdi
je .LBB2_1 // panic handler
mov rdx, rsi
mov rax, rdi
pop rcx
ret
|
mov rdx, rsi
mov rax, rdi
ret
|
Crate features
- debug_checks - On by default. Enables the normal checking behavior with
panics when
cfg(debug-assertions)
is enabled. - nightly
- Enables full documentation through
feature = "external_doc"
. - Enables benchmarking through
feature = "test"
.
- Enables full documentation through
Documentation
Documentation is available online in the badge links above. Currently, nightly
is needed for full documentation: cargo doc --features nightly
If you are not
using nightly, use cargo doc
as usual.
Tests
Is as simple as cargo test
and cargo test --release
.
Benchmarks
Is as simple as cargo bench
. Currently the nightly version of rust and the
feature = "nightly"
is needed for benchmarking.
A sample result from the CI running on Github Actions:
test checked::expect_option ... bench: 798 ns/iter (+/- 90) test checked::expect_result ... bench: 724 ns/iter (+/- 109) test checked::unwrap_option ... bench: 802 ns/iter (+/- 52) test checked::unwrap_result ... bench: 743 ns/iter (+/- 176) test unchecked::expect_option ... bench: 407 ns/iter (+/- 93) test unchecked::expect_result ... bench: 374 ns/iter (+/- 48) test unchecked::unwrap_option ... bench: 345 ns/iter (+/- 53) test unchecked::unwrap_result ... bench: 407 ns/iter (+/- 22)
Alternatives
Both alternatives and this crate are quite the same except that this crate provides additional features that can be toggled with cargo features. See crate features for details.
Changelog
See the CHANGELOG file for details
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Traits
UncheckedUnwrap | Trait for |