愚人節惡作劇:Rust的“goto”實現

banq發表於2022-04-02

厭倦了使用“loop”、“while”和“for”等新奇的控制流機制?
好了不用擔心了!
終於,Rust 的“goto”和“label”宏已經到來!他們是#![no_std]!

use goto_label::{goto, label};

#[no_mangle] // Needed to prevent foo() from being optimized away
unsafe fn foo() {
    println!("This text will never be printed!");

    label!("label1");
    print!("Hello");
    goto!("label2");

    println!("Neither will this be printed!");
}

unsafe fn hello_world() {
    goto!("label1");
    println!("This won't be printed either!");

    label!("label2");
    println!(" World!");
}

unsafe {
    hello_world();
}


警告:
不要實際使用,它肯定會導致未定義的行為,很可能表現為segfaults。

相關文章