#binary #serde #byte #error #scope #derive-deserialize #score

shaft

一个最小化且直接的 binary serde 实现

2 个版本

0.1.1 2024年6月20日
0.1.0 2024年6月20日

#1415编码

MIT 许可证

33KB
951

Shaft

github crates.io docs.rs github actions

一个最小化且直接的 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