03 Rust中的结构体

文章介绍了Rust中的三种结构体类型:单元结构体、元组结构体和具名结构体,强调了结构体内存的优化重排以及如何通过属性宏控制内存布局。此外,文章探讨了结构体与泛型、Trait的结合使用,特别是利用PhantomData实现泛型约束的技巧,在不同trait中指定不同的泛型类型。
摘要由CSDN通过智能技术生成

1 结构体的种类


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

2 结构体的内存排布


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

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

3 结构体、泛型和Trait


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

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

示例代码Github地址:

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

更多内容,欢迎关注

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值