versatile-data 0.117.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 rand::distributions::{Distribution, Uniform};
    use versatile_data::*;

    let dir = "./vd-test2/";
    if std::path::Path::new(dir).exists() {
        std::fs::remove_dir_all(dir).unwrap();
    }

    let mut data = Data::new(dir, DataOption::default());

    let field_a = FieldName::new("a".into());
    let field_b = FieldName::new("b".into());
    let field_c = FieldName::new("c".into());

    let mut rng = rand::thread_rng();
    let die = Uniform::from(0..=100);

    futures::executor::block_on(async {
        for _ in 0..100 {
            let a = die.sample(&mut rng);
            let b = die.sample(&mut rng);
            let c = die.sample(&mut rng);
            data.insert(
                Activity::Active,
                Term::Default,
                Term::Default,
                [
                    (field_a.clone(), a.to_string().into()),
                    (field_b.clone(), b.to_string().into()),
                    (field_c.clone(), c.to_string().into()),
                ]
                .into(),
            )
            .await;
        }
        /*
        let r = {
            let field_a = field_a.clone();
            let field_b = field_b.clone();
            let field_c = field_c.clone();
            data.search_default()
                .result_with_sort(vec![Order::Desc(OrderKey::CustomCmp(Box::new(
                    move |data, a, b| {
                        let a = (data.field_num(*a, &field_a)
                            + data.field_num(*a, &field_b)
                            + data.field_num(*a, &field_c))
                            / 3.0;
                        let b = (data.field_num(*b, &field_a)
                            + data.field_num(*b, &field_b)
                            + data.field_num(*b, &field_c))
                            / 3.0;

                        return a.partial_cmp(&b).unwrap();
                    },
                )))])
                .await
        };
        for r in r {
            let a = data.field_num(r, &field_a);
            let b = data.field_num(r, &field_b);
            let c = data.field_num(r, &field_c);
            println!("{} : {} : {} : {} / {}", r, a, b, c, (a + b + c) / 3.0);
        } */
    });
}