布尔类型

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

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

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

该类型是 语言 prelude 的一部分,其名称bool

具有布尔类型的对象,其大小和对齐都为 1。

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

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

注意

布尔类型的行为类似于但不是枚举类型。实际上,这主要意味着构造函数不与该类型关联(例如 bool::true)。

与所有原始类型一样,布尔类型实现了 trait 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 >= ba == b | a > b 相同
  • a < b!(a >= b) 相同
  • a <= ba == b | a < b 相同

位有效性

bool 的单个字节保证已初始化(换句话说,transmute::<bool, u8>(...) 总是 sound – 但由于某些位模式是无效的 bool,因此反向操作并非总是 sound)。