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