This Rust library is an asynchronous "gate" that can be waited to be raised or lowered, as controlled by a corresponding "lever".
This crate is published to crates.io as async-gate
, so you can do
cargo add async-gate
to add it to your project's dependencies.
You probably don't want to use this if you aren't me; the code is clunky and only moderately documented and tested. You might benefit more from using a plain tokio::sync::watch
channel with your own layer of logic on top.
Create an issue and I'll try to help.
Create an issue or pull request and I'll try to fix.
Licensed under either of:
- Apache License, Version 2.0 ([LICENSE-APACHE] or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT] or https://opensource.org/licenses/MIT)
at your option.
This implementation is heavily borrowed from @EFanZh's contributions in this Rust forum post.
The idea is highly inspired by Python's asyncio.Event
, but a gate can be waited for to become 'clear' too (not just 'set').
This library is implemented with Tokio
's watch
channel.
I also developed awaitable-bool
right after making async-gate
. That unifies changing the value of the bool and waiting for value changes into a single type (AwaitableBool
). It is simpler than this crate.
This README was generated with ❤️ by readme-md-generator