| Crates.io | serde_pipe |
| lib.rs | serde_pipe |
| version | 0.1.3 |
| created_at | 2018-10-16 14:33:14.432108+00 |
| updated_at | 2019-07-26 21:18:35.94426+00 |
| description | Turn serde+bincode into a pipe: push `T`s and pull `u8`s, or vice versa. This 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. |
| homepage | https://github.com/alecmocatta/serde_pipe |
| repository | https://github.com/alecmocatta/serde_pipe |
| max_upload_size | |
| id | 90955 |
| size | 60,908 |
Turn serde+bincode into a pipe: push Ts and pull u8s, or vice versa.
This library gives you a Serializer pipe, into which you can push Ts and pull u8s; and a Deserializer pipe, into which you can push u8s and pull Ts.
This by default works by allocating a vector to hold the intermediate u8s. However the fringe feature can be enabled, which uses libfringe to turn serde+bincode into a Generator, resulting in bounded memory usage.
use serde_pipe::Serializer;
let large_vector = (0..1u64<<30).collect::<Vec<_>>();
let mut serializer = Serializer::new();
serializer.push().unwrap()(large_vector);
while let Some(pull) = serializer.pull() {
let byte = pull();
println!("byte! {}", byte);
}
The fringe feature depends on libfringe, and so enabling it inherits these limitations:
asm and naked_functions features;Licensed under either of
at your option.
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.