usecrate::common::types::ScoreType;usecrate::segment::data_types::primitive::PrimitiveVectorElement;usecrate::segment::data_types::vectors::DenseVector;usecrate::segment::types::Distance;/// Defines how to compare vectors
pubtraitMetric<T: PrimitiveVectorElement> {fndistance()-> Distance;/// Greater the value - closer the vectors
fnsimilarity(v1:&[T], v2:&[T])-> ScoreType;/// Necessary vector transformations performed before adding it to the collection (like normalization)
/// If no transformation is needed - returns the same vector
fnpreprocess(vector: DenseVector)-> DenseVector;}pubtraitMetricPostProcessing{/// correct metric score for displaying
fnpostprocess(score: ScoreType)-> ScoreType;}