03 Rust中的结构体

  • 拾一维
  • 更新于 2023-03-07 23:19
  • 阅读 1671

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

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

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

  • 原创
  • 学分: 2
  • 分类: Rust
  • 标签: Rust 
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

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