Files
kickscore/src/storage.rs
2020-02-20 09:19:11 +01:00

49 lines
988 B
Rust

use std::collections::HashMap;
use crate::item::Item;
pub struct Storage {
keys: HashMap<String, usize>,
items: Vec<Item>,
}
impl Storage {
pub fn new() -> Self {
Storage {
keys: HashMap::new(),
items: Vec::new(),
}
}
pub fn contains_key(&self, key: &str) -> bool {
self.keys.contains_key(key)
}
pub fn insert(&mut self, key: String, item: Item) {
let index = self.items.len();
self.items.push(item);
self.keys.insert(key, index);
}
pub fn get_id(&self, key: &str) -> usize {
self.keys[key]
}
pub fn get_item(&mut self, id: usize) -> &mut Item {
&mut self.items[id]
}
pub fn item(&self, id: usize) -> &Item {
&self.items[id]
}
pub fn item_mut(&mut self, id: usize) -> &mut Item {
&mut self.items[id]
}
pub fn items_mut(&mut self) -> impl Iterator<Item = &mut Item> {
self.items.iter_mut()
}
}