use auto_delegate::{delegate, Delegate};
#[delegate]
trait Adder {
fn increment(&mut self) -> usize;
}
struct Child {
num: usize,
}
impl Adder for Child {
fn increment(&mut self) -> usize {
self.num += 1;
self.num
}
}
#[derive(Delegate)]
struct Parent {
#[to(Adder)]
child: Child,
}
fn main() {
let mut parent = Parent {
child: Child { num: 0 },
};
assert_eq!(parent.increment(), 1);
assert_eq!(parent.increment(), 2);
assert_eq!(parent.increment(), 3);
}