Macros 如何将命名循环标签传递给Rust中的宏?

Macros 如何将命名循环标签传递给Rust中的宏?,macros,rust,Macros,Rust,使用断开循环的宏是可行的,但我希望传入一个标签,以便能够定义要断开的外部循环 将参数作为表达式传递会产生语法错误,我唯一能使其正常工作的方法是传入块,但这不是很优雅,例如: my_macro({ break 'outer; }); 有没有办法通过: my_macro('outer); 。。。可以在宏中写为break$my_label扩展为break'外部?在多功能tt(令牌树)工作时传递它: 对于未来的读者,我们将为宏参数添加一个生存期说明符 macro_rules! my_break {

使用断开循环的宏是可行的,但我希望传入一个标签,以便能够定义要断开的外部循环

将参数作为表达式传递会产生语法错误,我唯一能使其正常工作的方法是传入
,但这不是很优雅,例如:

my_macro({ break 'outer; });
有没有办法通过:

my_macro('outer);

。。。可以在宏中写为
break$my_label扩展为
break'外部

在多功能
tt
(令牌树)工作时传递它:

对于未来的读者,我们将为宏参数添加一个生存期说明符

macro_rules! my_break {
    ($label:tt) => { break $label; }
}

fn main() {
    'outer: loop {
        println!("Start of outer");
        loop {
            println!("Start of inner");
            my_break!('outer);
            println!("Not reachable");
        }
        println!("End of outer");
    }
    println!("End of main");
}