特徵
Rust 可讓您依據特徵對型別進行抽象化處理,這與介面相似:
trait Pet { fn name(&self) -> String; } struct Dog { name: String, } struct Cat; impl Pet for Dog { fn name(&self) -> String { self.name.clone() } } impl Pet for Cat { fn name(&self) -> String { String::from("The cat") // No name, cats won't respond to it anyway. } } fn greet<P: Pet>(pet: &P) { println!("Who's a cutie? {} is!", pet.name()); } fn main() { let fido = Dog { name: "Fido".into() }; greet(&fido); let captain_floof = Cat; greet(&captain_floof); }