use std::fmt;
pub trait Errexit<T> {
fn errexit(self) -> T;
}
impl<T> Errexit<T> for Option<T> {
fn errexit(self) -> T {
match self {
Some(t) => t,
None => self.unwrap(), }
}
}
impl<T, E> Errexit<T> for Result<T, E> where E: fmt::Debug {
fn errexit(self) -> T where E: fmt::Debug {
match self {
Ok(t) => t,
Err(_) => self.unwrap(), }
}
}
pub fn get_ok() -> Result<(), ()> {
Ok(())
}
pub fn get_err() -> Result<(), ()> {
Err(())
}
async fn rustbasic_addlib_temp() {
}
pub fn rustbasic_addlib() {
futures::executor::block_on( rustbasic_addlib_temp() );
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_works() {
let _a: Option<usize> = Some(123);
let _b: Option<usize> = None;
let _c = get_ok();
let _d = get_err();
println!("{:?}", _a.errexit());
println!("{:?}", _c.errexit());
}
}