[−][src]Macro components_arena::Component
Macro attribute for deriving Component
trait.
Examples
Non-generic component
#[macro_use] extern crate macro_attr; #[macro_use] extern crate components_arena; use components_arena::{ComponentClassMutex, Arena}; macro_attr! { #[derive(Component!)] struct Item { /* ... */ } } static ITEM: ComponentClassMutex<Item> = ComponentClassMutex::new(); // ... fn main() { let mut arena = Arena::new(); let id = arena.push(&mut ITEM.lock().unwrap(), |_| Item { /* ... */ }); }
Generic component
#[macro_use] extern crate macro_attr; #[macro_use] extern crate components_arena; use components_arena::{ComponentClassMutex, Arena}; macro_attr! { #[derive(Component!(class=ItemComponent))] struct Item<T> { context: T } } static ITEM: ComponentClassMutex<ItemComponent> = ComponentClassMutex::new(); // ... fn main() { let mut arena_u8 = Arena::new(); let _ = arena_u8.push(&mut ITEM.lock().unwrap(), |_| Item { context: 7u8 }); let mut arena_u32 = Arena::new(); let _ = arena_u32.push(&mut ITEM.lock().unwrap(), |_| Item { context: 7u32 }); }