问题
How do I convert a boolean to an integer in Rust? As in, true becomes 1, and false becomes 0.
回答1:
Cast it:
fn main() {
println!("{}", true as i32)
}
回答2:
A boolean value in Rust is guaranteed to be 1 or 0:
The
boolrepresents a value, which could only be eithertrueorfalse. If you cast aboolinto an integer,truewill be 1 andfalsewill be 0.
A boolean value, which is neither 0 nor 1 is undefined behavior:
A value other than
false(0) ortrue(1) in a bool.
Therefore, you can just cast it to a primitive:
assert_eq!(0, false as i32);
assert_eq!(1, true as i32);
回答3:
Use an if statement:
if some_boolean { 1 } else { 0 }
See also:
- How can I port C++ code that uses the ternary operator to Rust?
回答4:
You may use .into():
let a = true;
let b: i32 = a.into();
println!("{}", b); // 1
let z: isize = false.into();
println!("{}", z); // 0
playground
来源:https://stackoverflow.com/questions/55461617/how-do-i-convert-a-boolean-to-an-integer-in-rust