libipld 0.16.0

library for dealing with ipld
Documentation
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use libipld::cbor::DagCborCodec;
use libipld::cid::Cid;
use libipld::codec::Codec;
use libipld::{ipld, Ipld};

fn bench_codec(c: &mut Criterion) {
    c.bench_function("roundtrip", |b| {
        let cid =
            Cid::try_from("bafyreibvjvcv745gig4mvqs4hctx4zfkono4rjejm2ta6gtyzkqxfjeily").unwrap();
        let ipld = ipld!({
          "number": 1,
          "list": [true, null, false],
          "bytes": vec![0, 1, 2, 3],
          "map": { "float": 0.0, "string": "hello" },
          "link": cid,
        });
        b.iter(|| {
            for _ in 0..1000 {
                let bytes = DagCborCodec.encode(&ipld).unwrap();
                let ipld2: Ipld = DagCborCodec.decode(&bytes).unwrap();
                black_box(ipld2);
            }
        });
    });
}

criterion_group! {
    name = codec;
    config = Criterion::default();
    targets = bench_codec
}

criterion_main!(codec);