// check-pass use std::future::Future; pub trait Service { type Response; type Future: Future; } pub trait A1: Service {} pub trait A2: Service>> + A1 { fn foo(&self) {} } pub trait B1: Service>> {} pub trait B2: Service + B1 { fn foo(&self) {} } fn main() { let x: &dyn A2 = todo!(); let x: &dyn B2 = todo!(); }