Crates.io | shaft |
lib.rs | shaft |
version | 0.1.1 |
source | src |
created_at | 2024-06-20 06:49:00.451792 |
updated_at | 2024-06-20 07:00:43.7452 |
description | A minimal and straightforward binary serde implementation. |
homepage | |
repository | https://github.com/lokyhark/shaft |
max_upload_size | |
id | 1277615 |
size | 68,505 |
A minimal and straightforward binary serde implementation.
$ 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