A boolean value in Rust is guaranteed to be 1
or 0
:
The
bool
represents a value, which could only be eithertrue
orfalse
. If you cast abool
into an integer,true
will be 1 andfalse
will be 0.
A boolean value, which is neither0
nor1
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);