use crate::{GraphError, GraphView};
pub trait PathfindingGraphAlgorithms<N, W>: GraphView<N, W> {
fn is_reachable(&self, start_index: usize, stop_index: usize) -> Result<bool, GraphError>;
fn shortest_path_len(
&self,
start_index: usize,
stop_index: usize,
) -> Result<Option<usize>, GraphError>;
fn shortest_path(
&self,
start_index: usize,
stop_index: usize,
) -> Result<Option<Vec<usize>>, GraphError>;
fn shortest_weighted_path(
&self,
start_index: usize,
stop_index: usize,
) -> Result<Option<(Vec<usize>, W)>, GraphError>
where
W: Copy + Ord + Default + std::ops::Add<Output = W>;
}