2019-04-28 22:54:06 +09:00
|
|
|
// compile-pass
|
|
|
|
// edition:2018
|
|
|
|
|
|
|
|
#![feature(async_await, await_macro)]
|
|
|
|
|
|
|
|
trait MyClosure {
|
|
|
|
type Args;
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<R> MyClosure for dyn FnMut() -> R
|
|
|
|
where R: 'static {
|
|
|
|
type Args = ();
|
|
|
|
}
|
|
|
|
|
|
|
|
struct MyStream<C: ?Sized + MyClosure> {
|
|
|
|
x: C::Args,
|
|
|
|
}
|
|
|
|
|
|
|
|
async fn get_future<C: ?Sized + MyClosure>(_stream: MyStream<C>) {}
|
|
|
|
|
|
|
|
async fn f() {
|
2019-05-28 14:46:13 -04:00
|
|
|
let messages: MyStream<dyn FnMut()> = unimplemented!();
|
2019-04-28 22:54:06 +09:00
|
|
|
await!(get_future(messages));
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {}
|