Mam Vec<Box<T>>
gdzie T
implementuje . Dlaczego nie mogę go przymusić do Vec<Box<Foo>>
, mimo że mogę przymusić cokolwiek typu Box<T>
do Box<Foo>
? Dlaczego poniższy kod nie jest kompilowany?Dlaczego Rust nie pozwala na wymuszanie obiektów w kontenerach?
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>>;
}
Odpowiednie dla twoich zainteresowań: [ostatnie pytanie dotyczące obsady] (http://stackoverflow.com/questions/41869048/is-there-a-trait-for-scalar-castable- typeses). – ljedrz