README.md
1# Want
2
3- [Crates.io](https://crates.io/crates/want)
4- [Docs](https://docs.rs/want)
5
6A `Future`s channel-like utility to signal when a value is wanted.
7
8Futures are supposed to be lazy, and only starting work if `Future::poll`
9is called. The same is true of `Stream`s, but when using a channel as
10a `Stream`, it can be hard to know if the receiver is ready for the next
11value.
12
13Put another way, given a `(tx, rx)` from `futures::sync::mpsc::channel()`,
14how can the sender (`tx`) know when the receiver (`rx`) actually wants more
15work to be produced? Just because there is room in the channel buffer
16doesn't mean the work would be used by the receiver.
17
18This is where something like `want` comes in. Added to a channel, you can
19make sure that the `tx` only creates the message and sends it when the `rx`
20has `poll()` for it, and the buffer was empty.
21
22## License
23
24`want` is provided under the MIT license. See [LICENSE](LICENSE).
25