shred
v0.16.1
Esta biblioteca permite despachar sistemas, que pueden tener interdependencias, acceso compartido y exclusivo a recursos, en paralelo.
extern crate shred ;
use shred :: { DispatcherBuilder , Read , Resource , ResourceId , System , SystemData , World , Write } ;
# [ derive ( Debug , Default ) ]
struct ResA ;
# [ derive ( Debug , Default ) ]
struct ResB ;
# [ derive ( SystemData ) ] // Provided with `shred-derive` feature
struct 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 ) ;
}
Consulte el punto de referencia para ver un ejemplo más amplio (y útil).
1.56.1 stable
¡La contribución es muy bienvenida! Si desea otra característica, simplemente cree un problema. También puedes ayudar si quieres; simplemente elija un problema de "se busca ayuda". Si necesitas ayuda, ¡no dudes en preguntar!
Se supone que todas las contribuciones tienen doble licencia según MIT/Apache-2.
shred
se distribuye bajo los términos de la licencia MIT y la licencia Apache (Versión 2.0).
Ver LICENCIA-APACHE y LICENCIA-MIT.