2 #![allow(non_camel_case_types)]
5 fn speak(&mut self) -> isize;
15 fn bark(&mut self) -> isize {
16 println!("Woof {} {}", self.barks, self.volume);
17 self.barks += 1_usize;
18 if self.barks % 3_usize == 0_usize {
21 if self.barks % 10_usize == 0_usize {
24 println!("Grrr {} {}", self.barks, self.volume);
30 fn speak(&mut self) -> isize {
51 fn speak(&mut self) -> isize {
57 pub fn meow_count(&self) -> usize {
63 fn meow(&mut self) -> usize {
65 self.meows += 1_usize;
66 if self.meows % 5_usize == 0_usize {
73 fn cat(in_x: usize, in_y: isize, in_name: String) -> cat {
82 fn annoy_neighbors(critter: &mut dyn noisy) {
83 for _i in 0_usize..10 { critter.speak(); }
87 let mut nyan: cat = cat(0_usize, 2, "nyan".to_string());
88 let mut whitefang: dog = dog();
89 annoy_neighbors(&mut nyan);
90 annoy_neighbors(&mut whitefang);
91 assert_eq!(nyan.meow_count(), 10_usize);
92 assert_eq!(whitefang.volume, 1);