Sto scrivendo un compilatore che compila in C, una cosa che sto tentando di fare è implementare un costrutto come la partita di Rust:
// { some function
let mut foo = 32;
match foo {
3 => return "hey",
4 | 5 | 6 => return "foo",
9 ... 12 => return "blah",
_ => return "bar",
}
// }
Come apparirebbe un costrutto come questo nel codice C? Stavo pensando che una cosa semplice come questa potrebbe essere una costruzione di switch come questa:
switch (foo) {
case 3: return "hey";
case 4: case 5: case 6: return "foo";
case 9: case 10: case 11: case 12: return "blah";
default: return "bar";
}
E, soprattutto, come cercherebbe esempi più complicati come questo:
let pair = (0, -2);
match pair {
(0, y) => println!("First is '0' and 'y' is '{:?}'", y),
(x, 0) => println!("'x' is '{:?}' and last is '0'", x),
_ => println!("It doesn't matter what they are"),
}
Dove la tupla è destrutturata e può gestire anche i valori?