mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-26 16:11:07 +00:00
25 lines
929 B
Markdown
25 lines
929 B
Markdown
|
# Want
|
||
|
|
||
|
- [Crates.io](https://crates.io/crates/want)
|
||
|
- [Docs](https://docs.rs/want)
|
||
|
|
||
|
A `Future`s channel-like utility to signal when a value is wanted.
|
||
|
|
||
|
Futures are supposed to be lazy, and only starting work if `Future::poll`
|
||
|
is called. The same is true of `Stream`s, but when using a channel as
|
||
|
a `Stream`, it can be hard to know if the receiver is ready for the next
|
||
|
value.
|
||
|
|
||
|
Put another way, given a `(tx, rx)` from `futures::sync::mpsc::channel()`,
|
||
|
how can the sender (`tx`) know when the receiver (`rx`) actually wants more
|
||
|
work to be produced? Just because there is room in the channel buffer
|
||
|
doesn't mean the work would be used by the receiver.
|
||
|
|
||
|
This is where something like `want` comes in. Added to a channel, you can
|
||
|
make sure that the `tx` only creates the message and sends it when the `rx`
|
||
|
has `poll()` for it, and the buffer was empty.
|
||
|
|
||
|
## License
|
||
|
|
||
|
`want` is provided under the MIT license. See [LICENSE](LICENSE).
|