You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Rust中Option<bool>的内存大小为1?状态是否打包进bool?

Option 的内存优化细节

对,Rust确实通过**空值优化(Null Pointer Optimization, NPO)**将Option的状态信息打包进了bool类型的存储空间中,让Option<bool>仅用1字节就能表示None、Some(false)、Some(true)三种状态。

具体来说,bool类型在Rust中虽然只需要1位就能区分false和true,但它实际占用1字节(8位)的内存——剩下的7位属于未使用的冗余空间。编译器会直接利用这些冗余位来标记None状态:

  • 用字节值0表示 Some(false)
  • 用字节值1表示 Some(true)
  • 用任意非0/1的字节值(比如2)表示 None

这种优化完全不需要额外的内存来存储Option的标签位,所以Option<bool>的内存大小和bool本身一致,都是1字节。

示例代码验证:

use std::mem::size_of;

fn main() {
    println!("{}", size_of::<Option<bool>>()); // 输出:1
}

内容的提问来源于stack exchange,提问作者drcole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:18:24