Serde IPLD DAG-CBOR

Crates.io Documentation

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.

Usage

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.

[derive(Debug, Serialize, Deserialize)]

struct Mascot { name: String, species: String, yearofbirth: u32, }

fn main() -> Result<(), Box> { let ferris = Mascot { name: "Ferris".toowned(), species: "crab".toowned(), yearofbirth: 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_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(())

} ```

License

Licensed under either of

at your option.