@@ -2,9 +2,7 @@ use nalgebra_sparse::CscMatrix;
22use num_traits:: { Float , NumCast , PrimInt , Unsigned , Zero } ;
33use single_utilities:: types:: Direction ;
44use std:: collections:: { HashMap , HashSet } ;
5- use std:: hash:: Hash ;
65use std:: iter:: Sum ;
7- use std:: ops:: Add ;
86use std:: ops:: AddAssign ;
97
108use crate :: sparse:: MatrixNTop ;
@@ -360,8 +358,8 @@ where
360358
361359 fn var_col < I , T > ( & self ) -> anyhow:: Result < Vec < T > >
362360 where
363- I : PrimInt + Unsigned + Zero + AddAssign + Into < T > ,
364- T : Float + NumCast + AddAssign + std:: iter:: Sum ,
361+ I : PrimInt + Unsigned + Zero + AddAssign + Into < T > + Send + Sync ,
362+ T : Float + NumCast + AddAssign + std:: iter:: Sum + Send + Sync ,
365363 Self :: Item : NumCast ,
366364 {
367365 let sum: Vec < T > = self . sum_col ( ) ?;
@@ -386,8 +384,8 @@ where
386384
387385 fn var_row < I , T > ( & self ) -> anyhow:: Result < Vec < T > >
388386 where
389- I : PrimInt + Unsigned + Zero + AddAssign + Into < T > ,
390- T : Float + NumCast + AddAssign + std:: iter:: Sum ,
387+ I : PrimInt + Unsigned + Zero + AddAssign + Into < T > + Send + Sync ,
388+ T : Float + NumCast + AddAssign + std:: iter:: Sum + Send + Sync ,
391389 Self :: Item : NumCast ,
392390 {
393391 let sum: Vec < T > = self . sum_row ( ) ?;
@@ -411,8 +409,8 @@ where
411409
412410 fn var_col_chunk < I , T > ( & self , reference : & mut [ T ] ) -> anyhow:: Result < ( ) >
413411 where
414- I : PrimInt + Unsigned + Zero + AddAssign + Into < T > ,
415- T : Float + NumCast + AddAssign + std:: iter:: Sum ,
412+ I : PrimInt + Unsigned + Zero + AddAssign + Into < T > + Send + Sync ,
413+ T : Float + NumCast + AddAssign + std:: iter:: Sum + Send + Sync ,
416414 Self :: Item : NumCast ,
417415 {
418416 // Validate input slice length matches number of columns
@@ -450,8 +448,8 @@ where
450448
451449 fn var_row_chunk < I , T > ( & self , reference : & mut [ T ] ) -> anyhow:: Result < ( ) >
452450 where
453- I : PrimInt + Unsigned + Zero + AddAssign + Into < T > ,
454- T : Float + NumCast + AddAssign + std:: iter:: Sum ,
451+ I : PrimInt + Unsigned + Zero + AddAssign + Into < T > + Send + Sync ,
452+ T : Float + NumCast + AddAssign + std:: iter:: Sum + Send + Sync ,
455453 Self :: Item : NumCast ,
456454 {
457455 // Validate input slice length matches number of rows
@@ -489,8 +487,8 @@ where
489487
490488 fn var_col_masked < I , T > ( & self , mask : & [ bool ] ) -> anyhow:: Result < Vec < T > >
491489 where
492- I : PrimInt + Unsigned + Zero + AddAssign + Into < T > ,
493- T : Float + NumCast + AddAssign + Sum ,
490+ I : PrimInt + Unsigned + Zero + AddAssign + Into < T > + Send + Sync ,
491+ T : Float + NumCast + AddAssign + Sum + Send + Sync ,
494492 {
495493 // Validate mask length
496494 if mask. len ( ) < self . nrows ( ) {
@@ -538,8 +536,8 @@ where
538536
539537 fn var_row_masked < I , T > ( & self , mask : & [ bool ] ) -> anyhow:: Result < Vec < T > >
540538 where
541- I : PrimInt + Unsigned + Zero + AddAssign + Into < T > ,
542- T : Float + NumCast + AddAssign + Sum ,
539+ I : PrimInt + Unsigned + Zero + AddAssign + Into < T > + Send + Sync ,
540+ T : Float + NumCast + AddAssign + Sum + Send + Sync
543541 {
544542 // Validate mask length
545543 if mask. len ( ) < self . ncols ( ) {
@@ -591,7 +589,7 @@ impl<M: NumCast + Copy + PartialOrd + NumericOps> MatrixMinMax for CscMatrix<M>
591589
592590 fn min_max_col < Item > ( & self ) -> anyhow:: Result < ( Vec < Item > , Vec < Item > ) >
593591 where
594- Item : NumCast + Copy + PartialOrd + NumericOps ,
592+ Item : NumCast + Copy + PartialOrd + NumericOps + Send + Sync ,
595593 {
596594 let mut min: Vec < Item > = vec ! [ Item :: max_value( ) ; self . ncols( ) ] ;
597595 let mut max: Vec < Item > = vec ! [ Item :: min_value( ) ; self . ncols( ) ] ;
@@ -602,7 +600,7 @@ impl<M: NumCast + Copy + PartialOrd + NumericOps> MatrixMinMax for CscMatrix<M>
602600
603601 fn min_max_row < Item > ( & self ) -> anyhow:: Result < ( Vec < Item > , Vec < Item > ) >
604602 where
605- Item : NumCast + Copy + PartialOrd + NumericOps ,
603+ Item : NumCast + Copy + PartialOrd + NumericOps + Send + Sync ,
606604 {
607605 let mut min: Vec < Item > = vec ! [ Item :: max_value( ) ; self . nrows( ) ] ;
608606 let mut max: Vec < Item > = vec ! [ Item :: min_value( ) ; self . nrows( ) ] ;
0 commit comments