|
|
|
@ -103,7 +103,7 @@ sunface发表了微博好像微博没Tweet好用
|
|
|
|
|
|
|
|
|
|
#### 默认实现
|
|
|
|
|
|
|
|
|
|
你可以在特征中定义具有**默认实现**的方法,这样其它类型无需再实现该方法,或者也可以选择重载该方法:
|
|
|
|
|
你可以在特征中定义具有**默认实现**的方法,这样其它类型无需再实现该方法,或者也可以选择重写该方法:
|
|
|
|
|
|
|
|
|
|
```rust
|
|
|
|
|
pub trait Summary {
|
|
|
|
@ -125,7 +125,7 @@ impl Summary for Weibo {
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
可以看到,`Post` 选择了默认实现,而 `Weibo` 重载了该方法,调用和输出如下:
|
|
|
|
|
可以看到,`Post` 选择了默认实现,而 `Weibo` 重写了该方法,调用和输出如下:
|
|
|
|
|
|
|
|
|
|
```rust
|
|
|
|
|
println!("{}",post.summarize());
|
|
|
|
@ -432,7 +432,7 @@ fn main() {
|
|
|
|
|
|
|
|
|
|
再如 `Copy` 特征,它也有一套自动实现的默认代码,当标记到一个类型上时,可以让这个类型自动实现 `Copy` 特征,进而可以调用 `copy` 方法,进行自我复制。
|
|
|
|
|
|
|
|
|
|
总之,`derive` 派生出来的是 Rust 默认给我们提供的特征,在开发过程中极大的简化了自己手动实现相应特征的需求,当然,如果你有特殊的需求,还可以自己手动重载该实现。
|
|
|
|
|
总之,`derive` 派生出来的是 Rust 默认给我们提供的特征,在开发过程中极大的简化了自己手动实现相应特征的需求,当然,如果你有特殊的需求,还可以自己手动重写该实现。
|
|
|
|
|
|
|
|
|
|
详细的 `derive` 列表参见[附录-派生特征](https://course.rs/appendix/derive.html)。
|
|
|
|
|
|
|
|
|
|