简介
Rust里的struct,就像一些语言的class。它是一种自定义类型,可以把几个相关的值(在Rust里可以是0个值)组合起来,还可以定义方法。
struct的可变性和所有权规则
一个可变型的struct变量,它的全部字段都可变的。不能把某些字段标记为不可变。
在从一个struact创建另一个struct时,如果要利用旧的struct里大部分字段时,可以使用struct update syntax
。注意,使用struct update syntax
时,如果构建新的struct时需要旧的struct的没有实现copy的字段,那这些字段会move到新的struct。然后,旧struct就失效了。这种做法可以让struct里的字段,遵守所有权规则的前2条。
tuple structs
这种语法让你在使用struct时,就像使用tuple一样。
没有任何字段的struct
这种struct也挺有用。它没有字段,占用内存为0,但它可以在业务逻辑中表示某种类型,也能定义关联函数(就像一些语言里的静态方法)。
方法
Rust的方法一般指的是实例方法。 若第一个参数可以是self,那它就是实例方法。 注意self传参有几种形式
&self
传入这个实例的不可变引用,方法内不能修改实例。&mut self
,传入这个实例的可变引用self
直接传入这个实例,会获得实例的所有权。
在impl
块里声明的函数的第一个参数如果不是self,那这就是个关联函数(Associated Functions),类似于其它语言中的静态方法。它只能以SomeStruct::some_method
的形式调用。