1个不稳定版本

0.1.3 2023年7月2日
0.1.2 2022年6月21日
0.1.1 2022年6月19日
0.1.0 2022年6月18日

#heterogeneous中排名第33

MIT许可证

14KB
293

TraitStack

使用两个Vec存储trait对象和vtable。

当元素不需要重新排序时,提供高效的异构列表。

Vec<Box<dyn Trait>>相比

Vec<Box<dyn Trait>>对每个元素进行分配。插入大量对象可能会因为分配而影响性能。

TraitStack将栈对象放入其内部向量。这使得通过索引移动元素变得不可能,并且只能用作栈。但在插入时非常快速。

请参阅图以了解详细结构。

diagram

no_std

不支持。

示例

let mut stack = TraitStack::<dyn Debug>::new();
stack.push("str");
stack.push(1);
stack.push(28342.2);
println!("{:?}", stack); // Print ["str", 1, 28342.2]

无运行时依赖