[英]Vector of Generic Structs in Rust
我在Rust中創建一個實體組件系統,我希望能夠為每個不同的Component
類型存儲一個Vec
Component
:
pub trait Component {}
struct ComponentList<T: Component> {
components: Vec<T>,
}
是否可以創建這些ComponentList
的集合?
struct ComponentManager {
component_lists: Vec<ComponentList<_>>, // This does not work
}
這旨在使檢索特定Component
類型的列表更快,因為特定類型組件的所有實例將在同一ComponentList
。
創建一個每個ComponentList<T>
將實現但將隱藏該T
。 在該特性中,定義在組件列表上操作所需的任何方法(您將無法使用T
,當然,您必須使用像&Component
這樣的特征對象)。
trait AnyComponentList {
// Add any necessary methods here
}
impl<T: Component> AnyComponentList for ComponentList<T> {
// Implement methods here
}
struct ComponentManager {
component_lists: Vec<Box<AnyComponentList>>,
}
如果你想有一個高效的查找ComponentList<T>
基於T
從ComponentManager
,你可能想看看anymap
或typemap
來代替。 anymap
提供了一個由類型鍵入的簡單映射(即使用類型T
作為鍵並存儲/檢索類型T
的值)。 typemap
通過類型K
的關聯鍵將anymap
概括為類型為K::Value
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.