// This function: 
async fn foo(x: &u8) -> u8 { *x } 
// Is equivalent to this function: 
fn foo_expanded<'a>(x: &'a u8) -> impl Future<Output = u8> + 'a { async move { *x } }

Lifetimes are represented by labels, eg 'a Their lifecycle ends when the label that it’s borrowed from is dropped or goes out of scope.