pub mod range; pub mod remap; pub mod smartset; pub type SmartSet = smartset::SmartSet; pub type Range = range::Range; pub type Remapper = remap::Remapper; macro_rules! visit_from { ( $obj:ident , $( ($fct:ident, $type:ty) ),+ $(,)?) => { $( fn $fct(self, value: $type) -> Result where E: de::Error, { Ok($obj::from(value)) } )* }; } pub(crate) use visit_from; pub fn map_tryfrom(v: Vec) -> Result, >::Error> where D: TryFrom, { v.into_iter() .map(|x| D::try_from(x)) .collect::, >::Error>>() } pub fn map_opt_tryfrom(v: Option>) -> Result>, >::Error> where D: TryFrom, { match v { Some(v) => Ok(Some( v.into_iter() .map(|x| D::try_from(x)) .collect::, >::Error>>()?, )), None => Ok(None), } } pub trait InternalTryFrom where Self: Sized, { fn i_try_from(value: T) -> Result; }