2022-12-14 03:52:14 -06:00
|
|
|
// edition:2021
|
|
|
|
// check-pass
|
2023-03-22 12:04:20 -05:00
|
|
|
// [next] compile-flags: -Zlower-impl-trait-in-trait-to-assoc-ty
|
|
|
|
// revisions: current next
|
2022-12-14 03:52:14 -06:00
|
|
|
|
|
|
|
#![feature(async_fn_in_trait)]
|
|
|
|
#![allow(incomplete_features)]
|
|
|
|
|
|
|
|
use std::future::Future;
|
|
|
|
pub trait Pool {
|
|
|
|
type Conn;
|
|
|
|
|
|
|
|
async fn async_callback<'a, F: FnOnce(&'a Self::Conn) -> Fut, Fut: Future<Output = ()>>(
|
|
|
|
&'a self,
|
|
|
|
callback: F,
|
|
|
|
) -> ();
|
|
|
|
}
|
|
|
|
|
|
|
|
pub struct PoolImpl;
|
|
|
|
pub struct ConnImpl;
|
|
|
|
|
|
|
|
impl Pool for PoolImpl {
|
|
|
|
type Conn = ConnImpl;
|
|
|
|
|
|
|
|
async fn async_callback<'a, F: FnOnce(&'a Self::Conn) -> Fut, Fut: Future<Output = ()>>(
|
|
|
|
&'a self,
|
|
|
|
_callback: F,
|
|
|
|
) -> () {
|
|
|
|
todo!()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {}
|