pub trait PathGenerator {
// Required methods
fn generate_paths(
&self,
from_position: (usize, usize),
) -> Vec<(usize, usize)>;
fn calculate_heuristic_cost(
&self,
position: (usize, usize),
target: (Option<usize>, Option<usize>),
) -> usize;
fn calculate_cost(
&self,
current_position: (usize, usize),
next_position: (usize, usize),
) -> usize;
}