Crates.io | astack |
lib.rs | astack |
version | 0.3.5 |
source | src |
created_at | 2023-09-17 19:58:50.608882 |
updated_at | 2024-04-29 21:58:59.593361 |
description | astack offers a Stack data structure with fixed capacity capable of fast LIFO operations. |
homepage | |
repository | |
max_upload_size | |
id | 975307 |
size | 91,263 |
astack offers a Stack
data structure with fixed capacity capable of fast LIFO operations.
The crate is available in both std and non-std environments. It does not even require the alloc
crate.
A Stack
does not allow for indexing operations, but offers three ways to operate with the top of the stack:
pop
and push
: perform the operation and return an Option
/Result
if it does not succeed.pop_panicking
and push_panicking
: perform the operation and panic if it does not succeed.pop_unchecked
and push_unchecked
: perform the operation but cause undefined behavior if it does not succeed.use astack::stack;
fn main() {
// Create an empty stack of i32 with can hold up to 8 numbers.
let mut stack = stack![i32; 8];
// Push an item to the end of the stack.
// Returns Err if the stack is full.
stack.push(10).unwrap();
stack.push(20).unwrap();
// Pop the top of the stack. Returns None if the stack is empty.
assert_eq!(stack.pop(), Some(20));
// Get a reference to TOS with Stack::tos.
// Get a mutable reference to TOS with Stack::tos_mut.
assert_eq!(stack.tos(), Some(&10));
// Remove all the elements from the stack
stack.clear();
assert!(stack.is_empty());
}
Licensed under MIT license or Apache Licence 2.0