use std::collections::HashMap;
use std::sync::Arc;
use crate::{Error, ObjRef, Object, Resolve};
#[derive(Debug, Default)]
pub struct TestStore(HashMap<u32, Arc<Object>>);
impl TestStore {
pub fn from_pairs(pairs: impl IntoIterator<Item = (u32, Object)>) -> Self {
Self(
pairs
.into_iter()
.map(|(num, obj)| (num, Arc::new(obj)))
.collect(),
)
}
}
impl Resolve for TestStore {
fn fetch(&self, r: ObjRef) -> Result<Arc<Object>, Error> {
self.0
.get(&r.num)
.map(Arc::clone)
.ok_or(Error::UnresolvedRef(r))
}
}