2个版本
0.1.1 | 2020年6月6日 |
---|---|
0.1.0 | 2020年6月4日 |
在过程宏中排名1023
24KB
438 行
forward_goto
此包提供了一种安全、可靠的方式,可以从控制流中的goto语句跳转到指定的标签。
use forward_goto::rewrite_forward_goto;
#[rewrite_forward_goto]
fn decode_msg(luck: impl Fn() -> bool, is_alan_turing: bool) {
if is_alan_turing {
forward_goto!('turing_complete);
}
println!("You'll need a lot of luck for this");
if luck() {
println!("Seems you were lucky");
forward_label!('turing_complete);
println!("Message decoded!");
} else {
println!("No luck today...");
}
}
你应该使用它吗?
可能不需要!
lib.rs
:
此包提供了一种安全、可靠的方式,可以从控制流中的goto语句跳转到指定的标签。
Rust没有goto机制,无法在控制流中任意跳转。
此包提供了一个过程宏,允许编写可以跳转到控制流中指定标签的goto语句。
跳转在借用检查方面是安全的,但有一些限制。有关更多信息,请参阅rewrite_forward_goto
。
use forward_goto::rewrite_forward_goto;
#[rewrite_forward_goto]
fn decode_msg(luck: impl Fn() -> bool, is_alan_turing: bool) {
if is_alan_turing {
forward_goto!('turing_complete);
}
println!("You'll need a lot of luck for this");
if luck() {
println!("Seems you were lucky");
forward_label!('turing_complete);
println!("Message decoded!");
} else {
println!("No luck today...");
}
}
依赖项
~1.5MB
~35K SLoC