azalea/pathfinder/astar/
nodemap.rs1use 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}