7个版本 (稳定版)
1.0.4 | 2023年1月2日 |
---|---|
1.0.3 | 2022年2月3日 |
1.0.2 | 2022年1月1日 |
0.2.3 | 2021年4月4日 |
0.1.0 |
|
#267 in 文件系统
12KB
158 行
README
rmp_fs
一个小的库,帮助将rmp(RustMessagePack)序列化和反序列化到文件中。它没有做特别的事情,只是将rmp_serde封装成可以重复使用的函数。
示例
#[macro_use]
extern crate serde_derive;
use rmp_fs::{save_to_rmp, load_from_rmp};
use std::path::Path;
// Define a struct of data
#[derive(Debug, PartialEq, Deserialize, Serialize)]
struct ExampleData {
value: i64,
message: String,
}
fn main() {
let file_name = Path::new("test_rmp_fs.blob");
let data = ExampleData {
value: -123456,
message: "Example rmp_fs".to_string()
};
// Save to a file it return Result<(), Box<dyn Error>>
save_to_rmp(file_name, &data).expect("Fail to save as rmp.");
// Load from a file it return Result<T, Box<dyn Error>>
let data2: ExampleData =load_from_rmp(file_name).expect("Fail to load from rmp.");
println!("{:?}\n{:?}",data,data2);
}
注意
根据我的测试,下面的结构体使用rmp的大小为248字节,使用cbor的大小为389字节。
#[derive(Debug, PartialEq, Deserialize, Serialize)]
struct StructTest01 {
text : String,
value1 : u16,
value2 : i32,
value3 : u8,
value4 : i16,
value5 : u32,
value6 : u64,
value7 : i64,
value8 : usize,
value9 : f32,
value10 : f64,
array : Vec<u8>,
tuple : (DateTime<Utc>,u64),
complex : StructTest02,
}
#[derive(Debug, PartialEq, Deserialize, Serialize)]
struct StructTest02 {
data_v : Vec<i16>,
data_m : HashMap<String,String>,
state : bool,
}
依赖项
~0.8–1.4MB
~31K SLoC