trait-stack

Crates.iotrait-stack
lib.rstrait-stack
version0.1.3
sourcesrc
created_at2022-06-18 15:40:42.181977
updated_at2023-07-02 06:53:22.281297
descriptionFast heterogeneous stack
homepage
repositoryhttps://github.com/storycraft/trait-stack/
max_upload_size
id608577
size30,026
storycraft (storycraft)

documentation

README

TraitStack

Store trait object and vtable using two Vec.

Provides efficient heterogeneous list when the elements don't need to get resorted.

Comparion to Vec<Box<dyn Trait>>

Vec<Box<dyn Trait>> makes allocation per element. Inserting many objects can hurt performance due to allocation.

TraitStack stack object to its inner vector. It makes moving element by index impossible and only can be used as stack. but very fast on insertion.

See diagram for detailed structure.

Diagram

diagram

no_std

No support.

Example

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

cargo fmt