From this tutorial:
An if without an else always results in () as the value.
Why does Rust impose this restriction and doesn't let an if without an else return other values, like this:
let y = if x == 5 { 10 };
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With