5 unstable releases
0.3.1 | Feb 28, 2024 |
---|---|
0.2.1 | Feb 19, 2024 |
0.2.0 | Feb 19, 2024 |
0.1.4 | Sep 3, 2023 |
0.1.3 | Sep 1, 2023 |
#743 in Asynchronous
17KB
259 lines
🚧 Async Gate
This Rust library is an asynchronous "gate" that can be waited to be raised or lowered, as controlled by a corresponding "lever".
💻 Installation
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.
🛠 Usage
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.
😵 Help! I have a question
Create an issue and I'll try to help.
😡 Fix! There is something that needs improvement
Create an issue or pull request and I'll try to fix.
📄 License
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.
🙏 Attribution
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
Dependencies
~2.2–8MB
~64K SLoC