pub trait DataConverter<MFrom: DataMarker, MTo: DataMarker> {
    // Required method
    fn convert(
        &self,
        key: DataKey,
        from: DataPayload<MFrom>
    ) -> Result<DataPayload<MTo>, (DataPayload<MFrom>, DataError)>;
}
Expand description

A trait that allows for converting between data payloads of different types.

These payloads will typically be some kind of erased payload, either with AnyMarker, BufferMarker, or SerializeMarker, where converting requires reifying the type. A type implementing DataConverter will essentially have a “registry” mapping keys to concrete marker types M, and reifying the input to a DataPayload<M>, performing some conversion or computation, and erasing the result to DataPayload<MTo>.

It will typically be implemented on data providers used in datagen.

The make_exportable_provider! macro is able to automatically implement this trait.

Required Methods§

source

fn convert( &self, key: DataKey, from: DataPayload<MFrom> ) -> Result<DataPayload<MTo>, (DataPayload<MFrom>, DataError)>

Attempt to convert a payload corresponding to the given data key from one marker type to another marker type.

If this is not possible (for example, if the provider does not know about the key), the original payload is returned back to the caller.

Implementations on Foreign Types§

source§

impl<MFrom, MTo, P> DataConverter<MFrom, MTo> for Box<P>where MFrom: DataMarker, MTo: DataMarker, P: DataConverter<MFrom, MTo> + ?Sized,

source§

fn convert( &self, key: DataKey, from: DataPayload<MFrom> ) -> Result<DataPayload<MTo>, (DataPayload<MFrom>, DataError)>

Implementors§