mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 16:24:46 +00:00
27 lines
510 B
Rust
27 lines
510 B
Rust
//@ check-pass
|
|
// issue: rust-lang/rust#102933
|
|
|
|
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!();
|
|
}
|