Vec<Box<T>>
ここで、T
はFoo
を実装しています。 Box<T>
のタイプのものをBox<Foo>
に強制することができますが、なぜ私はそれをVec<Box<Foo>>
に強制することはできませんか?なぜ以下のコードはコンパイルされませんか?なぜRustは強制的にコンテナ内のオブジェクトに特化することができないのですか?
use std::vec;
trait Foo {}
struct Bar {}
impl Foo for Bar {}
fn main() {
let v = vec![Box::new(Bar {})];
let v_1 = v as Vec<Box<Foo>>;
}
あなたの興味に関係します:[キャストに関する最近の質問](http://stackoverflow.com/questions/41869048/is-there-a-trait-for-scalar-castable-types) – ljedrz