jsonld_core/loader/
map.rs1use super::{Loader, RemoteDocument};
2use crate::LoadError;
3use iri_rs::{Iri, IriBuf};
4use std::collections::{BTreeMap, HashMap};
5
6#[derive(Debug, thiserror::Error)]
9#[error("document not found")]
10pub struct EntryNotFound;
11
12impl<S: std::hash::BuildHasher + Send + Sync> Loader for HashMap<IriBuf, RemoteDocument, S> {
13 type Error = EntryNotFound;
14
15 async fn load(&self, url: Iri<&str>) -> Result<RemoteDocument<IriBuf>, LoadError<Self::Error>> {
16 match self.get(url.as_str()) {
17 Some(document) => Ok(document.clone()),
18 None => Err(LoadError::new(url.into(), EntryNotFound)),
19 }
20 }
21}
22
23impl Loader for BTreeMap<IriBuf, RemoteDocument> {
24 type Error = EntryNotFound;
25
26 async fn load(&self, url: Iri<&str>) -> Result<RemoteDocument<IriBuf>, LoadError<Self::Error>> {
27 match self.get(url.as_str()) {
28 Some(document) => Ok(document.clone()),
29 None => Err(LoadError::new(url.into(), EntryNotFound)),
30 }
31 }
32}