I want to switch through many possible cases for x
and there\'s one case (here x == 0
) where I want to check the result of some additional code to
Something else you could do is make a "self-executing" closure and use a return statement inside. I don't know whether there are any weird performance characteristics of this but syntactically it's pretty clean.
fn main() {
let x = 1;
// This closure is just used to catch the "return" statement.
(|| {
match x {
1 => {
let y = 0;
/*
* do ev1l stuff to y that I don't want to put into the match-guard
* as it's simply too much.
*/
/* break early ... */
if y == 0 { return; } // Ok!
assert!(y != 0, "y was 0!");
/* do other stuff in here. */
}
_ => {}
}
})();
println!("done matching");
}
Here's a playground link showing it working.