shaft

Crates.ioshaft
lib.rsshaft
version0.1.1
sourcesrc
created_at2024-06-20 06:49:00.451792
updated_at2024-06-20 07:00:43.7452
descriptionA minimal and straightforward binary serde implementation.
homepage
repositoryhttps://github.com/lokyhark/shaft
max_upload_size
id1277615
size68,505
Loky HARK (lokyhark)

documentation

README

Shaft

github crates.io docs.rs github actions

A minimal and straightforward binary serde implementation.

Usage

$ cargo add serde shaft

Examples

// 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(())
}

License

MIT

Commit count: 5

cargo fmt