示例代码如下:本文讲的是trait与impl与Box与dyn的联合示例
trait Animal {
fn print_name(&self);
}
struct Cat{
name:String,
}
impl Animal for Cat{
fn print_name(&self) {
println!("Animal name is {}",self.name);
}
}
struct Dog{
name:String,
}
impl Animal for Dog{
fn print_name(&self) {
println!("Animal name is {}",self.name);
}
}
fn who(i:i32) -> Box<dyn Animal>{
if i==1{
Box::new(Cat{name:String::from("Cat")}) as Box<dyn Animal>
}else{
Box::new(Dog{name:String::from("Dog")}) as Box<dyn Animal>
}
}
fn main(){
let cat = who(1);
cat.print_name();
}