]> git.lizzy.rs Git - rust.git/blob - src/test/auxiliary/cci_class_cast.rs
Rollup merge of #28991 - goyox86:goyox86/rustfmting-liblog-II, r=alexcrichton
[rust.git] / src / test / auxiliary / cci_class_cast.rs
1 // Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 pub mod kitty {
12     use std::fmt;
13
14     pub struct cat {
15       meows : usize,
16       pub how_hungry : isize,
17       pub name : String,
18     }
19
20     impl fmt::Display for cat {
21         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
22             write!(f, "{}", self.name)
23         }
24     }
25
26     impl cat {
27         fn meow(&mut self) {
28             println!("Meow");
29             self.meows += 1;
30             if self.meows % 5 == 0 {
31                 self.how_hungry += 1;
32             }
33         }
34
35     }
36
37     impl cat {
38         pub fn speak(&mut self) { self.meow(); }
39
40         pub fn eat(&mut self) -> bool {
41             if self.how_hungry > 0 {
42                 println!("OM NOM NOM");
43                 self.how_hungry -= 2;
44                 return true;
45             }
46             else {
47                 println!("Not hungry!");
48                 return false;
49             }
50         }
51     }
52
53     pub fn cat(in_x : usize, in_y : isize, in_name: String) -> cat {
54         cat {
55             meows: in_x,
56             how_hungry: in_y,
57             name: in_name
58         }
59     }
60 }