use super::raw::{Data, OwnedData}; pub struct Inputs<'a>(Vec>); impl<'a> Inputs<'a> { pub(crate) fn inner(&self) -> Vec> { self.0.clone() } } impl<'a> From>> for Inputs<'a> { fn from(value: Vec>) -> Self { Self(value) } } impl<'a, T: Into>> From for Inputs<'a> { fn from(value: T) -> Self { Self(vec![value.into()]) } } impl<'a> From<&'a Outputs> for Inputs<'a> { fn from(value: &'a Outputs) -> Self { Self(value.0.iter().map(std::convert::Into::into).collect()) } } pub struct Outputs(Vec); impl Outputs { pub fn into_inner(self) -> Vec { self.0 } } impl From> for Outputs { fn from(value: Vec) -> Self { Self(value) } } impl> From for Outputs { fn from(value: T) -> Self { Self(vec![value.into()]) } } impl From> for Outputs { fn from(value: Inputs) -> Self { Self( value .0 .into_iter() .map(|i: Data<'_>| Data::to_owned_data(&i)) .collect(), ) } }