rust/tests/ui/or-patterns/lazy-and-or.rs

26 lines
769 B
Rust

//@ run-pass
// This test verifies the short-circuiting behavior of logical operators `||` and `&&`.
// It ensures that the right-hand expression is not evaluated when the left-hand
// expression is sufficient to determine the result.
fn would_panic_if_called(x: &mut isize) -> bool {
*x += 1;
assert!(false, "This function should never be called due to short-circuiting");
false
}
fn main() {
let x = 1 == 2 || 3 == 3;
assert!(x);
let mut y: isize = 10;
println!("Result of short-circuit: {}", x || would_panic_if_called(&mut y));
assert_eq!(y, 10, "y should remain 10 if short-circuiting works correctly");
if true && x {
assert!(true);
} else {
assert!(false, "This branch should not be reached");
}
}