35 lines
554 B
Rust
35 lines
554 B
Rust
//@ 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);
|
|
}
|