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 let
não precisa cobrir todas as ramificações. Isso pode torná-lo mais conciso do quematch
. -
Um uso comum é lidar com valores
Some
ao trabalhar comOption
. -
Ao contrário de
match
,if let
nã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()) }