stecs 0.1.2

Experimental static compiler-checked ECS library
Documentation
use stecs::prelude::*;

struct World<'a> {
    units: StructOf<Vec<Unit<'a>>>,
}

#[derive(SplitFields)]
#[split(debug, clone)]
struct Position<F: 'static> {
    x: F,
    y: F,
}

#[derive(SplitFields)]
#[split(debug, clone)]
struct Unit<'a> {
    #[split(nested)]
    position: Position<f32>,
    name: &'a str,
}

fn main() {
    let mut world = World {
        units: Default::default(),
    };

    let unit_name1 = String::from("Alfred");
    let unit_name2 = String::from("Olivia");

    world.units.insert(Unit {
        position: Position { x: 1.0, y: 5.0 },
        name: &unit_name1,
    });
    world.units.insert(Unit {
        position: Position { x: -3.0, y: 0.0 },
        name: &unit_name2,
    });

    for name in query!(world.units, (&name)) {
        println!("unit: {:?}", name);
    }
}