fn main() {
let n: i32 = 89;
// create text labels for each possible case
let result = [
"negative", // index 0
"zero", // index 1
"positive", // index 2
];
// compute an index without using any conditional statements
// (n > 0) becomes 1 if true, 0 if false
// (n < 0) becomes 1 if true, 0 if false
// index = 1 + (n > 0) - (n < 0)
let index: usize = (1 + (n > 0) as i32 - (n < 0) as i32) as usize;
// print the classification
println!("{}", result[index]);
/*
Checks:
n = -3
(n > 0) = 0
(n < 0) = 1
index = 1 + 0 - 1 = 0
result = negative
n = 0
(n > 0) = 0
(n < 0) = 0
index = 1 + 0 - 0 = 1
result = zero
n = 89
(n > 0) = 1
(n < 0) = 0
index = 1 + 1 - 0 = 2
result = positive
*/
}
/*
run:
positive
*/