Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Lazy Boolean Operators

The boolean operators && and || are lazy, which means that they only evaluate their right-hand-side if it is can influence the final value of the operation.

#![allow(unused)]
fn main() {
$lhs || $rhs
// desugars to:
if $lhs { true } else { $rhs }
}
#![allow(unused)]
fn main() {
$lhs && $rhs
// desugars to:
if $lhs { $rhs } else { false }
}

Inside an if expression, the && and || operators are also allowed to be mixed with if let (this is called "let-chains"). We do not touch these at this stage, they will be dealt with in a later pass.

After this step, the only && and || operators left are involved in let-chains. In particular, they're all directly inside an if.