blob: 49fc0eb7cad0100229f65e31a56335515e498444 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
struct Animal {
age: i32,
}
type Cat = Animal;
type Dog = Animal;
type LoudDog = Dog;
trait Talk {
fn talk(&self) -> ();
}
impl Talk for Animal {
default fn talk(&self) { // note the use of the default
println!("<silence>");
}
}
impl Talk for Cat {
fn talk(&self) {
println!("Meow");
}
}
impl Talk for Dog {
fn talk(&self) {
println!("Woof!");
}
}
impl Talk for LoudDog {
fn talk(&self) {
println!("WOOF!!");
}
}
fn main() {
let fluffy = Cat(Animal { age: 4 });
let max = Dog(Animal { age: 2 });
let neighbours_dog = LoudDog(Animal { age: 7 });
fluffy.talk();
max.talk();
neighbours_dog.talk();
}
|