26 个版本 (11 个稳定)

1.6.4 2023 年 9 月 5 日
1.6.2 2022 年 3 月 25 日
1.5.6 2021 年 12 月 11 日
1.5.5 2021 年 7 月 8 日
0.2.1 2020 年 12 月 30 日

Rust 模式 中排名 #214

Download history 22/week @ 2024-04-14 17/week @ 2024-04-21 14/week @ 2024-04-28 6/week @ 2024-05-05 11/week @ 2024-05-12 15/week @ 2024-05-19 21/week @ 2024-05-26 39/week @ 2024-06-02 34/week @ 2024-06-09 26/week @ 2024-06-16 27/week @ 2024-06-23 44/week @ 2024-06-30 27/week @ 2024-07-07 74/week @ 2024-07-14 22/week @ 2024-07-21 23/week @ 2024-07-28

每月 146 次下载
用于 7 个crate(4 个直接使用)

MIT/Apache

64KB
2K SLoC

快速二进制序列化读写,支持 Serde 和 Stream 模型

与 bincode 类似,但性能超过 bincode

提供基本的 RW 和可变长度 Rw

let mut data = Data::new();
data.write_fixed(1u8);
data.write_fixed(2i16);
data.write_fixed(3i32);
data.write_fixed(4i64);
data.write_fixed(5f32);
data.write_fixed(6f64);
data.write_fixed("hello world");
data.write_var_integer(123u64);
data.write_var_integer("hello world");

let mut rd = DataReader::from(&data[..]);
assert_eq!(1, rd.read_fixed::<u8>()?);
assert_eq!(2, rd.read_fixed::<i16>()?);
assert_eq!(3, rd.read_fixed::<i32>()?);
assert_eq!(4, rd.read_fixed::<i64>()?);
assert_eq!(5f32, rd.read_fixed::<f32>()?);
assert_eq!(6f64, rd.read_fixed::<f64>()?);
assert_eq!("hello world", rd.read_fixed_str()?);
assert_eq!(123u64, rd.read_var_integer::<u64>()?);
assert_eq!("hello world", rd.read_var_str()?);

支持自定义功能

[features]
default=["rmp"]
big_endian=[]
check_utf8=[]

基准测试

running 9 tests
test bench_base_rw       ... bench:      52,288 ns/iter (+/- 654)     data-rw
test bench_owned_base_rw ... bench:      53,659 ns/iter (+/- 2,795)   data-rw
test bench_owned_pack    ... bench:     140,562 ns/iter (+/- 1,925)
test bench_pack          ... bench:     139,910 ns/iter (+/- 2,353)
test bench_str           ... bench:      53,023 ns/iter (+/- 770)     data-rw
test bench_str_bincode   ... bench:      71,520 ns/iter (+/- 1,558)
test bench_str_json      ... bench:      91,993 ns/iter (+/- 1,074)
test bench_str_owned     ... bench:      53,272 ns/iter (+/- 1,277)   data-rw
test bench_str_rmp       ... bench:      78,455 ns/iter (+/- 1,333)

test result: ok. 0 passed; 0 failed; 0 ignored; 9 measured; 0 filtered out; finished in 2.24s

依赖关系

~0.5–1.3MB
~29K SLoC