簡體   English   中英

通用結構傳染媒介在鐵銹的

[英]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>基於TComponentManager ,你可能想看看anymaptypemap來代替。 anymap提供了一個由類型鍵入的簡單映射(即使用類型T作為鍵並存儲/檢索類型T的值)。 typemap通過類型K的關聯鍵將anymap概括為類型為K::Value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM