use crate::api; use crate::system::{DynSystemCard, SystemCard}; pub struct SystemHandle { pub(crate) card: C, pub(crate) id: api::SysId, } impl SystemHandle { pub(crate) fn new(id: api::SysId) -> Self { Self { card: C::default(), id } } pub fn id(&self) -> api::SysId { self.id } } impl Clone for SystemHandle { fn clone(&self) -> Self { Self::new(self.id) } } pub trait DynSystemHandle { fn id(&self) -> api::SysId; fn get_card(&self) -> &dyn DynSystemCard; } impl DynSystemHandle for SystemHandle { fn id(&self) -> api::SysId { self.id } fn get_card(&self) -> &dyn DynSystemCard { &self.card } }