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 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!("{:?}", 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()) }