2015-05-01 19 views

回答

2

的問題是,泛型類型檢查之前到正在擴大;這意味着編譯器必須驗證n as T(其中ni32)適用於所有可能的T。事實並非如此。

是什麼,使用特點,限制T到可以從i32定投類型。有點悲慘的是,這個特徵不存在。

最接近的模擬可能是std::convert::From,但它不會實現這樣的基本轉換,您不能自己提供它們。曾經有一些特性是從原始整數類型轉換而來的,但我相信它們在1.0清理之前被刪除。

在這一點上,你基本上是你自己的。您需要展示表達此轉換的特徵,然後針對您所關心的類型實施它。所以,你可以使用一個特徵,例如:

trait FromI32 { 
    fn from_i32(v: i32) -> Self; 
} 

然後更改功能使用<T: FromI32>FromI32::from_i32(n)而不是n as T

如果您想要實現上述特性的種類不止一種,一個簡單的宏應該減少重複次數。

+0

謝謝,這正是我所需要的。如果我可以的話,我會代表你)。 – jojo

相關問題