@@ -590,13 +590,13 @@ impl<T: Idx> SparseBitSet<T> {
590590
591591 fn contains ( & self , elem : T ) -> bool {
592592 assert ! ( elem. index( ) < self . domain_size) ;
593- self . elems . contains ( & elem)
593+ self . elems . iter ( ) . any ( |e| elem. index ( ) == e . index ( ) )
594594 }
595595
596596 fn insert ( & mut self , elem : T ) -> bool {
597597 assert ! ( elem. index( ) < self . domain_size) ;
598- let changed = if let Some ( i) = self . elems . iter ( ) . position ( |& e| e >= elem) {
599- if self . elems [ i] == elem {
598+ let changed = if let Some ( i) = self . elems . iter ( ) . position ( |& e| e. index ( ) >= elem. index ( ) ) {
599+ if self . elems [ i] . index ( ) == elem. index ( ) {
600600 // `elem` is already in the set.
601601 false
602602 } else {
@@ -615,7 +615,7 @@ impl<T: Idx> SparseBitSet<T> {
615615
616616 fn remove ( & mut self , elem : T ) -> bool {
617617 assert ! ( elem. index( ) < self . domain_size) ;
618- if let Some ( i) = self . elems . iter ( ) . position ( |& e| e == elem) {
618+ if let Some ( i) = self . elems . iter ( ) . position ( |& e| e. index ( ) == elem. index ( ) ) {
619619 self . elems . remove ( i) ;
620620 true
621621 } else {
@@ -1121,7 +1121,7 @@ impl<R: Idx, C: Idx> SparseBitMatrix<R, C> {
11211121 /// `write` can reach everything that `read` can (and
11221122 /// potentially more).
11231123 pub fn union_rows ( & mut self , read : R , write : R ) -> bool {
1124- if read == write || self . row ( read) . is_none ( ) {
1124+ if read. index ( ) == write. index ( ) || self . row ( read) . is_none ( ) {
11251125 return false ;
11261126 }
11271127
0 commit comments