Rust中结构体有三种:单元结构体,元组结构体以及句名结构体,它代表And含义,在生成时必须为所有成员赋值
Rust中结构体有三种:单元结构体,元组结构体以及句名结构体,它代表And
含义,在生成时必须为所有成员赋值。具体形式如下:
计算机按照字节寻址,指令是字节的整数倍,为了最大化CPU访问效率,Rust编译器会对结构体的字段进行优化重排,如:
但是你也可以通过属性宏来让结构体按照C语言的内存排布规则排布,如:
在绝大对数编程语言中,我们都会使用结构体来组织一些数据结构,在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
更多内容,欢迎关注公众号拾一维
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!