summaryrefslogtreecommitdiff
path: root/meap/meap-code/ch1/ch1-animals-tuple-structs.rs
blob: ed479ed2665cb9635127c5220e25a685812fedf2 (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
struct Animal {
	age: i32,
}

struct Cat(Animal);
struct Dog(Animal);
struct LoudDog(Animal);

trait Talk {
	fn talk(&self) -> ();
}

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();
}