pub trait Encoder: Send + Sync {
// Required methods
fn codec(&self) -> Codec;
fn encode(&self, values: &[f32]) -> Result<EncodedVector, EncodingError>;
fn decode(&self, ev: &EncodedVector) -> Result<Vec<f32>, EncodingError>;
}Expand description
Encoder trait. Each codec ships exactly one impl.
Required Methods§
Sourcefn encode(&self, values: &[f32]) -> Result<EncodedVector, EncodingError>
fn encode(&self, values: &[f32]) -> Result<EncodedVector, EncodingError>
Encode values into an EncodedVector.
§Errors
Returns EncodingError::EmptyVector for a zero-dim
input, EncodingError::DimensionTooLarge for >65535
dimensions, and EncodingError::NonFinite for any
non-finite component.
Sourcefn decode(&self, ev: &EncodedVector) -> Result<Vec<f32>, EncodingError>
fn decode(&self, ev: &EncodedVector) -> Result<Vec<f32>, EncodingError>
Decode an EncodedVector back to Vec<f32>.
§Errors
Returns EncodingError::CodecMismatch when the
EncodedVector was produced by a different codec, and
EncodingError::Malformed when the payload byte
count does not match the recorded dimension.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".