# icentral-node-queue
`icentral-node-queue` is a Rust crate designed to manage a queue of node identifiers (NodeId) efficiently and reliably. This crate offers a robust `NodeIdQueue` struct along with a macro `delegate_to_bfs_queue` to facilitate the implementation of the Breadth-First Search (BFS) algorithm.
`NodeIdQueue` acts as a named queue, allowing you to store and manage node identifiers, imperative for graph traversal and related operations.
## Features
- **Queue Operations**: Supports common queue operations such as `enqueue`, `dequeue`, and `peek`.
- **Named Queues**: Each queue is identifiable by a unique string name, making management of multiple queues straightforward.
- **Creation Methods**: Easily instantiate named empty queues or start a new queue with an initial node.
- **Debugging**: Built-in debug logs give detailed insights into queue operations, fostering efficient error tracking and debugging.
## Usage
To utilize the `icentral-node-queue`, you must include it in your `Cargo.toml` dependencies:
```toml
[dependencies]
icentral-node-queue = "0.1.0"
```
### Example
```rust
use icentral_node_queue::{NodeIdQueue, delegate_to_bfs_queue};
fn main() {
let first_node = NodeId::new(1);
let mut queue = NodeIdQueue::new(first_node, "example_queue");
// Enqueue a node
queue.enqueue(NodeId::new(2));
// Peek at the first node in the queue
if let Some(node) = queue.peek() {
println!("Next node in queue: {:?}", node);
}
// Dequeue a node
if let Some(dequeued_node) = queue.dequeue() {
println!("Dequeued node: {:?}", dequeued_node);
}
}
```
## License
This project is licensed under the MIT License. See the LICENSE file for details.
---
*Note: This README.md file was generated by an AI model and may not be 100% accurate; however, it should be pretty good.*
This crate is in the process of being translated from c++ to rust. Currently, it still needs exhaustive testing. It is likely there currently exist many glitches which need to be fixed before proper usage. This crate is based on the original icentral program developed by Fuad Jamor. Please see the following repository for details: https://github.com/fjamour/icentral.
For progress updates, see the workspacer rust project.