You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.2 KiB
40 lines
1.2 KiB
4 months ago
|
// NOTE: This file should be kept in sync with README.md
|
||
|
|
||
|
use serde_derive::{Deserialize, Serialize};
|
||
|
use std::error::Error;
|
||
|
use std::fs::File;
|
||
|
|
||
|
// Types annotated with `Serialize` can be stored as CBOR.
|
||
|
// To be able to load them again add `Deserialize`.
|
||
|
#[derive(Debug, Serialize, Deserialize)]
|
||
|
struct Mascot {
|
||
|
name: String,
|
||
|
species: String,
|
||
|
year_of_birth: u32,
|
||
|
}
|
||
|
|
||
|
fn main() -> Result<(), Box<dyn Error>> {
|
||
|
let ferris = Mascot {
|
||
|
name: "Ferris".to_owned(),
|
||
|
species: "crab".to_owned(),
|
||
|
year_of_birth: 2015,
|
||
|
};
|
||
|
|
||
|
let ferris_file = File::create("examples/ferris.cbor")?;
|
||
|
// Write Ferris to the given file.
|
||
|
// Instead of a file you can use any type that implements `io::Write`
|
||
|
// like a HTTP body, database connection etc.
|
||
|
serde_cbor::to_writer(ferris_file, &ferris)?;
|
||
|
|
||
|
let tux_file = File::open("examples/tux.cbor")?;
|
||
|
// Load Tux from a file.
|
||
|
// Serde CBOR performs roundtrip serialization meaning that
|
||
|
// the data will not change in any way.
|
||
|
let tux: Mascot = serde_cbor::from_reader(tux_file)?;
|
||
|
|
||
|
println!("{:?}", tux);
|
||
|
// prints: Mascot { name: "Tux", species: "penguin", year_of_birth: 1996 }
|
||
|
|
||
|
Ok(())
|
||
|
}
|