Explaining futures doesn’t require 200 lines: when a function doesn’t return what you asked for, but a ticket that you can later use to check whether what you asked for is available or exchange for what you asked for, that ticket is called “a future”. Functions returning futures allow you to do some other work while the function does what you asked it to do.
I think most won’t need more than that to make sense of https://docs.oracle.com/javase/7/docs/api/java/util/concurre... or http://www.cplusplus.com/reference/future/future/.
However, reading this article _and_ https://doc.rust-lang.org/std/future/trait.Future.html, I don’t understand why Rust decided to provide a more difficult API (“runtime-implementors can come up with interesting new wake-up mechanisms”, according to https://cfsamson.github.io/books-futures-explained/2_waker_c..., but an example would help there. I can’t come up with one that can’t be done with the simpler interface)
So, what am I missing here? Is this actually used in libraries, or is it something that might end up being YAGNI?