Idea: syntax for function item types

struct Contrived {
    future: (fn do_thing)::Output,
}

async fn do_thing() {
    // ...
}

impl Contrived {
    async fn await_future(self) {
        self.future.await;
    }
}

async fn main() {
    let contrived = Contrived {
        future: do_thing(),
    };

    contrived.await_future().await;
}