Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 如何检测是否向声明性宏提供了可选关键字?_Rust_Macros_Rust Decl Macros - Fatal编程技术网

Rust 如何检测是否向声明性宏提供了可选关键字?

Rust 如何检测是否向声明性宏提供了可选关键字?,rust,macros,rust-decl-macros,Rust,Macros,Rust Decl Macros,我正在写一个宏: macro_rules! foo { ($(print)?) => { // run `println!("hello") if print is given } } 可称之为: foo!()它什么也做不了 foo!(打印)哪个会打印hello 如何检测是否提供了print?当我使用重复运算符时,我需要在其中放入一个变量。是否有某种类型的空变量可以使用?((print$print:empty)?)为每种情况制定

我正在写一个宏:

macro_rules! foo {
    ($(print)?) => {
        // run `println!("hello") if print is given
    }
}
可称之为:

  • foo!()
    它什么也做不了

  • foo!(打印)
    哪个会打印hello


如何检测是否提供了
print
?当我使用重复运算符时,我需要在其中放入一个变量。是否有某种类型的空变量可以使用?(
(print$print:empty)?

为每种情况制定单独的规则:

macro\u规则!福{
() => {
//无所事事
};
(打印)=>{
println!(“你好”)
};
}
fn main(){
福!();//什么也不做
foo!(打印);//打印“你好”
}

请在回答之前搜索并建议重复项。如重复项中所述-定义两种模式。