Si queremos dirigir el flujo de nuestro programa usando "enums" lo podemos hacer usando "match". En Rust "match" es muy parecido a un "switch" en C. Simplemente enlistas todos los casos a manejar y pones "=>" y una coma "," al final de ese caso. De hecho como los enums pueden ser "structs" o "tuple structs" podemos asignaros a variables ("tuple structs") o usar los nombres directamente ("structs").
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | enum Direccion { Avanzar, Detenido(char), Click { x: i64, y: i64 } } fn main() { let direccion_jugador1 = Direccion::Avanzar; match direccion_jugador1 { Direccion::Avanzar => println!("¡Avanzar!"), Direccion::Detenido(input_char) => println!("¡{}!", input_char), Direccion::Click { x, y } => println!("¡x={} y y={}!", x, y) } let direccion_jugador2 = Direccion::Click {x: 6, y: 3}; match direccion_jugador2 { Direccion::Avanzar => println!("¡Avanzar!"), Direccion::Detenido(input_char) => println!("¡{}!", input_char), Direccion::Click { x, y } => println!("¡x={} y y={}!", x, y) } let direccion_jugador3 = Direccion::Detenido('p'); match direccion_jugador3 { Direccion::Avanzar => println!("¡Avanzar!"), Direccion::Detenido(input_char) => println!("¡{}!", input_char), Direccion::Click { x, y } => println!("¡x={} y y={}!", x, y) } println!("¡Fin del juego!"); } |
El resultado de correr el código es el siguiente:
Navegación:
Primera parte
Siguiente parte
Parte anterior
Fuente:
- Rust by Example - Flow control match https://doc.rust-lang.org/rust-by-example/flow_control/match.html
- Match - Rust documentation https://doc.rust-lang.org/1.5.0/book/match.html
No hay comentarios.:
Publicar un comentario