use reliakit_collections::{BoundedVec, RingBuffer};
fn main() {
let mut queue: BoundedVec<&str, 1, 3> = BoundedVec::new(vec!["first"]).unwrap();
queue.push("second").unwrap();
queue.push("third").unwrap();
println!("queue: {:?} (len {})", queue.as_slice(), queue.len());
match queue.push("fourth") {
Ok(()) => println!("pushed fourth"),
Err(e) => println!("push refused: {e}"),
}
queue.pop().unwrap();
queue.pop().unwrap();
match queue.pop() {
Ok(item) => println!("popped {item}"),
Err(e) => println!("pop refused: {e}"),
}
let mut recent: RingBuffer<u32> = RingBuffer::new(3).unwrap();
for n in 1..=5 {
if let Some(evicted) = recent.push(n) {
println!("ring evicted {evicted}");
}
}
println!(
"ring holds {} items; oldest = {:?}, newest = {:?}",
recent.len(),
recent.oldest(),
recent.newest(),
);
}