2015-11-03 46 views
0

我試圖在一個結構中設置一個值爲Any類型的泛型,我是稍後將用於寫入redis。「trait` core :: marker :: Sized`沒有實現」爲一個通用類型的結構向量

struct Property<T> { 
    value: T, 
} 
struct Process { 
    properties: Option<[Property<Any>]>, 
} 

這會返回一個錯誤:

the trait `core::marker::Sized` is not implemented for the type `[Property<core::any::Any + 'static>]` 

編輯

閱讀從註釋的所有環節後,我想解釋,我很想有一個屬性,可以接受任何原始類型作爲值:

use std::any::*; 

struct Property<T> { 
    value: T, 
} 

struct Process { 
    properties: Option<Property<Any>>, 
} 

fn main() { 
    let p = Process { 
      properties: Some(
       Property::<String>{ 
        value: "" 
       } 
      ) 
     }; 

    let p2 = Process { 
      properties: Some(
       Property::<u32>{ 
        value: 150 
       } 
      ) 
     }; 
} 
+2

請[編輯]你的問題來解釋爲什麼這不是任何類似的重複。我假設你**已**搜尋錯誤訊息。或http://stackoverflow.com/q/32446485/155423或http://stackoverflow.com/q/32618872/155423或http://stackoverflow.com/ q/26922353/155423或http://stackoverflow.com/q/26062892/155423? – Shepmaster

+0

特別是[這個問題](http://stackoverflow.com/q/28175528/155423)明確處理'[T]'... – Shepmaster

+0

而且要清楚,這*可能不是重複的*,但它預計你會展現出一些努力並展示你所做的研究。通常這意味着指出現有的SO問題很接近但留下一些無法解釋的問題。 – Shepmaster

回答

0

您可以使用矢量來代替:

struct Process { 
    properties: Option<Vec<Property<Any>>>, 
} 

錯誤說,該core::marker::Sized不落實,所以大小不是在編譯時已知。有關數組和向量之間區別的更多信息,請參見here

+0

爲什麼你認爲這不是我在問題的評論中提到的其中一個重複? – Shepmaster

+0

因爲我沒有看到評論,直到你寫這個評論:) – contradictioned

相關問題