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(value) = arg { println!("Nome do programa: {value}"); } 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!("{:?}", second_word_to_upper("foo bar")); } fn second_word_to_upper(s: &str) -> Option<String> { let mut it = s.split(' '); let (Some(_), Some(item)) = (it.next(), it.next()) else { return None; }; Some(item.to_uppercase()) }