简体   繁体   中英

How do I convert a boolean to an integer in Rust?

How do I convert a boolean to an integer in Rust? As in, true becomes 1, and false becomes 0.

Cast it:

fn main() {
    println!("{}", true as i32)
}

Use an if statement:

if some_boolean { 1 } else { 0 }

See also:

A boolean value in Rust is guaranteed to be 1 or 0 :

The bool represents a value, which could only be either true or false . If you cast a bool into an integer, true will be 1 and false will be 0.

A boolean value, which is neither 0 nor 1 is undefined behavior :

A value other than false ( 0 ) or true ( 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);

You may use .into() :

let a = true;
let b: i32 = a.into();
println!("{}", b); // 1

let z: isize = false.into();
println!("{}", z); // 0

playground

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM