I believe its abstractions work the same way regardless of how many threads you do or don't give it
The multithreaded runtime requires that your futures be Send.
Which isn't a big deal in most situations as you can still use mutable variables without mutexes, even across await points.
That’s a runtime option, and I think it specifically matters when you’re using tasks. If you’re using network and io futures (I’m not sure of this) I don’t think it returns a thread backed future.