Rust 方法
阐述
Rust 的方法是和 Rust 结构体或者 Rust 枚举关联的函数,结构体的定义和方法的定义是分离的。
在方法中,我们用 self
来代表对象本身,并且有几种不同的写法:
self
表示所有权转移到该方法中,这种形式用的较少&self
表示该方法对对象的不可变借用&mut self
表示可变借用
如果方法包含 self
,就是绑定在对象上的,否则就是绑定在类型上的,后者可以用来定义构造函数。
实例
结构体
impl Rectangle {
fn width(&self) -> bool {
self.width > 0
}
}
fn main() {
let rect1 = Rectangle {
width: 30,
height: 50,
};
if rect1.width() {
println!("The rectangle has a nonzero width; it is {}", rect1.width);
}
}
枚举
##![allow(unused)]
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
ChangeColor(i32, i32, i32),
}
impl Message {
fn call(&self) {
// 在这里定义方法体
}
}
fn main() {
let m = Message::Write(String::from("hello"));
m.call();
}
性质
方法的调用具有自动引用和解引用的功能,也就是会为 object.something()
中添加 &, &mut, *
等等与方法的签名匹配。