0276-KVS-使用内存存储数据

环境

  • Time 2022-12-11
  • WSL-Ubuntu 22.04
  • Rust 1.65.0

前言

说明

参考:https://github.com/pingcap/talent-plan

目标

KVS 的意思是 KEY VALUE STORE,创建一个使用内存进行存储的程序。

Cargo.toml

[package]
edition = "2021"
name = "kvs"
version = "1.0.0"

[dependencies]

lib.rs

use std::collections::HashMap;

#[derive(Default)]
pub struct KvStore {
    map: HashMap<String, String>,
}

impl KvStore {
    pub fn get(&mut self, key: &str) -> Option<String> {
        self.map.get(key).map(String::to_string)
    }

    pub fn set(&mut self, key: String, value: String) -> Option<String> {
        self.map.insert(key, value)
    }

    pub fn remove(&mut self, key: &str) -> Option<String> {
        self.map.remove(key)
    }
}

test

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_get_set() {
        let mut kvs = KvStore::default();
        let name = "JiangBo";
        kvs.set("name".to_string(), name.to_string());
        let value = kvs.get("name");
        assert_eq!(Some(name.to_string()), value);
    }

    #[test]
    fn test_remove() {
        let mut kvs = KvStore::default();
        let name = "JiangBo";
        kvs.set("name".to_string(), name.to_string());
        let value = kvs.remove("name");
        assert_eq!(Some(name.to_string()), value);
    }

    #[test]
    fn test_double_set() {
        let mut kvs = KvStore::default();
        let name = "JiangBo";
        kvs.set("name".to_string(), name.to_string());
        let value = kvs.set("name".to_string(), "111".to_string());
        assert_eq!(Some(name.to_string()), value);
    }
}

通过测试

running 3 tests
test tests::test_double_set ... ok
test tests::test_get_set ... ok
test tests::test_remove ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests kvs

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

总结

创建了一个使用内存作为存储的键值对程序。

附录

posted @ 2025-10-27 10:32  jiangbo4444  阅读(1)  评论(0)    收藏  举报