ExpressÔes if let
A expressĂŁo if let lhe permite que vocĂȘ execute um cĂłdigo diferente, dependendo se um valor corresponde a um padrĂŁo:
fn main() { let arg = std::env::args().next(); if let Some(valor) = arg { println!("Nome do programa: {valor}"); } else { println!("Falta o nome?"); } }
Consulte correspondĂȘncia de padrĂ”es (pattern matching) para obter mais detalhes sobre padrĂ”es em Rust.
-
Ao contrĂĄrio de
match,if letnão precisa cobrir todas as ramificaçÔes. Isso pode tornå-lo mais conciso do quematch. -
Um uso comum Ă© lidar com valores
Someao trabalhar comOption. -
Ao contrĂĄrio de
match,if letnĂŁo suporta clĂĄusulas de guarda para correspondĂȘncia de padrĂ”es. -
Desde 1.65, uma construção let-else semelhante permite fazer uma atribuição de desestruturação, ou se falhar, ter um bloco de ramificação sem retorno (
panic/return/break/continue):fn main() { println!("{:?}", segunda_palavra_para_maiusculas("foo bar")); } fn segunda_palavra_para_maiusculas(s: &str) -> Option<String> { let mut it = s.split(' '); let (Some(_), Some(item)) = (it.next(), it.next()) else { return None; }; Some(item.to_uppercase()) }