-
Open the Cargo.toml file that has been generated earlier for you.
-
In the bin folder, create a file called return_abstract.rs.
-
Add the following code, and run it with cargo run --bin return_abstract:
1 #![feature(conservative_impl_trait)]
2
3 trait Animal {
4 fn do_sound(&self);
5 }
6
7 struct Dog;
8 impl Animal for Dog {
9 fn do_sound(&self) {
10 println!("Woof");
11 }
12 }
13
14 fn main() {
15 // The caller doesn't know which exact object he gets
16 // He knows only that it implements the Animal trait
17 let animal = create_animal();
18 animal.do_sound();
19
20 for word in caps_words_iter("do you feel lucky, punk‽") {
21 println!("{}", word);
22 }
23
24 let multiplier = create_multiplier(23);
25 let result = multiplier(3);
26 println!("23 * 3 = {}", result);
27 }
28
29 // The impl trait syntax allows us to use abstract...