28个发布版本

0.1.0-pre+beta.152022年7月16日
0.1.0-beta.142022年7月13日
0.1.0-beta.82022年6月30日
0.1.0-alpha.182022年5月27日
0.1.0-alpha.42022年3月21日

#103 in 数据库实现

Download history 4/week @ 2024-03-09 1/week @ 2024-03-16 114/week @ 2024-03-30 36/week @ 2024-04-06

105 每月下载量
用于 doublets-decorators

LGPL-3.0

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