05 Rust中的枚举

  • 拾一维
  • 更新于 2023-03-08 16:31
  • 阅读 1029

创建和访问枚举的创建和访问在结构上与结构体很相似,成员访问是以路径符号::而不是点号

5.1 创建和访问

枚举的创建和访问在结构上与结构体很相似,成员访问是以路径符号::而不是点号.,下面列举了常见的枚举形式

5.1.png

5.2 内存排布和优化

Rust 本质上是一个带标签的联合体,标签最大等于计算机字长:通常是8字节

5.2.png Option 枚举体优化

可以看到,Option枚举包裹引用类型的数据结构时,优化掉了tag。核心是对于Option而言,tag只有两种情况,0或者1,分别代表None和Some。Rust中引用占8个字节,tag要对齐就要再加七,非常浪费资源。所以当为Some时就优化了这个tag

5.3.png 类Result/Option枚举体优化

形式上类同Result/Option的枚举都享受同样的引用类型优化

5.4.png

再次强调,它们都是针对引用的优化,并不适用其他类型,看下面这个例子

5.5.png

5.3 应用场景

枚举被广泛的应用在各种场景中,如下是简单的归类

5.6.png

关于枚举,今天就分享这么多了,后面涉及到的我们再继续补充

示例代码Github地址:

https://github.com/shiyivei/from-principle-to-practice/blob/main/src/principle-and-practice/src/type_system/custom_struct.rs

更多内容,欢迎关注公众号拾一维

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
拾一维
拾一维
For science, art and meaning