区块链 区块链技术 比特币公众号手机端

05 Rust中的枚举

liumuhui 2年前 (2023-06-28) 阅读数 199 #技术
文章标签 Rust

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

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

版权声明

本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门