| // run-pass | |
| struct Counter { | |
| value: usize | |
| } | |
| impl Counter { | |
| fn new(v: usize) -> Counter { | |
| Counter {value: v} | |
| } | |
| fn inc<'a>(&'a mut self) -> &'a mut Counter { | |
| self.value += 1; | |
| self | |
| } | |
| fn get(&self) -> usize { | |
| self.value | |
| } | |
| fn get_and_inc(&mut self) -> usize { | |
| let v = self.value; | |
| self.value += 1; | |
| v | |
| } | |
| } | |
| pub fn main() { | |
| let v = Counter::new(22).get_and_inc(); | |
| assert_eq!(v, 22); | |
| let v = Counter::new(22).inc().inc().get(); | |
| assert_eq!(v, 24); | |
| } |