我想要一个拥有的 Rust 特征对象列表。我可以将其实现为,Vec<Box<dyn Trait>>
但它会在堆上为每个特征对象分配空间。我更喜欢的是一种CompactList<dyn Trait>
具有如下内存表示的类型:
[vtable1, size1, data1, vtable2, size2, data2, vtable3, size3, data3]
size*
是相应的字节大小data*
。
有了这个,我可以创建一个Iterator<Item = &dyn Trait>
. 我需要的唯一操作CompactList<T>
是push()
and iter()
。