Evaluate a block if a condition holds.
if
is a familiar construct to most programmers, and is the main way you'll often do logic in your code. However, unlike in most languages, if
blocks can also act as expressions.
if 1 == 2 { println!("whoops, mathematics broke"); } else { println!("everything's fine!"); } let greeting = if rude { "sup nerd." } else { "hello, friend!" }; if let Ok(x) = "123".parse::<i32>() { println!("{} double that and you get {}!", greeting, x * 2); }
Shown above are the three typical forms an if
block comes in. First is the usual kind of thing you'd see in many languages, with an optional else
block. Second uses if
as an expression, which is only possible if all branches return the same type. An if
expression can be used everywhere you'd expect. The third kind of if
block is an if let
block, which behaves similarly to using a match
expression:
if let Some(x) = Some(123) { // code } else { // something else } match Some(123) { Some(x) => { // code }, _ => { // something else }, }
Each kind of if
expression can be mixed and matched as needed.
if true == false { println!("oh no"); } else if "something" == "other thing" { println!("oh dear"); } else if let Some(200) = "blarg".parse::<i32>().ok() { println!("uh oh"); } else { println!("phew, nothing's broken"); }
The if
keyword is used in one other place in Rust, namely as a part of pattern matching itself, allowing patterns such as Some(x) if x > 200
to be used.
For more information on if
expressions, see the Rust book or the Reference.
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/keyword.if.html