pub fn astar<T: Eq + Hash + Clone + Copy, F: FnOnce(&T, &T) -> i64 + Copy>( graph: &Graph<T>, start: T, end: T, heuristic: &F, ) -> Option<Vec<T>>