apple_quant_algorithmic/
unwrap_fast.rs1use std::fmt::Debug;
2
3pub trait UnwrapOptionExt<T> {
4 fn unwrap_release_unsafe(self) -> T;
5}
6
7impl<T> UnwrapOptionExt<T> for Option<T> {
8 #[inline(always)]
9 fn unwrap_release_unsafe(self) -> T {
10 if cfg!(debug_assertions) {
11 self.unwrap()
12 } else {
13 unsafe { self.unwrap_unchecked() }
14 }
15 }
16}
17
18pub trait UnwrapResultExt<T, E> {
19 fn unwrap_release_unsafe(self) -> T;
20 fn unwrap_err_release_unsafe(self) -> E;
21}
22
23impl<T: Debug, E: Debug> UnwrapResultExt<T, E> for Result<T, E> {
24 #[inline(always)]
25 fn unwrap_release_unsafe(self) -> T {
26 if cfg!(debug_assertions) {
27 self.unwrap()
28 } else {
29 unsafe { self.unwrap_unchecked() }
30 }
31 }
32
33 #[inline(always)]
34 fn unwrap_err_release_unsafe(self) -> E {
35 if cfg!(debug_assertions) {
36 self.unwrap_err()
37 } else {
38 unsafe { self.unwrap_err_unchecked() }
39 }
40 }
41}