shred
v0.16.1
このライブラリを使用すると、相互依存関係、共有および排他的リソース アクセスを持つシステムを並行してディスパッチできます。
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 ) ;
}
より大きな (そして有用な) 例については、ベンチマークを参照してください。
1.56.1 stable
貢献は大歓迎です!別の機能が必要な場合は、問題を作成してください。ご希望であれば、お手伝いすることもできます。 「助けが必要な」問題を選択するだけです。サポートが必要な場合は、お気軽にお問い合わせください。
すべてのコントリビューションは、MIT/Apache-2 に基づいてデュアルライセンスされていると想定されます。
shred
、MIT ライセンスと Apache ライセンス (バージョン 2.0) の両方の条件に基づいて配布されます。
LICENSE-APACHE および LICENSE-MIT を参照してください。