diff --git a/src/lib.rs b/src/lib.rs index b991162..2d5cea4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,20 +1,27 @@ -pub struct KvStore {} +use std::collections::HashMap; + +#[derive(Default)] +pub struct KvStore { + hash_map: HashMap, +} impl KvStore { pub fn new() -> Self { - unimplemented!() + Self { + hash_map: HashMap::new(), + } } pub fn set(&mut self, key: String, value: String) { - unimplemented!() + self.hash_map.insert(key, value); } pub fn get(&mut self, key: String) -> Option { - unimplemented!() + self.hash_map.get(&key).cloned() } pub fn remove(&mut self, key: String) { - unimplemented!() + self.hash_map.remove(&key); } } diff --git a/tests/tests.rs b/tests/tests.rs index 16ee0c9..4727ebf 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -153,3 +153,11 @@ fn remove_key() { store.remove("key1".to_owned()); assert_eq!(store.get("key1".to_owned()), None); } + +#[test] +fn get_empty_key() { + let mut store = KvStore::new(); + + store.set("".to_owned(), "value1".to_owned()); + assert_eq!(store.get("".to_owned()), Some("value1".to_owned())); +}