4个稳定版本
1.0.3 | 2020年6月21日 |
---|
#162 在 数据库实现
59KB
1.5K SLoC
MHdb是一个基于dbm的纯Rust数据库实现。
请参阅库文档。
变更日志
v1.0.3
- 更新Cargo.toml
v1.0.2
- 更新Cargo.toml
v1.0.1
- 更新文档
v1.0.0
- 首次发布
lib.rs
:
简单使用
use mhdb::{Db, prelude::*};
let mut db = Db::open("mydb")?;
let key = "Number".to_owned();
let val = 42i32;
db.store(key.clone(), val)?;
let num: Option<i32> = db.fetch(42u8)?;
assert_eq!(num, Some(val));
println!("{}", num.unwrap());
任何实现了Datum
的类型都可以存储在数据库中。
Datum
Datum表示数据库中的一个单个项目。因此,用作键和/或值的类型必须实现Datum
特质。
Datum
会自动在实现Serde特质Serialize
和Deserialize
的任何类型上实现。
内存数据库
任何实现了Source
特质类型都可以用作数据库源。该特质反过来也会自动在实现Read
、Write
、Seek
、Sync
和Send
标准库特质的任何类型上实现。因此,可以将其用作内存数据库。
use mhdb::{Db, prelude::*};
use std::io::Cursor;
let dirf = Cursor::new(Vec::<u8>::new());
let pagf = Cursor::new(Vec::<u8>::new());
let mut db: Db = Db::with_sources(Box::new(pagf), Box::new(dirf))?;
db.store(42u8, "Hello world".to_owned())?;
let txt: Option<String> = db.fetch(42u8)?;
assert!(txt.is_some());
println!("{}", txt.unwrap());
限制
- 键值对不能大于506B
Db
对象不是线程安全的
依赖项
~240KB