我有一个像这样的枚举:
pub enum Component {
Position { vector: [f64; 2] },
RenderFn { render_fn: fn(Display, &mut Frame, Entity), },
}
我想将 Component
存储在哈希集/ HashMap 中,它们仅由它们的枚举变体(Position
或 RenderFn
)标识.
集合中可以有零个或一个Position
和零个或一个RenderFn
。我希望能够通过传递标识符/类型 (Position
/RenderFn
) 来删除/检索它。
有没有什么办法可以做到这一点而不需要任何丑陋的黑客攻击?也许枚举不是解决之道?
最佳答案
听起来您想要一个结构,而不是枚举变体的集合。
struct Component {
position: Option<[f64; 2]>,
render_fn: Option<fn(Display, &mut Frame, Entity)>,
}
如果这可能涉及许多 种组件,而且它们大多不会全部出现,那么也许您需要像 typemap
这样的东西 crate 。
但要回答您的问题:不,变体不能与其相关值分开。
关于rust - 我如何存储枚举以便仅通过识别变体来检索它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45837189/