bevy_cell/
lib.rs

1use hashbrown::HashMap;
2pub use type_cell::*;
3pub type TyMap<K,V> = HashMap<K,V>;
4
5#[macro_export]
6macro_rules! bycell {
7    // Handles
8    (=$on:ty: [$o:ty|$($name:tt)*];)=>{paste!{
9        tycell!{ $on > Handle<$o>: [$($name)*.clone_weak()]; }
10    }}; 
11    (=$on:ty: [|$($name:tt)*];)=>{paste!{
12        tycell!{ !Handle<$on>: [$($name)*.clone_weak()]; }
13    }}; 
14    // Raw
15    (=$on:ty: [$o:ty:$($name:tt)*];)=>{paste!{
16        tycell!{ $on > $o: [$($name)*]; }
17    }}; 
18    (=$on:ty: [:$($name:tt)*];)=>{paste!{
19        tycell!{ $on: [$($name)*]; }
20    }}; 
21    // Entities
22    (=$on:ty: [$($name:tt)*];)=>{paste!{
23        tycell!{ $on > Entity: [$($name)*.clone()]; }
24    }}; 
25    // Merge
26    ($( $on:ty: $([$($name:tt)*])*;)*)=>{paste!{
27        $($(bycell!{= $on: [$($name)*]; })*)*
28    }}; 
29    ($( {$on:ty} $([$($name:tt)*])*)*)=>{paste!{
30        $($(bycell!{= $on: [$($name)*]; })*)*
31    }}; 
32}