Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #![allow(dead_code)]
- use std::collections::HashMap;
- struct KVDB {
- entries: HashMap<String, String>,
- }
- impl KVDB {
- /// Creates a new instance of the key-value store.
- pub fn new() -> KVDB {
- KVDB {
- entries: HashMap::new(),
- }
- }
- /// Retrieves a value given a key.
- pub fn get(&self, key: &str) -> Option<String> {
- self.entries
- .get(&key.to_string()).cloned()
- }
- /// Stores a value into its given key.
- pub fn put(&mut self, key: &str, value: &str) -> Result<String, String> {
- let action = self.entries.insert(key.to_string(), value.to_string());
- {
- match action {
- None => Ok("added".to_string()),
- _ => Ok("modified".to_string()),
- }
- }
- }
- }
- #[cfg(test)]
- mod tests {
- use super::*;
- #[test]
- fn test_basics() {
- let mut kvdb = KVDB::new();
- assert_eq!(kvdb.put("a", "b"), Ok("added".to_string()));
- assert_eq!(kvdb.get("a"), Some("b".to_string()));
- assert_eq!(kvdb.put("a", "c"), Ok("modified".to_string()));
- assert_eq!(kvdb.get("b"), None);
- }
- #[test]
- fn test_inserting_types() {
- let mut kvdb = KVDB::new();
- assert_eq!(kvdb.put("a", "b"), Ok("added".to_string()));
- assert_eq!(kvdb.put(&"b".to_string(), "b"), Ok("added".to_string()));
- }
- }
- fn main() {}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement