use std::collections::HashMap;
pub(crate) struct HandleStore<T> {
items: HashMap<u32, T>,
next_id: u32,
}
impl<T> Default for HandleStore<T> {
fn default() -> Self {
Self { items: HashMap::new(), next_id: 1 }
}
}
impl<T> HandleStore<T> {
pub(crate) fn insert(&mut self, item: T) -> u32 {
let id = self.next_id;
self.items.insert(id, item);
self.next_id += 1;
id
}
pub(crate) fn get(&self, id: u32) -> Option<&T> {
self.items.get(&id)
}
pub(crate) fn get_mut(&mut self, id: u32) -> Option<&mut T> {
self.items.get_mut(&id)
}
pub(crate) fn remove(&mut self, id: u32) {
self.items.remove(&id);
}
pub(crate) fn clear(&mut self) {
self.items.clear();
}
}