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");
}