{"id":16162364,"url":"https://github.com/sunsided/shared-files-rs","last_synced_at":"2026-02-27T14:43:00.541Z","repository":{"id":174815230,"uuid":"652810687","full_name":"sunsided/shared-files-rs","owner":"sunsided","description":"Disk-Based Single-Writer, Multiple-Reader In-Process File Sharing","archived":false,"fork":false,"pushed_at":"2024-05-20T16:56:19.000Z","size":92,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-28T07:35:59.704Z","etag":null,"topics":["file-sharing","file-upload","parallel-processing","rust"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/shared-files","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sunsided.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","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":"2023-06-12T21:02:21.000Z","updated_at":"2024-05-20T16:56:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"bc52d022-15ee-4d85-acdb-90a4523521ef","html_url":"https://github.com/sunsided/shared-files-rs","commit_stats":null,"previous_names":["sunsided/shared-files-rs"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Fshared-files-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Fshared-files-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Fshared-files-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Fshared-files-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sunsided","download_url":"https://codeload.github.com/sunsided/shared-files-rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243382786,"owners_count":20282007,"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":["file-sharing","file-upload","parallel-processing","rust"],"created_at":"2024-10-10T02:29:53.423Z","updated_at":"2025-10-29T03:07:06.152Z","avatar_url":"https://github.com/sunsided.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shared Files\n\n✨ _Disk-Based Single-Writer, Multiple-Reader In-Process File Sharing_ ✨\n\n---\n\n![Crates.io](https://img.shields.io/crates/v/shared-files)\n![Crates.io](https://img.shields.io/crates/l/shared-files)\n[![codecov](https://codecov.io/gh/sunsided/shared-files-rs/graph/badge.svg?token=5CSTW6OYRO)](https://codecov.io/gh/sunsided/shared-files-rs)\n\nFunctionality for asynchronous single-writer, multiple-reader file operations where multiple concurrent readers\nneed to read from a file that is currently being written by the same process. The intended use case is the parallel\nprocessing of byte streams with minimum (process) memory requirements, e.g. in web services moving around large files.\n\nNormally, reading a file while it is written results in the read stream ending prematurely as EOF; the purpose\nof this crate is to prevent exactly that.\n\nAny file type can be used as a backing as long as it implements the crate's `SharedFileType` trait, which in turn\nrequires [`tokio::io::AsyncWrite`] and [`tokio::io::AsyncRead`].\n\n[`tokio::io::AsyncRead`]: https://docs.rs/tokio/latest/tokio/io/trait.AsyncRead.html\n\n[`tokio::io::AsyncWrite`]: https://docs.rs/tokio/latest/tokio/io/trait.AsyncWrite.html\n\n## Features\n\n- `async-tempfile`: Enables the `SharedTemporaryFile` type via\n  the [async-tempfile](https://github.com/sunsided/async-tempfile-rs)\n  crate. Since this is how this crate was initially meant to be used, this feature is enabled by default.\n\n## Example\n\nSee [`tests/parallel_write_read.rs`](tests/parallel_write_read.rs) for a usage example.\nThe example requires the `async-tempfile` crate feature. To run it, use e.g.\n\n```shell\ncargo test --test parallel_write_read --features=async-tempfile\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunsided%2Fshared-files-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsunsided%2Fshared-files-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunsided%2Fshared-files-rs/lists"}