prefixmap/iri/
deref_iri.rs1use crate::PrefixMap;
2use crate::error::DerefError;
3use iri_s::IriS;
4
5pub trait DerefIri {
7 fn deref_iri(self, base: Option<&IriS>, prefixmap: Option<&PrefixMap>) -> Result<Self, DerefError>
15 where
16 Self: Sized;
17}
18
19impl<T: DerefIri> DerefIri for Option<T> {
20 fn deref_iri(self, base: Option<&IriS>, prefixmap: Option<&PrefixMap>) -> Result<Self, DerefError>
21 where
22 Self: Sized,
23 {
24 self.map(|t| t.deref_iri(base, prefixmap)).transpose()
25 }
26}
27
28impl<T: DerefIri> DerefIri for Box<T> {
29 fn deref_iri(self, base: Option<&IriS>, prefixmap: Option<&PrefixMap>) -> Result<Self, DerefError>
30 where
31 Self: Sized,
32 {
33 Ok(Box::new((*self).deref_iri(base, prefixmap)?))
34 }
35}
36
37impl<T: DerefIri> DerefIri for Vec<T> {
38 fn deref_iri(self, base: Option<&IriS>, prefixmap: Option<&PrefixMap>) -> Result<Self, DerefError>
39 where
40 Self: Sized,
41 {
42 self.into_iter().map(|t| t.deref_iri(base, prefixmap)).collect()
43 }
44}