OneBite.Dev - Coding blog in a bite size

If and let in Rust Control flow

When there are many possible values, but we only care about one in a control flow, we can use if and let syntax in rust.

Based on previous lesson, we know we can handle a default function in Rust like this

fn main() {
    let some_u8_value = Some(0u8);
    match some_u8_value {
        Some(3) => println!("three"),
        _ => (),
    }
}

But.. When there are many possible values and we only care about one value in a control flow, we can use if and let syntax in rust. It’s shorter and more clear

fn main() {
    let some_u8_value = Some(0u8);
    if let Some(3) = some_u8_value {
        println!("three");
    }
}

It’s a syntax sugar for our match.

Else in if-let

If let, also have an else

It’s useful when we want to specify the action for the rest of possible values.

#[derive(Debug)]
enum UsState {
    Alabama,
    Alaska,
    // --snip--
}

enum Coin {
    Penny,
    Nickel,
    Dime,
    Quarter(UsState),
}

fn main() {
    let coin = Coin::Penny;
    let mut count = 0;
    if let Coin::Quarter(state) = coin {
        println!("State quarter from {:?}!", state);
    } else {
        count += 1;
    }
}
← Match control flow in Rus...
Collections data structur... →
rust