//@ 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); }