| // 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<Self::Output> { |
| 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<Self::Output> { |
| unimplemented!() |
| } |
| } |
| |
| async fn fut2(bufs: &mut [&mut [u8]]) -> i32 { |
| ListFut2(bufs).await |
| //~^ ERROR lifetime may not live long enough |
| } |
| |
| fn main() {} |