Tôi có một số Vec<Box<T>>
trong đó T
triển khai Foo
. Tại sao tôi không thể ép nó vào một số Vec<Box<Foo>>
mặc dù tôi có thể ép buộc bất kỳ điều gì thuộc loại Box<T>
vào một số Box<Foo>
? Tại sao mã dưới đây không biên dịch?Tại sao Rust không cho phép cưỡng chế để tính các đối tượng bên trong các vùng chứa?
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>>;
}
Có liên quan đến sở thích của bạn: [câu hỏi gần đây về phôi] (http://stackoverflow.com/questions/41869048/is-there-a-trait-for-scalar-castable-types). – ljedrz