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.
```rust use serde_pipe::Serializer;
let largevector = (0..1u64<<30).collect::
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:
* Rust nightly is required for the asm
and naked_functions
features;
* The architectures currently supported are: x86, x86_64, aarch64, or1k;
* The platforms currently supported are: bare metal, Linux (any libc), FreeBSD, DragonFly BSD, macOS. Windows is not supported.
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.