Crates.io | serde_pipe |
lib.rs | serde_pipe |
version | 0.1.3 |
source | src |
created_at | 2018-10-16 14:33:14.432108 |
updated_at | 2019-07-26 21:18:35.94426 |
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 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.
This by default works by allocating a vector to hold the intermediate u8
s. 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.