我有一个类似的枚举:
pub enum Component {
Position { vector: [f64; 2] },
RenderFn { render_fn: fn(Display, &mut Frame, Entity), },
}
我想将Component
存储在一个hashset / hashmap中,只有它们的枚举变体(Position
或RenderFn
)才能识别它们。
集合中可以有零个或一个Position
和零个或一个RenderFn
。我希望能够通过传递标识符/类型(Position
/ RenderFn
)来删除/检索它。
有没有办法在没有任何丑陋的黑客的情况下做到这一点?也许枚举不是要走的路?
答案 0 :(得分:2)
It sounds like you want a structure, not a collection of enum variants.
struct Component {
position: Option<[f64; 2]>,
render_fn: Option<fn(Display, &mut Frame, Entity)>,
}
If this is likely to involve many kinds of components, and they mostly won't all be present, then maybe you want something like the typemap
包。
但要回答你的问题:不,不能将变体与其相关值分开。