@@ -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