Rust 锈菌是否可能存在大小性状多态性

Rust 锈菌是否可能存在大小性状多态性,rust,traits,Rust,Traits,我正在使用一个库,它公开了一个特性,要求它的大小为 我正在使用一个实现这个特性的对象,并试图创建一个包含所有这些实例的数组。对于非大小的trait,我会使用类似于Vec的东西,但是对于大小的trait,它是不可能的,编译器会抱怨trait MySizedTrait不能成为对象 有办法解决这个问题吗 下面是我尝试做的一个例子: trait A:大小{ fn做某事(自我); } 结构B; 以A换B{ fn做某事(&self){ println!(“这是B”) } } 结构C; 对C的impl A{

我正在使用一个库,它公开了一个特性,要求它的大小为

我正在使用一个实现这个特性的对象,并试图创建一个包含所有这些实例的数组。对于非大小的trait,我会使用类似于
Vec
的东西,但是对于
大小的
trait,它是不可能的,编译器会抱怨
trait MySizedTrait不能成为对象

有办法解决这个问题吗

下面是我尝试做的一个例子:

trait A:大小{
fn做某事(自我);
}
结构B;
以A换B{
fn做某事(&self){
println!(“这是B”)
}
}
结构C;
对C的impl A{
fn做某事(&self){
println!(“这是C”)
}
}
fn我的任务(d:&[Box]){
因为我在d{
i、 做某事;
}
}
fn main(){
让mut d:Vec=Vec::new();
d、 推送(盒子:新的(B));
d、 推送(盒子:新的(C));
我的_do_某事(&d);
}

dyn Trait
始终不按定义调整大小,因为它允许其后面的对象具有从
0
isize::MAX
的任何大小


要拥有固定大小的对象和多态性,请使用
enum
。然后,您可以将
impl
添加到
enum
本身上,该本身将向变量发送调用。有些方法可以自动执行。

trait声明明确拒绝任何创建trait对象的尝试。您唯一的选择是使用枚举或不使用trait对象。为什么trait
的大小要从它开始?