use crate::prelude::*;
use crate::DataKey;
use alloc::boxed::Box;
pub trait DataConverter<MFrom: DataMarker, MTo: DataMarker> {
fn convert(
&self,
key: DataKey,
from: DataPayload<MFrom>,
) -> Result<DataPayload<MTo>, (DataPayload<MFrom>, DataError)>;
}
impl<MFrom, MTo, P> DataConverter<MFrom, MTo> for Box<P>
where
MFrom: DataMarker,
MTo: DataMarker,
P: DataConverter<MFrom, MTo> + ?Sized,
{
fn convert(
&self,
key: DataKey,
from: DataPayload<MFrom>,
) -> Result<DataPayload<MTo>, (DataPayload<MFrom>, DataError)> {
(**self).convert(key, from)
}
}