versatile-data 0.55.0

A library for databases that has convenient datasets that group together commonly used fields and gives you the flexibility to create your own fields.
Documentation
#[cfg(test)]
#[test]
fn test2() {
    use versatile_data::prelude::*;

    let dir = "./vd-test2/";
    if std::path::Path::new(dir).exists() {
        std::fs::remove_dir_all(dir).unwrap();
    }
    if let Ok(mut data) = Data::new(dir) {
        //1
        data.update(&Operation::New {
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Noah"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::New {
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Liam"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::New {
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Olivia"),
                KeyValue::new("country", "UK"),
            ],
        });
        data.update(&Operation::Update {
            row: 1,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Noah"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::Update {
            row: 2,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Liam"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::Update {
            row: 3,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Olivia"),
                KeyValue::new("country", "UK"),
            ],
        });

        //2
        data.update(&Operation::New {
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Noah"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::New {
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Liam"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::New {
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Olivia"),
                KeyValue::new("country", "UK"),
            ],
        });
        data.update(&Operation::Update {
            row: 1,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Renamed Noah"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::Update {
            row: 2,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Renamed Liam"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::Update {
            row: 3,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Renamed Olivia"),
                KeyValue::new("country", "UK"),
            ],
        });
        data.update(&Operation::Update {
            row: 4,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Noah"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::Update {
            row: 5,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Liam"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::Update {
            row: 6,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Olivia"),
                KeyValue::new("country", "UK"),
            ],
        });

        //3
        data.update(&Operation::New {
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Noah"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::New {
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Liam"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::New {
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Olivia"),
                KeyValue::new("country", "UK"),
            ],
        });
        data.update(&Operation::Update {
            row: 1,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Renamed Renamed Noah"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::Update {
            row: 2,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Renamed Renamed Liam"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::Update {
            row: 3,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Renamed Renamed Olivia"),
                KeyValue::new("country", "UK"),
            ],
        });
        data.update(&Operation::Update {
            row: 4,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Renamed Noah"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::Update {
            row: 5,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Renamed Liam"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::Update {
            row: 6,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Renamed Olivia"),
                KeyValue::new("country", "UK"),
            ],
        });
        data.update(&Operation::Update {
            row: 7,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Noah"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::Update {
            row: 8,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Liam"),
                KeyValue::new("country", "US"),
            ],
        });
        data.update(&Operation::Update {
            row: 9,
            activity: Activity::Active,
            term_begin: Term::Defalut,
            term_end: Term::Defalut,
            fields: vec![
                KeyValue::new("name", "Renamed Olivia"),
                KeyValue::new("country", "UK"),
            ],
        });
    }
}