{"id":13595455,"url":"https://github.com/smol-rs/async-channel","last_synced_at":"2025-05-13T18:05:54.553Z","repository":{"id":43104763,"uuid":"268179753","full_name":"smol-rs/async-channel","owner":"smol-rs","description":"Async multi-producer multi-consumer channel","archived":false,"fork":false,"pushed_at":"2025-04-28T16:43:26.000Z","size":100,"stargazers_count":849,"open_issues_count":15,"forks_count":47,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-05-03T07:37:02.486Z","etag":null,"topics":["async","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smol-rs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-31T00:00:08.000Z","updated_at":"2025-05-02T17:05:06.000Z","dependencies_parsed_at":"2023-12-25T17:42:55.132Z","dependency_job_id":"655ea55c-5b1e-4b4a-bde1-e908e3d078a6","html_url":"https://github.com/smol-rs/async-channel","commit_stats":{"total_commits":97,"total_committers":22,"mean_commits":4.409090909090909,"dds":0.6907216494845361,"last_synced_commit":"43459d1818707be79bcf1c7bbeecaac379802af9"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smol-rs%2Fasync-channel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smol-rs%2Fasync-channel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smol-rs%2Fasync-channel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smol-rs%2Fasync-channel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smol-rs","download_url":"https://codeload.github.com/smol-rs/async-channel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254000845,"owners_count":21997441,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","rust"],"created_at":"2024-08-01T16:01:50.293Z","updated_at":"2025-05-13T18:05:54.524Z","avatar_url":"https://github.com/smol-rs.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# async-channel\n\n[![Build](https://github.com/smol-rs/async-channel/actions/workflows/ci.yml/badge.svg)](\nhttps://github.com/smol-rs/async-channel/actions)\n[![License](https://img.shields.io/badge/license-Apache--2.0_OR_MIT-blue.svg)](\nhttps://github.com/smol-rs/async-channel)\n[![Cargo](https://img.shields.io/crates/v/async-channel.svg)](\nhttps://crates.io/crates/async-channel)\n[![Documentation](https://docs.rs/async-channel/badge.svg)](\nhttps://docs.rs/async-channel)\n\nAn async multi-producer multi-consumer channel, where each message can be received by only\none of all existing consumers.\n\nThere are two kinds of channels:\n\n1. Bounded channel with limited capacity.\n2. Unbounded channel with unlimited capacity.\n\nA channel has the `Sender` and `Receiver` side. Both sides are cloneable and can be shared\namong multiple threads.\n\nWhen all `Sender`s or all `Receiver`s are dropped, the channel becomes closed. When a\nchannel is closed, no more messages can be sent, but remaining messages can still be received.\n\nThe channel can also be closed manually by calling `Sender::close()` or\n`Receiver::close()`.\n\n## Examples\n\n```rust\nlet (s, r) = async_channel::unbounded();\n\nassert_eq!(s.send(\"Hello\").await, Ok(()));\nassert_eq!(r.recv().await, Ok(\"Hello\"));\n```\n\n## License\n\nLicensed under either of\n\n * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n#### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmol-rs%2Fasync-channel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmol-rs%2Fasync-channel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmol-rs%2Fasync-channel/lists"}