#pipe #serialization #serde

serde_pipe

将serde+bincode转换为管道:推送T和拉取u8,或反之。此库为您提供Serializer管道,您可以将其中的T推送,并将u8拉取;以及一个Deserializer管道,您可以将其中的u8推送,并将T拉取

3个版本

0.1.3 2019年7月26日
0.1.2 2019年7月26日
0.1.1 2019年7月25日
0.1.0 2018年10月16日

#1400编码

Download history 13/week @ 2024-03-11 16/week @ 2024-03-18 5/week @ 2024-03-25 37/week @ 2024-04-01 7/week @ 2024-04-08 9/week @ 2024-04-15 9/week @ 2024-04-22 8/week @ 2024-04-29 8/week @ 2024-05-06 14/week @ 2024-05-13 12/week @ 2024-05-20 19/week @ 2024-05-27 14/week @ 2024-06-03 13/week @ 2024-06-10 9/week @ 2024-06-17 10/week @ 2024-06-24

每月下载量53
2个crate中使用(通过constellation-rs

MIT/Apache

47KB
1.5K SLoC

serde_pipe

Crates.io MIT / Apache 2.0 licensed Build Status

文档

将serde+bincode转换为管道:推送T和拉取u8,或反之。

此库为您提供Serializer管道,您可以将其中的T推送,并将u8拉取;以及一个Deserializer管道,您可以将其中的u8推送,并将T拉取。

默认情况下,此操作通过分配一个向量来保存中间的u8。但是,可以启用fringe功能,它使用libfringe将serde+bincode转换为生成器,从而实现有限的内存使用。

示例

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);
}

注意

fringe功能依赖于libfringe,因此启用它将继承这些限制

  • 需要Rust nightly版本才能使用asmnaked_functions功能;
  • 目前支持的平台有:x86、x86_64、aarch64、or1k;
  • 目前支持的平台有:裸金属、Linux(任何libc)、FreeBSD、DragonFly BSD、macOS。Windows不受支持。

许可

许可协议为以下之一:

任选其一。

除非您明确声明,否则您提交的任何有意包含在作品中的贡献,根据Apache-2.0许可协议定义,应按上述方式双重许可,无需任何附加条款或条件。

依赖项

~370–660KB
~15K SLoC