apple-quant-algorithmic 0.1.0

Apple Quant's algorithmic trading api
Documentation
use std::fmt::Debug;

pub trait UnwrapOptionExt<T> {
	fn unwrap_release_unsafe(self) -> T;
}

impl<T> UnwrapOptionExt<T> for Option<T> {
	#[inline(always)]
	fn unwrap_release_unsafe(self) -> T {
		if cfg!(debug_assertions) {
			self.unwrap()
		} else {
			unsafe { self.unwrap_unchecked() }
		}
	}
}

pub trait UnwrapResultExt<T, E> {
	fn unwrap_release_unsafe(self) -> T;
	fn unwrap_err_release_unsafe(self) -> E;
}

impl<T: Debug, E: Debug> UnwrapResultExt<T, E> for Result<T, E> {
	#[inline(always)]
	fn unwrap_release_unsafe(self) -> T {
		if cfg!(debug_assertions) {
			self.unwrap()
		} else {
			unsafe { self.unwrap_unchecked() }
		}
	}

	#[inline(always)]
	fn unwrap_err_release_unsafe(self) -> E {
		if cfg!(debug_assertions) {
			self.unwrap_err()
		} else {
			unsafe { self.unwrap_err_unchecked() }
		}
	}
}