pub trait TermEncoder<TEncoding>:
Debug
+ Sync
+ Sendwhere
TEncoding: TermEncoding + ?Sized,{
type Term<'data>;
// Required methods
fn encode_terms<'data>(
terms: impl IntoIterator<Item = Result<Self::Term<'data>, ThinError>>,
) -> Result<<TEncoding as TermEncoding>::Array, DataFusionError>;
fn encode_term(
term: Result<Self::Term<'_>, ThinError>,
) -> Result<<TEncoding as TermEncoding>::Scalar, DataFusionError>;
}
Expand description
Allows encoding an iterator of a type into an EncodingArray.
This allows users to encode values in an RDF term array. An encoder is specialized for one encoding and one value type (Self::Term). The value type may only represent a subset of all valid RDF terms (e.g., only Boolean values). However, it is recommended that there is one decoder per TermEncoding that allows users to encode all RDF terms.
§Performance
Using a TermDecoder for accessing the array, performing an operation on Self::Term, and then re-encoding the resulting value using a TermEncoder may incur a performance penalty. However, we hope that this impact can be mitigated by compiler optimizations. We have yet to benchmark this impact to make a founded recommendation of when to use decoders and encoders. Users are free to directly work on the Arrow arrays to side-step the typed Encoding/Decoding machinery.
Required Associated Types§
Required Methods§
Sourcefn encode_terms<'data>(
terms: impl IntoIterator<Item = Result<Self::Term<'data>, ThinError>>,
) -> Result<<TEncoding as TermEncoding>::Array, DataFusionError>
fn encode_terms<'data>( terms: impl IntoIterator<Item = Result<Self::Term<'data>, ThinError>>, ) -> Result<<TEncoding as TermEncoding>::Array, DataFusionError>
Allows encoding an iterator over RDF terms in an Arrow array.
Sourcefn encode_term(
term: Result<Self::Term<'_>, ThinError>,
) -> Result<<TEncoding as TermEncoding>::Scalar, DataFusionError>
fn encode_term( term: Result<Self::Term<'_>, ThinError>, ) -> Result<<TEncoding as TermEncoding>::Scalar, DataFusionError>
Allows encoding a scalar RDF term in an Arrow scalar.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.