01-布尔类型

布尔类型 — The Rust Reference

译文 · 基于 The Rust Reference

原文链接: https://doc.rust-lang.org/reference/types/boolean.html

r[type.bool]

布尔类型

1
let b: bool = true;

r[type.bool.intro] 布尔类型或 bool 是一种基本数据类型,只能取两个值之一,分别称为 true 和 false。

r[type.bool.literal] 该类型的值可以用字面量表达式创建,关键字 true 和 false 对应同名的值。

r[type.bool.namespace] 该类型属于语言 prelude,其名称为 bool。

r[type.bool.layout] 布尔类型对象的大小和对齐均为 1。

r[type.bool.repr] false 的位模式为 0x00,true 的位模式为 0x01。布尔类型对象具有任何其他位模式都是未定义行为。

r[type.bool.use] 布尔类型是多种表达式中许多操作数的类型:

r[type.bool.use-in-condition]

r[type.bool.use-in-lazy-operator]

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

r[type.bool.traits] 与所有基本类型一样,布尔类型实现了 trait Clone、Copy、Sized、Send 和 Sync。

注意 库层面的操作见标准库文档。

r[type.bool.expr]

布尔值上的运算

当某些运算符表达式的操作数是布尔类型时,它们按布尔逻辑的规则求值。

r[type.bool.expr.not]

逻辑非

b!b
truefalse
falsetrue

r[type.bool.expr.or]

逻辑或

aba | b
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

r[type.bool.expr.and]

逻辑与

aba & b
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

r[type.bool.expr.xor]

逻辑异或

aba ^ b
truetruefalse
truefalsetrue
falsetruetrue
falsefalsefalse

r[type.bool.expr.cmp]

比较

r[type.bool.expr.cmp.eq]

aba == b
truetruetrue
truefalsefalse
falsetruefalse
falsefalsetrue

r[type.bool.expr.cmp.greater]

aba > b
truetruefalse
truefalsetrue
falsetruefalse
falsefalsefalse

r[type.bool.expr.cmp.not-eq]

  • a != b 等价于 !(a == b)

r[type.bool.expr.cmp.greater-eq]

  • a >= b 等价于 a == b | a > b

r[type.bool.expr.cmp.less]

  • a < b 等价于 !(a >= b)

r[type.bool.expr.cmp.less-eq]

  • a <= b 等价于 a == b | a < b

r[type.bool.validity]

位有效性

bool 的那一个字节保证已初始化(换句话说,transmute::<bool, u8>(...) 总是健全的——但由于某些位模式不是合法 bool,反过来并不总是健全)。

最后修改 August 21, 2026: 更新 (76fc81a2e)