daedelecs 0.1.0

A Memory Safe, Type-Checked ECS System written in Rust
Documentation
  • Coverage
  • 48%
    12 out of 25 items documented0 out of 17 items with examples
  • Size
  • Source code size: 71.7 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.7 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 15s Average build duration of successful builds.
  • all releases: 15s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Daedelus1/DaedelECS
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • Daedelus1

What is DaedelECS?

DaedelECS is a lightweight, bare-bones, extensible Entity Component System implementation written entirely in Rust. It is published under the MIT License. It is still under active development, so expect frequent breaking changes.

Important Notes

Asserting that The Standard Library, quote and syn are all safe packages, This program is entirely memory Safe. It is not possible to generate reference cycles in this program during normal use. There are no novel unsafe blocks, and the only dependencies are quote and syn, both battle-tested pieces of software, with over $600$ million and $900$ million downloads respectively. If there is a memory error, It is not from this crate. This library is expecting an up-to-date Rust version, using the 2024 edition or later.

Minimum Viable Use

Add the following to your Cargo.toml

[dependancies]

daedelecs = "0"

daedelecs-core = "0"

And paste the following example code into your main.rs

#[derive(Component)]
struct ExampleComponent {}
struct ExampleSystem {}
impl System<()> for ExampleSystem {
    type Data = ExampleComponent;

    fn run(_entity: &mut Entity, _world: &mut World<()>) {
        print!("Hello DaedelECS!")
    }
}
fn main() {
    let mut world = World::new(());
    Entity::builder()
        .with(ExampleComponent {})
        .add_to_world(&mut world);
    world.run_system::<ExampleSystem>();
}