| Crates.io | astack |
| lib.rs | astack |
| version | 0.3.5 |
| created_at | 2023-09-17 19:58:50.608882+00 |
| updated_at | 2024-04-29 21:58:59.593361+00 |
| 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