结构体
元组结构体(tuple struct)
用于命名元组并和其他元组进行区分:
struct Color(i32, i32, i32);
struct Point(i32, i32, i32);
let black = Color(0, 0, 0);
let origin = Point(0, 0, 0);
由于定义了元组结构体所有 black
和 origin
是两个不同的类型。
没有字段的结构体:类单元(Unit-Like)结构体
没有任何字段的结构体和单元类型 ()
类似,用于实现一些特性(trait)但是没有任何数据。
方法语法
-
self
占有所有权 -
&self
不可变借用 -
&mut self
可变借用 -
自动引用和解引用
在 Rust 中进行方法调用,如
object.something
,Rust 会自动添加&
&mut
或者*
, 用以自动匹配方法签名。以下是等价的:
p1.distance(&p2);
(&p1).distance(&p2);
方法如果不声明 self
行参则是一个关联方法(静态方法),通过 ::
调用
struct Rectangle {
width: u32,
height: u32,
}
impl Rectangle {
fn square(size: u32) -> Rectangle {
Rectangle{ width: size, height: size }
}
}
let r = Rectangle::square(10);
每一个结构体可以有多个 impl
块。