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

03 Rust中的结构体

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

3.1 结构体的种类

Rust中结构体有三种:单元结构体,元组结构体以及句名结构体,它代表And含义,在生成时必须为所有成员赋值。具体形式如下:

3.1.png

3.2 结构体的内存排布

计算机按照字节寻址,指令是字节的整数倍,为了最大化CPU访问效率,Rust编译器会对结构体的字段进行优化重排,如:

3.2.png 但是你也可以通过属性宏来让结构体按照C语言的内存排布规则排布,如:

3.2.png

3.3 结构体、泛型和Trait

在绝大对数编程语言中,我们都会使用结构体来组织一些数据结构,在Rust中也是这样。特别要注意的是它和泛型参数结合的使用。我们来看一个比较复杂的应用场景

3.4.png

在这个示例中,我们使用了带有多个参数的泛型结构体,并且还使用了幻影类型PhantomData占位。这样结构体体就无需在声明时在字段中将参数定义为泛型了。在实现具体的trait 我们才为泛型指明类型是什么,并且不同的trait我们指定的泛型具体类型也不同。在实际的业务场景中,我们经常会看到这种形式的写法,注意要区分不同情况下的的泛型约束,然后才能构造出正确的类型

示例代码Github地址:

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

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

版权声明

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

发表评论:

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

热门