2 #![allow(non_camel_case_types)]
6 fn speak(&mut self) -> isize;
16 fn bark(&mut self) -> isize {
17 println!("Woof {} {}", self.barks, self.volume);
18 self.barks += 1_usize;
19 if self.barks % 3_usize == 0_usize {
22 if self.barks % 10_usize == 0_usize {
25 println!("Grrr {} {}", self.barks, self.volume);
31 fn speak(&mut self) -> isize {
52 fn speak(&mut self) -> isize {
58 pub fn meow_count(&self) -> usize {
64 fn meow(&mut self) -> usize {
66 self.meows += 1_usize;
67 if self.meows % 5_usize == 0_usize {
74 fn cat(in_x: usize, in_y: isize, in_name: String) -> cat {
83 fn annoy_neighbors(critter: &mut dyn noisy) {
84 for _i in 0_usize..10 { critter.speak(); }
88 let mut nyan: cat = cat(0_usize, 2, "nyan".to_string());
89 let mut whitefang: dog = dog();
90 annoy_neighbors(&mut nyan);
91 annoy_neighbors(&mut whitefang);
92 assert_eq!(nyan.meow_count(), 10_usize);
93 assert_eq!(whitefang.volume, 1);