[RingStack] is a tiny stack implementation which uses circular buffer.
Since [RingStack] is constructed upon a circular buffer, the oldest item automatically dropped as you [push][RingStack::push()] when the number of items has already reached its limit.
And it supports [RingStack::iter()] method which returns Iterator<&Option<T>>
.
It provides items one by one with historical order, latest to oldest.
Though [RingStack] currently uses [Vec] as its internals, once it allocates at the timing of [new][RingStack::iter()] then additional allocation never happends.
```rust use ringstack::RingStack;
let mut s = RingStack::
s.push(1); s.push(2); asserteq!(s.peek(), Some(&2)); asserteq!(s.pop(), Some(2));
s.push(3); s.push(4); let v: Vec
s.push(5); let v: Vec
asserteq!(s.pop(), Some(5)); asserteq!(s.pop(), Some(4)); asserteq!(s.pop(), Some(3)); asserteq!(s.pop(), None); ```
Initial Version
The MIT License (MIT)
Copyright (c) 2022 msr1k