I want to write macro for function with Option Arguments:
pub fn certain_func(first: String, second: Option<&str>, third: Option<u32> /*... for example 4 Optional*/){
//long code
}
in separate namespace(straightforward aproach):
use certain_func;
#[macro_export]
#[warn(unused_macros)]
macro_rules! certain_func {
($a: expr) => {
certain_func($a, None, None, None, None)
};
($a: expr, $b: expr) =>{
certain_func($a , $b, None, None, None)
};
($a: expr, $b: expr, $c: expr) =>{
certain_func($a , $b, $c,None, None)
};
($a: expr, $b: expr, $c: expr, $d: expr) =>{
certain_func($a , $b, $c, $d, None)
};
($a: expr, $b: expr, $c: expr, $d: expr, $e: expr) =>{
certain_func($a , $b, $c, $d, $e)
};
}
Tried to write like this:
#[macro_export]
#[warn(unused_macros)]
macro_rules! certain_func {
($a: expr) => {
certain_func($a, None, None, None, None)
};
($a: expr, $($opt:expr),*) =>{
certain_func($a , $($opt)*, ... , None)
};
}
Nothing work, ^^ not found in this scope for first approach in every line, despite i certainly use function in the scope.
Second Also error as it suppose that there are 2 arguments(first and None), how to do this,
thanks in advance)