Making progress.
This commit is contained in:
36
src/storage.rs
Normal file
36
src/storage.rs
Normal file
@@ -0,0 +1,36 @@
|
||||
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]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user