I find it too magical to be necessary, but I can see how it might be useful. This can be achieved with a wrapper, but will then require you to wrap every future, which is not too convenient
Other languages have ended up introducing it out of practical necessity, e.g. Go's contexts, JS execution contexts. Pick your poison, although I expect Rust's general minimal approach will leave it as extra parameters, Go-style.
It's an API, if you add methods to it then the implementations will support that. That is in fact the entire point of a trait.
where are you going to "pin metadata"?
I think, they mean:
I find it too magical to be necessary, but I can see how it might be useful. This can be achieved with a wrapper, but will then require you to wrap every future, which is not too convenient
Other languages have ended up introducing it out of practical necessity, e.g. Go's contexts, JS execution contexts. Pick your poison, although I expect Rust's general minimal approach will leave it as extra parameters, Go-style.