https://github.com/coruscateor/libsync
A library containing channels and other synchronisation object implementations.
https://github.com/coruscateor/libsync
async channel channels rust rust-lang rustlang synchronisation syncronization
Last synced: 6 months ago
JSON representation
A library containing channels and other synchronisation object implementations.
- Host: GitHub
- URL: https://github.com/coruscateor/libsync
- Owner: coruscateor
- License: apache-2.0
- Created: 2024-05-08T04:56:49.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-04-23T05:26:01.000Z (9 months ago)
- Last Synced: 2025-06-25T06:58:39.411Z (7 months ago)
- Topics: async, channel, channels, rust, rust-lang, rustlang, synchronisation, syncronization
- Language: Rust
- Homepage: https://www.coruscateor.com/projects/libsync
- Size: 105 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-MIT
Awesome Lists containing this project
README
# LibSync
[](https://crates.io/crates/libsync)
[](#license)
[](https://crates.io/crates/libsync)
[](https://docs.rs/libsync/latest/libsync)
[](https://www.twitch.tv/coruscateor)
[X](https://twitter.com/Coruscateor) |
[Twitch](https://www.twitch.tv/coruscateor) |
[Youtube](https://www.youtube.com/@coruscateor) |
[Mastodon](https://mastodon.social/@Coruscateor) |
[GitHub](https://github.com/coruscateor) |
[GitHub Sponsors](https://github.com/sponsors/coruscateor)
LibSync combines “lower level” library objects to produce channels and other synchronisation objects e.g. it combines Crossbeam ArrayQueue objects with Tokio Semaphore objects to produce a multi-producer-multi-consumer channel that can be waited on asynchronously on both sides.
It also has objects that help you keep count of messages in a pipeline and "return stores" for "returning" values from one thread to another using a reusable location.
In addition to message counters, you may find IO channels useful when working with actors.
## Todo
- Add more documentation
- Add tests
- Decide on what is staying in the library.
- Get the channels to work with other async runtimes, preferably via generics.
## Maybe
- Add synchronous channel implementations.
## Coding Style
This project uses a coding style that emphasises the use of white space over keeping the line and column counts as low as possible.
So this:
```rust
fn bar() {}
fn foo()
{
bar();
}
```
Not this:
```rust
fn bar() {}
fn foo()
{
bar();
}
```
## License
Licensed under either of:
- Apache License, Version 2.0, ([LICENSE-APACHE](./LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0 (see also: https://www.tldrlegal.com/license/apache-license-2-0-apache-2-0))
- MIT license ([LICENSE-MIT](./LICENSE-MIT) or http://opensource.org/licenses/MIT (see also: https://www.tldrlegal.com/license/mit-license))
at your discretion
## Contributing
Please clone the repository and create an issue explaining what feature or features you'd like to add or bug or bugs you'd like to fix and perhaps how you intend to implement these additions or fixes. Try to include details though it doesn't need to be exhaustive and we'll take it from there (dependant on availability).
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.