Boolean type
布尔型
boolean.md
commit: d3a66eb69892b25794b2d82a1249ec01d8ead9f1
本章译文最后维护日期:2023-11-05
#![allow(unused)] fn main() { let b: bool = true; }
布尔型或布尔数是一种可以为*真(true
)或假(false
)*的原语数据类型。
这种类型的值可以使用字面量表达式创建,使用关键字 true
和 false
来表达对应名称的值。
该类型是此语言的预导入包的一部分,使用名称 bool
来表示。
布尔型的对象内存宽度和对齐量均为1。false 的位模式为 0x00
, true 的位模式为 0x01
。其他的任何其他位模式的布尔型的象都是未定义的行为。
布尔型是多种表达式的操作数的类型:
注意:布尔型的行为类似于枚举类型,但它确实不是枚举类型。在实践中,这主要意味着构造函数不与类型相关联(例如没有
bool::true
这种写法)。
和其他所有的原语类型一样,布尔型实现了 Clone
、Copy
、Sized
、Send
和 Sync
这些 traits。
注意: 参见标准库文档中的相关操作运算。
Operations on boolean values
布尔运算
当使用带有布尔型的操作数的特定操作符表达式时,它们使用[布尔逻辑规则][boolean logic]进行计算。Logical not
逻辑非
b | !b |
---|---|
true | false |
false | true |
Logical or
逻辑或
a | b | a | b |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
Logical and
逻辑与
a | b | a & b |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
Logical xor
逻辑异或
a | b | a ^ b |
---|---|---|
true | true | false |
true | false | true |
false | true | true |
false | false | false |
Comparisons
比较
a | b | a == b |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | true |
a | b | a > b |
---|---|---|
true | true | false |
true | false | true |
false | true | false |
false | false | false |
a != b
等同于!(a == b)
a >= b
等同于a == b | a > b
a < b
等同于!(a >= b)
a <= b
等同于a == b | a < b
Bit validity
位有效性
Rust会保证 bool
类型的单个字节被初始化(换句话说,transmute::<bool, u8>(...)
总是健全(sound)的——但由于一些位模式是无效的 bool
,因此相反的操作并不总是健全的)。