main/
main.rs

1// Bring std Error type into scope.
2use std::error::Error;
3// Bring std filesystem module into scope.
4use std::fs;
5// Bring serde Serialize/Deserialize derivable traits into scope.
6use serde::{Deserialize, Serialize};
7
8// Define custom struct.
9#[derive(Deserialize, Serialize)]
10struct MyStruct {
11    name: String,
12    score: u32,
13}
14
15fn main() -> Result<(), Box<dyn Error>> {
16    // Create value to serialize.
17    let value = MyStruct {
18        name: "Ferris".to_owned(),
19        score: 42,
20    };
21
22    // Serialize value to bytes.
23    let bytes = shaft::to_bytes(&value)?;
24
25    // Export value to file.
26    fs::write("value.bin", bytes)?;
27
28    // Retrieve bytes from file.
29    let bytes = fs::read("value.bin")?;
30
31    // Deserialize value from bytes.
32    let value: MyStruct = shaft::from_bytes(&bytes)?;
33
34    // Check struct fields.
35    assert_eq!(value.name, "Ferris");
36    assert_eq!(value.score, 42);
37
38    // Clean file.
39    fs::remove_file("value.bin")?;
40
41    Ok(())
42}