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
&strdentro deOption.