use crate::error::GaError;
use crate::traits::ChromosomeT;
use log::debug;
pub fn rejuvenate<U: ChromosomeT>(parent_1: &U, parent_2: &U) -> Result<Vec<U>, GaError> {
if parent_1.dna().len() != parent_2.dna().len() {
return Err(GaError::CrossoverError(format!(
"Parents must have the same DNA length. Parent 1: {}, Parent 2: {}",
parent_1.dna().len(),
parent_2.dna().len()
)));
}
debug!(target="crossover_events", method="rejuvenate"; "Starting rejuvenate crossover");
let mut child_1 = parent_1.clone();
let mut child_2 = parent_2.clone();
child_1.set_age(0);
child_2.set_age(0);
debug!(target="crossover_events", method="rejuvenate"; "Rejuvenate crossover finished");
Ok(vec![child_1, child_2])
}