1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
use std::cmp::PartialEq; #[cfg(feature = "diesel")] #[macro_use] extern crate diesel; #[cfg(feature = "diesel")] use crate::diesel_ext::VectorType; #[derive(Debug)] #[cfg_attr(feature = "diesel", derive(FromSqlRow, AsExpression))] #[cfg_attr(feature = "diesel", sql_type = "VectorType")] pub struct Vector(Vec<f32>); impl From<Vec<f32>> for Vector { fn from(v: Vec<f32>) -> Self { Vector(v) } } impl Vector { pub fn to_vec(&self) -> Vec<f32> { self.0.clone() } } impl PartialEq for Vector { fn eq(&self, other: &Self) -> bool { self.0 == other.0 } } #[cfg(feature = "postgres")] mod postgres_ext; #[cfg(feature = "diesel")] mod diesel_ext; #[cfg(feature = "diesel")] pub mod sql_types { pub use super::diesel_ext::VectorType as Vector; }