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
总结
创建了一个使用内存作为存储的键值对程序。

浙公网安备 33010602011771号