pub(crate) use crate::traits::ChromosomeT;
#[cfg(all(not(target_arch = "wasm32"), feature = "parallel"))]
use rayon::prelude::*;
pub fn age_based<U: ChromosomeT>(chromosomes: &mut Vec<U>, population_size: usize) {
crate::log_debug!(target="survivor_events", method="age_based"; "Starting age based survivor method");
#[cfg(all(not(target_arch = "wasm32"), feature = "parallel"))]
chromosomes.par_sort_unstable_by(|a, b| a.age().cmp(&b.age()));
#[cfg(any(target_arch = "wasm32", not(feature = "parallel")))]
chromosomes.sort_unstable_by(|a, b| a.age().cmp(&b.age()));
crate::log_trace!(target="survivor_events", method="age_based"; "Chromosomes length {} - population size {}", chromosomes.len(), population_size);
if chromosomes.len() > population_size {
chromosomes.truncate(population_size);
}
crate::log_debug!(target="survivor_events", method="age_based"; "Age based survivor method finished");
}