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