use crate::traits::LinearChromosome;
pub(crate) use rand::Rng;
pub fn swap<U: LinearChromosome>(chromosome: &mut U) {
crate::log_debug!(target="mutation_events", method="swap"; "Starting the swap mutation");
if chromosome.dna().len() < 2 {
return;
}
let mut rng = crate::rng::make_rng();
let index_1 = rng.random_range(0..chromosome.dna().len());
let index_2 = rng.random_range(0..chromosome.dna().len());
crate::log_trace!(target="mutation_events", method="swap"; "Mutation index 1: {}, mutation index 2: {}", index_1, index_2);
chromosome.dna_mut().swap(index_1, index_2);
crate::log_debug!(target="mutation_events", method="swap"; "Swap mutation finished");
}