db-rs 0.1.13

fast, embedded, transactional, key value store
Documentation
use db_rs::{Config, Db, List};
use db_rs_derive::Schema;
use std::fs;

#[derive(Schema)]
struct Schema {
    list1: List<String>,
    list2: List<String>,
    list3: List<String>,
}

#[test]
fn list_test() {
    let dir = "/tmp/j/";
    drop(fs::remove_dir_all(dir));
    let mut db = Schema::init(Config::in_folder(dir)).unwrap();
    db.list1.push("a".to_string()).unwrap();
    assert_eq!(db.list1.data(), ["a"]);

    let db = Schema::init(Config::in_folder(dir)).unwrap();
    assert_eq!(db.list1.data(), ["a"]);

    drop(fs::remove_dir_all(dir));
}

#[test]
fn list_test2() {
    let dir = "/tmp/k/";
    drop(fs::remove_dir_all(dir));
    let mut db = Schema::init(Config::in_folder(dir)).unwrap();
    db.list1.push("a".to_string()).unwrap();

    db.list2.push("b".to_string()).unwrap();
    db.list2.push("c".to_string()).unwrap();
    db.list2.push("d".to_string()).unwrap();

    db.list3.push("e".to_string()).unwrap();
    db.list3.push("f".to_string()).unwrap();
    db.list3.push("g".to_string()).unwrap();
    db.list3.push("h".to_string()).unwrap();
    db.list3.push("i".to_string()).unwrap();
    db.list3.push("j".to_string()).unwrap();

    assert_eq!(db.list1.data(), ["a"]);
    assert_eq!(db.list2.data(), ["b", "c", "d"]);
    assert_eq!(db.list3.data(), ["e", "f", "g", "h", "i", "j"]);

    let db = Schema::init(Config::in_folder(dir)).unwrap();
    assert_eq!(db.list1.data(), ["a"]);
    assert_eq!(db.list2.data(), ["b", "c", "d"]);
    assert_eq!(db.list3.data(), ["e", "f", "g", "h", "i", "j"]);
    drop(fs::remove_dir_all(dir));
}