布尔类型
#![allow(unused)] fn main() { let b: bool = true; }
布尔类型 或 bool 是一种原始数据类型,它可以取两个值中的一个,称为 true 和 false。
可以使用 字面量表达式 创建此类型的值,使用关键字 true
和 false
分别对应于同名值。
布尔类型的对象 大小和对齐 均为 1。值 false 的位模式为 0x00
,值 true 的位模式为 0x01
。布尔类型的对象具有任何其他位模式是 未定义行为。
布尔类型是各种 表达式 中许多操作数的类型
- if 表达式 和 while 表达式 中的条件操作数
- 惰性布尔运算符表达式 中的操作数
**注意**:布尔类型的作用类似于 枚举类型,但它不是枚举类型。在实践中,这主要意味着构造函数不与类型关联(例如
bool::true
)。
与所有基元一样,布尔类型 实现 了 特征 Clone
、Copy
、Sized
、Send
和 Sync
。
**注意**:有关库操作,请参阅 标准库文档。
布尔值的操作
当对布尔类型的操作数使用某些运算符表达式时,它们将使用 布尔逻辑 的规则进行求值。
逻辑非
b | !b |
---|---|
true | false |
false | true |
逻辑或
a | b | a | b |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
逻辑与
a | b | a & b |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
逻辑异或
a | b | a ^ b |
---|---|---|
true | true | false |
true | false | true |
false | true | true |
false | false | false |
比较
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
位有效性
保证 bool
的单个字节已初始化(换句话说,transmute::<bool, u8>(...)
始终是安全的——但由于某些位模式是无效的 bool
,因此反过来并不总是安全的)。