solverforge_solver/heuristic/selector/k_opt/
distance_meter.rs1use std::fmt::Debug;
4
5pub trait ListPositionDistanceMeter<S>: Send + Sync + Debug {
10 fn distance(&self, solution: &S, entity_idx: usize, pos_a: usize, pos_b: usize) -> f64;
12}
13
14#[derive(Debug, Clone, Copy)]
16pub struct DefaultDistanceMeter;
17
18impl<S> ListPositionDistanceMeter<S> for DefaultDistanceMeter {
19 fn distance(&self, _solution: &S, _entity_idx: usize, pos_a: usize, pos_b: usize) -> f64 {
20 (pos_a as f64 - pos_b as f64).abs()
21 }
22}