Trait icu_provider::datagen::DataConverter
source · 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§
sourcefn convert(
&self,
key: DataKey,
from: DataPayload<MFrom>
) -> Result<DataPayload<MTo>, (DataPayload<MFrom>, DataError)>
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.