布尔类型

#![allow(unused)]
fn main() {
let b: bool = true;
}

布尔类型bool 是一种原始数据类型,它可以取两个值中的一个,称为 truefalse

可以使用 字面量表达式 创建此类型的值,使用关键字 truefalse 分别对应于同名值。

此类型是 语言前奏 的一部分,其 名称bool

布尔类型的对象 大小和对齐 均为 1。值 false 的位模式为 0x00,值 true 的位模式为 0x01。布尔类型的对象具有任何其他位模式是 未定义行为

布尔类型是各种 表达式 中许多操作数的类型

**注意**:布尔类型的作用类似于 枚举类型,但它不是枚举类型。在实践中,这主要意味着构造函数不与类型关联(例如 bool::true)。

与所有基元一样,布尔类型 实现特征 CloneCopySizedSendSync

**注意**:有关库操作,请参阅 标准库文档

布尔值的操作

当对

布尔类型的操作数使用某些运算符表达式时,它们将使用 布尔逻辑 的规则进行求值。

逻辑非

b!b
truefalse
falsetrue

逻辑或

aba | b
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

逻辑与

aba & b
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

逻辑异或

aba ^ b
truetruefalse
truefalsetrue
falsetruetrue
falsefalsefalse

比较

aba == b
truetruetrue
truefalsefalse
falsetruefalse
falsefalsetrue
aba > b
truetruefalse
truefalsetrue
falsetruefalse
falsefalsefalse
  • 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,因此反过来并不总是安全的)。