dynstack

A stack for trait objects that minimizes allocations

1 unstable release

new 0.1.0 Nov 6, 2018

#6 in #trait-object

Download history 3/week @ 2018-11-06

1 downloads per month

MIT license

12KB
262 lines

dynstack

A stack for trait objects that minimizes allocations

Usage

dynstack can mostly replace anywhere you'd use a stack, or a vector that doesn't require removal from its center.

let mut stack = DynStack::<Debug>::new();
dyn_push!(stack, "hello, world!");
dyn_push!(stack, 0usize);
dyn_push!(stack, [1, 2, 3, 4, 5, 6]);

for item in stack.iter() {
    println!("{:?}", item);
}

// prints:
//  "hello, world!"
//  0
//  [1, 2, 3, 4, 5, 6]

lib.rs:

dynstack can mostly replace anywhere you'd use a stack, or a vector that doesn't require removal from its center.

# use dynstack::{DynStack, dyn_push};
# use std::fmt::Debug;
let mut stack = DynStack::<Debug>::new();
dyn_push!(stack, "hello, world!");
dyn_push!(stack, 0usize);
dyn_push!(stack, [1, 2, 3, 4, 5, 6]);

for item in stack.iter() {
    println!("{:?}", item);
}

// prints:
//  "hello, world!"
//  0
//  [1, 2, 3, 4, 5, 6]

No runtime deps