qmi 0.1.0

An ECS with too much macro usage
Documentation
use qmi::QMI;
use serde::Serialize;

#[derive(Debug, Serialize)]
struct Position {
    x: i32,
    y: i32,
    z: i32,
}

#[derive(Debug, Serialize)]
struct Velocity {
    x: i32,
    y: i32,
    z: i32,
}

fn main() {
    let mut qmi = QMI::create_or_open("test.db");
    let player = qmi.spawn();
    qmi.insert(player, Position { x: 0, y: 0, z: 0 });
    qmi.insert(player, Velocity { x: 0, y: 0, z: 0 });
    qmi.insert(player, String::from("Hello!"));
    let merged_queries = qmi.query::<(Position, Velocity, String)>();
    for item in merged_queries {
        println!("{:?}", item);
    }
    let mut_queries = qmi.query_mut::<(Position, Velocity)>();
    for item in mut_queries {
        item.1.1.x += 1;
    }
    let merged_queries = qmi.query::<(Position, Velocity)>();
    for item in merged_queries {
        println!("{:?}", item);
    }
    let _ = qmi.save();
}