а
trait Animal {
fn make_sound()
}
struct Dog {
}
impl Animal for Dog {
fn make_sound() {
print!("bark");
}
}
struct Cat {
}
impl Animal for Cat {
fn make_sound() {
print!("meow");
}
}
fn make_sound_twice<T: Animal>(animal: T) {
T.make_sound();
T.make_sound();
}
fn main() {
let dog1 = Dog { };
let cat1 = Cat { };
dog1.make_sound(); // bark
cat1.make_sound(); // meow
// Статический полиморфизм
make_sound_twice(dog1) // barkbark
make_sound_twice(cat1) // meowmeow
}