use auto_delegate::{delegate, Delegate}; #[delegate] trait Calc { fn calc(&self, x1: usize, x2: usize) -> usize; } #[derive(Default)] struct CalcAdd; impl Calc for CalcAdd { fn calc(&self, x1: usize, x2: usize) -> usize { x1 + x2 } } #[derive(Default, Delegate)] #[to(Calc)] struct Parent(T) where T: Calc + Default; fn main() { let parent = Parent::::default(); assert_eq!(parent.calc(2, 3), 5); }