Trait
Trait 是什麼東西
Trait 中定義了一組方法,類似於其他語言當中的接口,但是不同於其他語言中的接口(後面會展開)。因爲其內部是一組方法,因此 Trait 所定義的是一種公共行爲。比如所有男生被要求上公廁的時候只能進男廁所,所有運動員被要求不允許毆打裁判……也就是讓一些不同的類型卻擁有相同的行爲(可調用方法)。
自定義 Trait
你可以通過如下的方式自定義一個 Trait,這個 Trait 中擁有一個方法簽名(只有簽名,沒有實現),他的意思是要求具備 SayHello
這個 Trait 的類型都必須擁有一個方法,這個方法名叫 say
,並且這個方法返回一個 str
。
trait SayHello {
fn say(&self) -> &'static str;
}
PS:&self
參數是必要的,不然實例化後的對象無法調用。
爲類型實現 Trait
如果你希望爲自己的類型實現 SayHello
這個 Trait 你可以像這樣
struct Man {
name: String,
}
impl SayHello for Man {
fn say(&self) -> &'static str {
"Hello Man"
}
}
fn main() {
let m: Man = Man{name: String::from("Ant")};
println!("{}",m.say());
}
默認實現
如果你定義來一百個類型,而每一個類型都需要實現 SayHello
Trait,但是每一個 say
方法返回的內容都是一模一样的,因此你可以爲 Trait 添加默認實現。
trait SayHello {
fn say(&self) -> &'static str {
"Hello
标签:類型,Trait,實現,say,SayHello,Man,Rust,Trist
From: https://www.cnblogs.com/ltozvxe/p/16800948.html