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

前端 未结 4 1722
一个人的身影
一个人的身影 2021-01-17 10:03

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

相关标签:
4条回答
  • 2021-01-17 10:12

    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?
    0 讨论(0)
  • 2021-01-17 10:13

    You may use .into():

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

    playground

    0 讨论(0)
  • 2021-01-17 10:33

    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);
    
    0 讨论(0)
  • 2021-01-17 10:36

    Cast it:

    fn main() {
        println!("{}", true as i32)
    }
    
    0 讨论(0)
提交回复
热议问题