- self表示调用方法的对象,作为类方法的第一个参数,类似于C++中的this。
- Self表示调用者的类型。
impl Clone for MyType {
// 可以直接写具体类型
fn clone(&self) -> MyType;
// 也可以用Self代替
fn clone(&self) -> Self;
}
impl MySuperLongType {
// 用Self写起来更短
fn new(a: u32) -> Self { ... }
}
Rust中函数参数均需要注明类型,但是self则不需要,这是一个语法糖(syntactic sugar),以下示例中两两等价:
impl MyType{
fn doit(self){}
fn doit(self: Self){}
fn doit(&self) {}
fn doit(self: &Self){}
fn doit(&mut self) {}
fn doit(self: &mut Self) {}
}
网友评论