28个发布版本
0.1.0-pre+beta.15 | 2022年7月16日 |
---|---|
0.1.0-beta.14 | 2022年7月13日 |
0.1.0-beta.8 | 2022年6月30日 |
0.1.0-alpha.18 | 2022年5月27日 |
0.1.0-alpha.4 | 2022年3月21日 |
#103 in 数据库实现
105 每月下载量
用于 doublets-decorators
150KB
4K SLoC
双胞胎
一个表示使用双胞胎的数据库引擎的库。
概述
示例
双胞胎中的基本CRUD
use doublets::{
data::Flow::Continue,
mem::FileMappedMem,
unit, Doublets, Error
};
use std::fs::File;
fn main() -> Result<(), Error<usize>> {
// create or open read/write file
let file = File::options()
.create(true)
.read(true)
.write(true)
.open("db.links")?;
let mem = FileMappedMem::new(file)?;
let mut links = united::Store::<usize, _>::new(mem)?;
// Creation of the empty doublet in tiny style
let mut point = links.create()?;
// Update of the doublet in handler style
// The link is updated to reference itself twice (as source and target):
links.update_with(point, point, point, |_, after| {
// link is { index, source, target }
point = after.index;
// give handler state (any ops::Try)
Continue
})?;
// print all links from store
links.each(|link| {
println!("{link}");
Continue
});
// The link deletion in full style:
// `any` constant denotes any link
let any = links.constants().any;
// query in [index source target] style
// delete all links with index = point
links.delete_by_with([point, any, any], |before, _| {
println!("Goodbye {}", before);
Continue
})?;
Ok(())
}
依赖项
~2–12MB
~142K SLoC