azalea/pathfinder/astar/
nodemap.rs

1use std::hash::{BuildHasherDefault, Hash};
2
3use indexmap::{IndexMap, map::Entry};
4use rustc_hash::FxHasher;
5
6use crate::pathfinder::astar::Node;
7
8type FxIndexMap<K, V> = IndexMap<K, V, BuildHasherDefault<FxHasher>>;
9
10pub struct NodeMap<P> {
11    map: FxIndexMap<P, Node>,
12}
13impl<P: Hash + Eq> NodeMap<P> {
14    pub fn insert(&mut self, key: P, value: Node) {
15        self.map.insert(key, value);
16    }
17    pub fn get_index(&self, index: u32) -> Option<(&P, &Node)> {
18        self.map.get_index(index as usize)
19    }
20    pub fn entry(&mut self, key: P) -> Entry<'_, P, Node> {
21        self.map.entry(key)
22    }
23}
24impl<P> Default for NodeMap<P> {
25    fn default() -> Self {
26        Self {
27            map: Default::default(),
28        }
29    }
30}