use std::fmt::Debug;
use solverforge_core::domain::PlanningSolution;
use solverforge_scoring::Director;
use super::MoveTabuSignature;
pub trait Move<S: PlanningSolution>: Send + Sync + Debug {
fn is_doable<D: Director<S>>(&self, score_director: &D) -> bool;
fn do_move<D: Director<S>>(&self, score_director: &mut D);
fn descriptor_index(&self) -> usize;
fn entity_indices(&self) -> &[usize];
fn variable_name(&self) -> &str;
fn tabu_signature<D: Director<S>>(&self, score_director: &D) -> MoveTabuSignature;
}