usc 1.20230730.1349

A common lib for unitedservices
Documentation
#[macro_export]
macro_rules! mysome_or {
    ($a:expr,$b:expr) => {
        match $a{
            Some(a)=>a,
            None=>$b,
        }
    };
}

#[macro_export]
macro_rules! mysome {
    ($a:expr,#,$b:expr) => {
        match $a{
            Some(a)=>a,
            None=>{
                return $b;
            },
        }
    };
    ($a:expr,?) => {
        match $a{
            Some(a)=>a,
            None=>{
                return Err(MyError::new(format!("{} is None",stringify!($a)))) ;
            },
        }
    };
    ($a:expr,??) => {
        match $a{
            Some(a)=>a,
            None=>{
                return Err(MyError::new(format!("{:?} is None",stringify!($a)))) ;
            },
        }
    };
    ($a:expr,None) => {
        match $a{
            Some(a)=>a,
            None=>{
                return None;
            },
        }
    };
    ($a:expr , $b:expr) => {
        match $a{
            Some(a)=>a,
            None=>{
                return Err($b);
            },
        }
    };
    ($a:expr,) => {
        match $a{
            Some(a)=>a,
            None=>{
                return ;
            },
        }
    };
    ($a:expr) => {
        match $a{
            Some(a)=>a,
            None=>{
                return Err(crate::myerror::MyError::new(format!("{} is None",stringify!($a))));
            },
        }
    };
}

#[macro_export]
macro_rules! mysomes {
    ( $a:expr;$( $x:expr );* ) => {
        {
            let ___result=$a
            $(
                .and_then(|_|$x)
            )*
            .await;
            ___result
        }
    };
}