use crate::error::GaError;
use crate::traits::ChromosomeT;
use log::debug;
pub fn clone_crossover<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="clone"; "Starting clone crossover");
let child_1 = parent_1.clone();
let child_2 = parent_2.clone();
debug!(target="crossover_events", method="clone"; "Clone crossover finished");
Ok(vec![child_1, child_2])
}