Error code E0760

async fn/impl trait return type cannot contain a projection or Self that references lifetimes from a parent scope.

Erroneous code example:

#![allow(unused)]
fn main() {
struct S<'a>(&'a i32);

impl<'a> S<'a> {
    async fn new(i: &'a i32) -> Self {
        S(&22)
    }
}
}

To fix this error we need to spell out Self to S<'a>:

#![allow(unused)]
fn main() {
struct S<'a>(&'a i32);

impl<'a> S<'a> {
    async fn new(i: &'a i32) -> S<'a> {
        S(&22)
    }
}
}

This will be allowed at some point in the future, but the implementation is not yet complete. See the issue-61949 for this limitation.