#![feature(type_alias_impl_trait)] // edition:2021 // check-pass struct Pending {} struct CantOpen {} trait AsyncRead {} impl AsyncRead for i32 {} type PendingReader<'a> = impl AsyncRead + 'a; type OpeningReadFuture<'a> = impl std::future::Future, CantOpen>>; impl Pending { async fn read(&mut self) -> Result { Ok(42) } fn read_fut(&mut self) -> OpeningReadFuture<'_> { self.read() } } fn main() {}