use crate::PrefixMap;
use crate::error::DerefError;
use iri_s::IriS;
pub trait DerefIri {
fn deref_iri(self, base: Option<&IriS>, prefixmap: Option<&PrefixMap>) -> Result<Self, DerefError>
where
Self: Sized;
}
impl<T: DerefIri> DerefIri for Option<T> {
fn deref_iri(self, base: Option<&IriS>, prefixmap: Option<&PrefixMap>) -> Result<Self, DerefError>
where
Self: Sized,
{
self.map(|t| t.deref_iri(base, prefixmap)).transpose()
}
}
impl<T: DerefIri> DerefIri for Box<T> {
fn deref_iri(self, base: Option<&IriS>, prefixmap: Option<&PrefixMap>) -> Result<Self, DerefError>
where
Self: Sized,
{
Ok(Box::new((*self).deref_iri(base, prefixmap)?))
}
}
impl<T: DerefIri> DerefIri for Vec<T> {
fn deref_iri(self, base: Option<&IriS>, prefixmap: Option<&PrefixMap>) -> Result<Self, DerefError>
where
Self: Sized,
{
self.into_iter().map(|t| t.deref_iri(base, prefixmap)).collect()
}
}