2 个版本
0.1.1 | 2024年6月20日 |
---|---|
0.1.0 | 2024年6月20日 |
#1415 在 编码
33KB
951 行
Shaft
一个最小化且直接的 binary serde 实现。
用法
$ cargo add serde shaft
示例
// Bring std Error type into scope.
use std::error::Error;
// Bring std filesystem module into scope.
use std::fs;
// Bring serde Serialize/Deserialize derivable traits into scope.
use serde::{Deserialize, Serialize};
// Define custom struct.
#[derive(Deserialize, Serialize)]
struct MyStruct {
name: String,
score: u32,
}
fn main() -> Result<(), Box<dyn Error>> {
// Create value to serialize.
let value = MyStruct {
name: "Ferris".to_owned(),
score: 42,
};
// Serialize value to bytes.
let bytes = shaft::to_bytes(&value)?;
// Export value to file.
fs::write("value.bin", bytes)?;
// Retrieve bytes from file.
let bytes = fs::read("value.bin")?;
// Deserialize value from bytes.
let value: MyStruct = shaft::from_bytes(&bytes)?;
// Check struct fields.
assert_eq!(value.name, "Ferris");
assert_eq!(value.score, 42);
// Clean file.
fs::remove_file("value.bin")?;
Ok(())
}
许可证
MIT
依赖
~0.4–1MB
~22K SLoC