Expressões match (Correspondência)
A palavra-chave match é usada para corresponder um valor a um ou mais padrões. Nesse sentido, funciona como uma série de expressões if let:
fn main() { match std::env::args().next().as_deref() { Some("gato") => println!("Vai fazer coisas de gato"), Some("ls") => println!("Vou ls alguns arquivos"), Some("mv") => println!("Vamos mover alguns arquivos"), Some("rm") => println!("Uh, perigoso!"), None => println!("Hmm, nenhum nome de programa?"), _ => println!("Nome de programa desconhecido!"), } }
Assim como if let, cada braço de correspondência deve ter o mesmo tipo. O tipo é a última expressão do bloco, se houver. No exemplo acima, o tipo é ().
Consulte correspondência de padrões (pattern matching) para obter mais detalhes sobre padrões em Rust.
- Salve o resultado de uma expressão de correspondência
matchem uma variável e imprima-a. - Remova
.as_deref()e explique o erro gerado.std::env::Args().next()retorna umOption<&String>, porémmatchnão funciona com o tipoString.as_deref()transforma umOption<T>emOption<&T::Target>. Em nosso caso, isso transforma umOption<String>emOption<&str>.- Agora podemos usar a correspondência de padrões em um
&strdentro deOption.