{"id":16687783,"url":"https://github.com/alecmocatta/serde_pipe","last_synced_at":"2025-07-11T23:36:02.657Z","repository":{"id":52421816,"uuid":"142366080","full_name":"alecmocatta/serde_pipe","owner":"alecmocatta","description":"Turn serde+bincode into a pipe: push `T`s and pull `u8`s, or vice versa.","archived":false,"fork":false,"pushed_at":"2021-04-29T19:15:09.000Z","size":77,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-12T02:07:36.713Z","etag":null,"topics":["bincode","generator","pipe","rust","serde"],"latest_commit_sha":null,"homepage":null,"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/alecmocatta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-07-26T00:05:03.000Z","updated_at":"2020-06-14T13:15:14.000Z","dependencies_parsed_at":"2022-09-16T15:12:17.203Z","dependency_job_id":null,"html_url":"https://github.com/alecmocatta/serde_pipe","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alecmocatta%2Fserde_pipe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alecmocatta%2Fserde_pipe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alecmocatta%2Fserde_pipe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alecmocatta%2Fserde_pipe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alecmocatta","download_url":"https://codeload.github.com/alecmocatta/serde_pipe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247282768,"owners_count":20913429,"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":["bincode","generator","pipe","rust","serde"],"created_at":"2024-10-12T15:25:01.811Z","updated_at":"2025-04-05T03:24:36.804Z","avatar_url":"https://github.com/alecmocatta.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# serde_pipe\n\n[![Crates.io](https://img.shields.io/crates/v/serde_pipe.svg?maxAge=86400)](https://crates.io/crates/serde_pipe)\n[![MIT / Apache 2.0 licensed](https://img.shields.io/crates/l/serde_pipe.svg?maxAge=2592000)](#License)\n[![Build Status](https://dev.azure.com/alecmocatta/serde_pipe/_apis/build/status/tests?branchName=master)](https://dev.azure.com/alecmocatta/serde_pipe/_build/latest?definitionId=1\u0026branchName=master)\n\n[Docs](https://docs.rs/serde_pipe/0.1.3)\n\nTurn serde+bincode into a pipe: push `T`s and pull `u8`s, or vice versa.\n\nThis library gives you a `Serializer` pipe, into which you can push `T`s and pull `u8`s; and a `Deserializer` pipe, into which you can push `u8`s and pull `T`s.\n\nThis by default works by allocating a vector to hold the intermediate `u8`s. However the `fringe` feature can be enabled, which uses [libfringe](https://github.com/edef1c/libfringe) to turn serde+bincode into a Generator, resulting in bounded memory usage.\n\n## Example\n\n```rust\nuse serde_pipe::Serializer;\n\nlet large_vector = (0..1u64\u003c\u003c30).collect::\u003cVec\u003c_\u003e\u003e();\nlet mut serializer = Serializer::new();\nserializer.push().unwrap()(large_vector);\n\nwhile let Some(pull) = serializer.pull() {\n\tlet byte = pull();\n\tprintln!(\"byte! {}\", byte);\n}\n```\n\n## Note\n\nThe `fringe` feature depends on [libfringe](https://github.com/edef1c/libfringe), and so enabling it inherits these limitations:\n * Rust nightly is required for the `asm` and `naked_functions` features;\n * The architectures currently supported are: x86, x86_64, aarch64, or1k;\n * The platforms currently supported are: bare metal, Linux (any libc), FreeBSD, DragonFly BSD, macOS. Windows is not supported.\n\n## License\nLicensed under either of\n\n * Apache License, Version 2.0, ([LICENSE-APACHE.txt](LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)\n * MIT license ([LICENSE-MIT.txt](LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)\n\nat your option.\n\nUnless 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falecmocatta%2Fserde_pipe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falecmocatta%2Fserde_pipe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falecmocatta%2Fserde_pipe/lists"}