mirror of https://github.com/rust-lang/rust.git
26 lines
769 B
Rust
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");
|
|
}
|
|
}
|