{"id":21452931,"url":"https://github.com/arindas/laminarmq-io","last_synced_at":"2025-06-16T05:07:34.736Z","repository":{"id":244822492,"uuid":"784590788","full_name":"arindas/laminarmq-io","owner":"arindas","description":"Generic I/O abstraction over local File storage and AWS S3 for laminarmq","archived":false,"fork":false,"pushed_at":"2025-05-30T07:05:28.000Z","size":2193,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-30T08:58:41.086Z","etag":null,"topics":["append-only","async-io","async-storage","aws-s3","generic-associated-types"],"latest_commit_sha":null,"homepage":"https://arindas.github.io/laminarmq-io/docs/laminarmq_io/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arindas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-04-10T06:39:51.000Z","updated_at":"2024-12-01T15:11:43.000Z","dependencies_parsed_at":"2024-08-23T15:56:31.872Z","dependency_job_id":"c87f1a60-220a-4c60-b6cc-d2147de26758","html_url":"https://github.com/arindas/laminarmq-io","commit_stats":null,"previous_names":["arindas/laminarmq-io"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/arindas/laminarmq-io","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arindas%2Flaminarmq-io","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arindas%2Flaminarmq-io/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arindas%2Flaminarmq-io/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arindas%2Flaminarmq-io/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arindas","download_url":"https://codeload.github.com/arindas/laminarmq-io/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arindas%2Flaminarmq-io/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260101965,"owners_count":22959043,"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":["append-only","async-io","async-storage","aws-s3","generic-associated-types"],"created_at":"2024-11-23T04:33:09.495Z","updated_at":"2025-06-16T05:07:34.688Z","avatar_url":"https://github.com/arindas.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003ch1 align=\"center\"\u003e\u003ccode\u003elaminarmq-io\u003c/code\u003e\u003c/h1\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/arindas/laminarmq-io/actions/workflows/rust-ci.yml\"\u003e\n    \u003cimg src=\"https://github.com/arindas/laminarmq-io/actions/workflows/rust-ci.yml/badge.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/arindas/laminarmq-io/actions/workflows/rustdoc.yml\"\u003e\n    \u003cimg src=\"https://github.com/arindas/laminarmq-io/actions/workflows/rustdoc.yml/badge.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/arindas/laminarmq-io\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/github-arindas/laminarmq--io-173f80?logo=github\u0026labelColor=black\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\nAn attempt to rewrite the \u003ca href=\"https://github.com/arindas/laminarmq\"\u003e\u003ccode\u003elaminarmq\u003c/code\u003e\u003c/a\u003e I/O layer\nto accommodate bounded memory overhead during read/write ops.\n\u003c/p\u003e\n\n## Usage\n\n`laminarmq-io` is a library crate. In order to use it, add the following to your `Cargo.toml`\n\n```toml\n[dependencies]\nlaminarmq-io = { git = \"https://github.com/arindas/laminarmq-io.git\" }\n```\n\n## Overview\n\nThis crate provides the following I/O related traits:\n\n| **Trait**         | **Type**                           | **Wrapper Implemented On**                                               |\n| ----------------- | ---------------------------------- | ------------------------------------------------------------------------ |\n| [`AsyncRead`]     | `Read I/O`                         | [`AsyncBufRead`], [`AsyncRead`] \u003cbr\u003e (struct [`BufReader`])              |\n| [`AsyncBufRead`]  | `Read I/O`                         | -                                                                        |\n| [`StreamRead`]    | _Streaming_ `Read I/O`             | [`AsyncRead`] (struct [`AsyncReadStreamRead`],\u003cbr\u003e struct [`BufReader`]) |\n| [`AsyncAppend`]   | `Write I/O`                        | [`AsyncAppend`] (struct [`BufAppender`])                                 |\n| [`StreamAppend`]  | _Streaming_ `Write I/O`            | [`AsyncAppend`] (_trait impl_)                                           |\n| [`AsyncTruncate`] | `Write I/O`                        | -                                                                        |\n| [`AsyncRemove`]   | Management                         | -                                                                        |\n| [`AsyncClose`]    | \u003cbr\u003eManagement \u003cimg width=\"200\" /\u003e | \u003cbr\u003e - \u003cimg width=\"500\" /\u003e                                               |\n\n\u003e The \"Wrapper Implemented on\" column denotes on which underlying trait, the current trait has an impl with the help of a wrapper struct wrapping the mentioned trait.\n\u003e For example, [`StreamRead`] is implemented by a wrapper struct [`AsyncReadStreamRead`] which wraps an [`AsyncRead`] instance.\n\u003e\n\u003e Some traits in this table also have direct impls on other trait types e.g:\n\u003e\n\u003e ```text\n\u003e impl\u003cT\u003e StreamAppend for T where T: AsyncAppend { /* ... */ }\n\u003e ```\n\u003e\n\u003e They are marked with (_trait impl_).\n\n\u003cbr\u003e\n\nThis library makes the following improvements over existing I/O primitives in `laminarmq`:\n\n- Provides traits at individual operaton level i.e `Read` / `Append` level as opposed to a unified `Storage` trait\n- All operations are exclusive with a `\u0026mut self` receiver to avoid internal locks\n- Supports both streaming read and streaming write operations\n- Provides impls on both filessytem based APIs and cloud object storage APIs such as S3\n\n## License\n\nThis repository is licensed under the same terms as [`laminarmq`](https://github.com/arindas/laminarmq).\nSee [LICENSE](https://raw.githubusercontent.com/arindas/laminarmq-io/main/LICENSE) for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farindas%2Flaminarmq-io","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farindas%2Flaminarmq-io","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farindas%2Flaminarmq-io/lists"}