// Test for diagnostic improvement issue #76547 //@ edition:2018 use std::{ future::Future, task::{Context, Poll} }; use std::pin::Pin; pub struct ListFut<'a>(&'a mut [&'a mut [u8]]); impl<'a> Future for ListFut<'a> { type Output = (); fn poll(self: Pin<&mut Self>, _cx: &mut Context) -> Poll { unimplemented!() } } async fn fut(bufs: &mut [&mut [u8]]) { ListFut(bufs).await //~^ ERROR lifetime may not live long enough } pub struct ListFut2<'a>(&'a mut [&'a mut [u8]]); impl<'a> Future for ListFut2<'a> { type Output = i32; fn poll(self: Pin<&mut Self>, _cx: &mut Context) -> Poll { unimplemented!() } } async fn fut2(bufs: &mut [&mut [u8]]) -> i32 { ListFut2(bufs).await //~^ ERROR lifetime may not live long enough } fn main() {}