布尔类型

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

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

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

此类型是语言 prelude 的一部分,名称为 bool

布尔类型的对象的大小和对齐方式均为 1 字节。

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

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

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

像所有原始类型一样,布尔类型实现了 traits 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 无效,因此反向操作不一定总是安全的)。