@@ 244,7 244,7 @@ impl TournamentReplacement {
}
}
-impl<TInput, TResult: Copy> Replacement<TInput, TResult> for TournamentReplacement {
+impl<TInput, TResult: Copy + Debug> Replacement<TInput, TResult> for TournamentReplacement {
fn replace(
&mut self,
parents: EvaluatedPopulation<TInput, TResult>,
@@ 261,13 261,8 @@ impl<TInput, TResult: Copy> Replacement<TInput, TResult> for TournamentReplaceme
let selected = self.selection.select(count, &population, better_than)
.collect::<Vec<_>>();
- let mut population = population.deconstruct();
-
- for (write_idx, read_idx) in selected.into_iter().enumerate() {
- population.swap(read_idx, write_idx);
- }
-
- population.truncate(count);
+ let population = population.deconstruct();
+ let population = extract_by_indices(population, selected);
EvaluatedPopulation::from_vec(population)
}