135
}
136
137
>
func (s *SliceImpl) SplitByPredicate(predicate tasks.Predicate) (pass Slice, fail Slice) {
slice.go
138
>
s.stateSanityCheck()
139
>
140
>
passScope, failScope := s.scope.SplitByPredicate(predicate)
141
>
passTaskTracker, failTaskTracker := s.split(passScope, failScope)
142
>
143
>
passIterators := make([]Iterator, 0, len(s.iterators))
144
>
failIterators := make([]Iterator, 0, len(s.iterators))
145
>
for _, iter := range s.iterators {
146
// iter.Remaining() is basically a deep copy of iter
147
passIterators = append(passIterators, iter)