From this tutorial:
An if without an else always results in () as the value.
Why does Rust impose this restriction and doesn\'
For your example, the right question is: “What would the value of y
be if x
is not 5?”. What would happen here?
let x = 3;
let y = if x == 5 { 10 };
println!("{}", y); // what?!
You could think that the if-without-else-expression could return an Option<_>
, but...
Some()
& else { None }
)In Rust, nearly everything is an expression (with the exception of let
-bindings and expressions ending with a semicolon, so called expression statements). And there are a few examples of expressions always returning ()
, because nothing else makes sense. These include (compound-)assignments (why?), loops and if-without-else.