This library allows to dispatch systems, which can have interdependencies, shared and exclusive resource access, in parallel.
```rust extern crate shred;
use shred::{DispatcherBuilder, Read, Resource, ResourceId, System, SystemData, World, Write};
struct ResA;
struct ResB;
shred-derive
featurestruct Data<'a> { a: Read<'a, ResA>, b: Write<'a, ResB>, }
struct EmptySystem;
impl<'a> System<'a> for EmptySystem { type SystemData = Data<'a>;
fn run(&mut self, bundle: Data<'a>) {
println!("{:?}", &*bundle.a);
println!("{:?}", &*bundle.b);
}
}
fn main() { let mut world = World::empty(); let mut dispatcher = DispatcherBuilder::new() .with(EmptySystem, "empty", &[]) .build(); world.insert(ResA); world.insert(ResB);
dispatcher.dispatch(&mut world);
} ```
Please see the benchmark for a bigger (and useful) example.
1.56.1 stable
Contribution is highly welcome! If you'd like another feature, just create an issue. You can also help out if you want to; just pick a "help wanted" issue. If you need any help, feel free to ask!
All contributions are assumed to be dual-licensed under MIT/Apache-2.
shred
is distributed under the terms of both the MIT
license and the Apache License (Version 2.0).
See LICENSE-APACHE and LICENSE-MIT.