I am reading the async book. In section async lifetimes there is a code snippet whose grammar I am not familiar with:
fn foo_expanded<'a>(x: &'a u8) -> impl Future<Output = u8> + 'a {
async move { *x }
}
In impl Future<Output = u8> + 'a, what is impl Trait + 'lifetime here?
Update: I am more asking what it is instead of the lifetime logic explanation. A definition from the official doc will be much appreciated.