This is a [Serde] implementation for [DAG-CBOR]. It can be use in conjunction with [libipld].
The underlying library for CBOR encoding/decoding is [cbor4ii] and the Serde implementation is also heavily based on their code.
This crate started as a fork of [serde_cbor], thanks everyone involved there.
Storing and loading Rust types is easy and requires only minimal modifications to the program code.
```rust use serde_derive::{Deserialize, Serialize}; use std::error::Error; use std::fs::File; use std::io::BufReader;
// Types annotated with Serialize
can be stored as DAG-CBOR.
// To be able to load them again add Deserialize
.
struct Mascot { name: String, species: String, yearofbirth: u32, }
fn main() -> Result<(), Box
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_ipld_dagcbor::to_writer(ferris_file, &ferris)?;
let tux_file = File::open("examples/tux.cbor")?;
let tux_reader = BufReader::new(tux_file);
// Load Tux from a file.
// Serde IPLD DAG-CBOR performs roundtrip serialization meaning that
// the data will not change in any way.
let tux: Mascot = serde_ipld_dagcbor::from_reader(tux_reader)?;
println!("{:?}", tux);
// prints: Mascot { name: "Tux", species: "penguin", year_of_birth: 1996 }
Ok(())
} ```
Licensed under either of
at your option.