ipld-extract-links

Crates.ioipld-extract-links
lib.rsipld-extract-links
version0.1.0
sourcesrc
created_at2024-03-08 00:31:33.020353
updated_at2024-03-08 00:31:33.020353
descriptionExtract links from IPLD encoded data
homepage
repositoryhttps://github.com/ipld/rust-ipld-extract-links
max_upload_size
id1166396
size18,905
Volker Mische (vmx)

documentation

README

IPLD extract links

Crates.io Documentation

This crate allow extracting links (CIDs) from serde_ipld_dag* formats like serde_ipld_dagcbor or serde_ipld_dagjson.

Usage

The link extractor is independent of the deserializer, hence you need to create one first. Therefore this example depends on serde_json as well as serde_ipld_dagjson.

use cid::Cid;
use ipld_extract_links::ExtractLinks;
use serde::Deserialize;

pub fn main() {
    let slice = br#"{"hello": "world!", "other": {"/": "bafkreibme22gw2h7y2h7tg2fhqotaqjucnbc24deqo72b6mkl2egezxhvy" }}"#;
    let mut json_deserializer = serde_json::Deserializer::from_slice(slice);
    let deserializer = serde_ipld_dagjson::Deserializer::new(&mut json_deserializer);
    let extracted_links = ExtractLinks::deserialize(deserializer).unwrap().into_vec();
    assert_eq!(
        extracted_links,
        vec![
            Cid::try_from("bafkreibme22gw2h7y2h7tg2fhqotaqjucnbc24deqo72b6mkl2egezxhvy").unwrap(),
        ]
    );
}

License

Licensed under either of

at your option.

Commit count: 0

cargo fmt