Expresiones match
La [palabra clave match
]match
keyword se usa para comparar un valor con uno o varios patrones. En ese sentido, funciona como una serie de expresiones if let
:
fn main() { match std::env::args().next().as_deref() { Some("cat") => println!("Will do cat things"), Some("ls") => println!("Will ls some files"), Some("mv") => println!("Let's move some files"), Some("rm") => println!("Uh, dangerous!"), None => println!("Hmm, no program name?"), _ => println!("Unknown program name!"), } }
Al igual que con if let
, cada brazo de coincidencia debe ser del mismo tipo. El tipo es la última expresión del bloque, si la hay. En el ejemplo anterior, el tipo es ()
.
Consulta de nuevo la sección de coincidencia de patrones para obtener más información sobre los patrones de Rust.
- Guarda la expresión de coincidencia en una variable e imprímela.
- Elimina
.as_deref()
y explica el error.std::env::args().next()
devuelveOption<String>
, pero no podemos encontrar coincidencias conString
.as_deref()
transformaOption<T>
enOption<&T::Target>
. En nuestro caso, esto convierteOption<String>
enOption<&str>
.- Ahora podemos usar la coincidencia de patrones para encontrar coincidencias con
&str
dentro deOption
.