如何在Rust中将布尔值转换为整数?
如何在Rust中将布尔值转换为整数?如中所示,如何在Rust中将布尔值转换为整数?,rust,Rust,如何在Rust中将布尔值转换为整数?如中所示,true变为1,false变为0。将其转换为: fn main() { println!("{}", true as i32) } 使用if语句: if some_boolean { 1 } else { 0 } 另见: Rust中的布尔值为: bool表示一个值,该值只能是true或false。如果将bool转换为整数,true将为1,false将为0 既不是0也不是1的布尔值是: bool中除false(0)或true(1)以外的
true
变为1,false
变为0。将其转换为:
fn main() {
println!("{}", true as i32)
}
使用
if
语句:
if some_boolean { 1 } else { 0 }
另见:
- Rust中的布尔值为:
bool
表示一个值,该值只能是true
或false
。如果将bool
转换为整数,true
将为1,false
将为0
既不是0
也不是1
的布尔值是:
bool中除false
(0
)或true
(1
)以外的值
因此,您可以将其强制转换为基本体:
assert_eq!(0, false as i32);
assert_eq!(1, true as i32);
您可以使用.into()
:
@Stargateur我正在将它们打印到屏幕上进行调试,在我的情况下,打印出1和0比
true
和false
更方便。有时在算术中有用,例如pub fn calculateprice(num:i32)->i32{return((num>40)as i32*num)+num;}
A显示这比其他答案快20%。@Stein我认为你的链接已经过时了。这个链接还没有完全过时,但同时我添加了更多的基准测试,不清楚这是关于选项基数测试的。此外,它也不会链接到特定的文件。顺便说一句,他们仍然报告了与今天的夜间锈病相同的表现:这个答案,或者类似的匹配表达式,速度更快(当在微基准中使用时)。@Stein Current nightly似乎为is_some_生成了与和is_some__if
相同的代码。@SolomonUcko似乎不太一样。今天,基准仍然报告相同的差异(不管文件中的名称和位置,这可能会影响对齐)。当我将非常有用的锁销链接中的-O
与-C opt level=3
交换货台
进给时,它确实报告了装配差异。
let a = true;
let b: i32 = a.into();
println!("{}", b); // 1
let z: isize = false.into();
println!("{}", z); // 0