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