1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
//! # Lists
//! Library containing various implementations of list-like data-structures such as `Vector`s, `LinkedList`s, and more.
//! All data-structures follow a sequence-like structure and can be represented like an `Array`.
//!
//! ## Linked Lists
//! ```rust
//! pub struct SinglyLinkedList { .. } // One-directional `LinkedList`.
//! pub struct DoublyLinkedList { .. } // Two-directional `LinkedList`.
//! ```
pub mod linked;
pub use linked::SinglyLinkedList;
pub use linked::DoublyLinkedList;
/// Shorthand syntax for creating a [`SinglyLinkedList`].
/// Time complexity is `O(n)`.
///
/// ## Example
/// ```rust
/// let list = sl_list![1, 2, 3, 4, 5];
///
/// assert_eq!(list.len(), 5);
/// assert_eq!(list.front(), Some(&1));
/// assert_eq!(list.back(), Some(&5));
/// ```
#[macro_export]
macro_rules! sl_list {
( $( $element: expr ), * ) => {
{
let mut list = $crate::linked::singly::SinglyLinkedList::new();
$( list.push_back($element); ) *
list
}
};
}
/// Shorthand syntax for creating a [`DoublyLinkedList`].
/// Time complexity is `O(1)`.
///
/// ## Example
/// ```rust
/// let list = dl_list![1, 2, 3, 4, 5];
///
/// assert_eq!(list.len(), 5);
/// assert_eq!(list.front(), Some(&1));
/// assert_eq!(list.back(), Some(&5));
/// ```
#[macro_export]
macro_rules! dl_list {
( $( $element: expr ), * ) => {
{
let mut list = $crate::linked::doubly::DoublyLinkedList::new();
$( list.push_back($element); ) *
list
}
};
}