#[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
}
};
}