Macro itron_asp3::macros::match_kernel[][src]

pub macro match_kernel {
    (_ => { $($wildcard : tt) * }) => { ... },
    (_ => { $($wildcard : tt) * } $($rest : tt) *) => { ... },
    ($($kernel : tt) | + => { $($tt : tt) * } $($rest : tt) *) => { ... },
}
This is supported on crate features nightly and unstable only.
Expand description

Expand to the arm corresponding to the current kernel.

Example

itron::macros::match_kernel! {
    "asp3" | "solid_asp3" => { fn say() { println!("We are running on TOPPERS/ASP3, yay!"); } }
    "nonexistent_kernel" => { call_nonexistent_function(); }
    _ => { fn say() { println!("This kernel looks like something new!"); } }
}
say();

The arms don’t create local scopes, and unselected arms are eliminated during an early stage of compilation. Compare to the following example:

match itron::macros::kernel!() {
    "asp3" | "solid_asp3" => { fn say() { println!("We are running on TOPPERS/ASP3, yay!"); } }
    "nonexistent_kernel" => { call_nonexistent_function(); }
        // ERROR: `call_nonexistent_function` is undefined
    _ => { fn say() { println!("This kernel looks like something new!"); } }
}
say(); // ERROR: Each arm's `say` is not accessible from here