@@ -9,15 +9,15 @@ use diesel::{deserialize::FromSqlRow, expression::AsExpression};
99#[ cfg_attr( feature = "diesel" , derive( FromSqlRow , AsExpression ) ) ]
1010#[ cfg_attr( feature = "diesel" , diesel( sql_type = SparseVectorType ) ) ]
1111pub struct SparseVector {
12- pub ( crate ) dim : usize ,
12+ pub ( crate ) dim : i32 ,
1313 pub ( crate ) indices : Vec < i32 > ,
1414 pub ( crate ) values : Vec < f32 > ,
1515}
1616
1717impl SparseVector {
1818 /// Creates a sparse vector from a dense vector.
1919 pub fn from_dense ( vec : & [ f32 ] ) -> SparseVector {
20- let dim = vec. len ( ) ;
20+ let dim: i32 = vec. len ( ) . try_into ( ) . unwrap ( ) ;
2121 let mut indices = Vec :: new ( ) ;
2222 let mut values = Vec :: new ( ) ;
2323
@@ -38,7 +38,7 @@ impl SparseVector {
3838 /// Creates a sparse vector from a map of non-zero elements.
3939 pub fn from_map < ' a , I : IntoIterator < Item = ( & ' a i32 , & ' a f32 ) > > (
4040 map : I ,
41- dim : usize ,
41+ dim : i32 ,
4242 ) -> SparseVector {
4343 let mut elements: Vec < ( & i32 , & f32 ) > = map. into_iter ( ) . filter ( |v| * v. 1 != 0.0 ) . collect ( ) ;
4444 elements. sort_by_key ( |v| * v. 0 ) ;
@@ -53,7 +53,7 @@ impl SparseVector {
5353 }
5454
5555 /// Returns the number of dimensions.
56- pub fn dimensions ( & self ) -> usize {
56+ pub fn dimensions ( & self ) -> i32 {
5757 self . dim
5858 }
5959
@@ -69,7 +69,7 @@ impl SparseVector {
6969
7070 /// Returns the sparse vector as a `Vec<f32>`.
7171 pub fn to_vec ( & self ) -> Vec < f32 > {
72- let mut vec = vec ! [ 0.0 ; self . dim] ;
72+ let mut vec = vec ! [ 0.0 ; self . dim as usize ] ;
7373 for ( i, v) in self . indices . iter ( ) . zip ( & self . values ) {
7474 vec[ * i as usize ] = * v;
7575 }
@@ -80,7 +80,7 @@ impl SparseVector {
8080 pub ( crate ) fn from_sql (
8181 buf : & [ u8 ] ,
8282 ) -> Result < SparseVector , Box < dyn std:: error:: Error + Sync + Send > > {
83- let dim = i32:: from_be_bytes ( buf[ 0 ..4 ] . try_into ( ) ?) as usize ;
83+ let dim = i32:: from_be_bytes ( buf[ 0 ..4 ] . try_into ( ) ?) ;
8484 let nnz = i32:: from_be_bytes ( buf[ 4 ..8 ] . try_into ( ) ?) as usize ;
8585 let unused = i32:: from_be_bytes ( buf[ 8 ..12 ] . try_into ( ) ?) ;
8686 if unused != 0 {
0 commit comments