Skip to main content

LinkedList

Trait LinkedList 

Source
pub trait LinkedList<T: LinkType> {
    // Required methods
    fn get_previous(&self, element: T) -> T;
    fn get_next(&self, element: T) -> T;
    fn set_previous(&mut self, element: T, previous: T);
    fn set_next(&mut self, element: T, next: T);
}
Expand description

Base doubly-linked list trait providing node-level navigation.

Implementors provide the storage for previous/next pointers. Higher-level traits (AbsoluteLinkedList, RelativeLinkedList) build on this to add head, tail, and size tracking.

§Examples

use platform_trees::LinkedList;

struct SimpleList { prev: Vec<usize>, next: Vec<usize> }

impl LinkedList<usize> for SimpleList {
    fn get_previous(&self, el: usize) -> usize { self.prev[el] }
    fn get_next(&self, el: usize) -> usize { self.next[el] }
    fn set_previous(&mut self, el: usize, p: usize) { self.prev[el] = p; }
    fn set_next(&mut self, el: usize, n: usize) { self.next[el] = n; }
}

let mut list = SimpleList {
    prev: vec![0; 4],
    next: vec![0; 4],
};
list.set_next(1, 2);
assert_eq!(list.get_next(1), 2);

Required Methods§

Source

fn get_previous(&self, element: T) -> T

Returns the previous element of element.

Source

fn get_next(&self, element: T) -> T

Returns the next element of element.

Source

fn set_previous(&mut self, element: T, previous: T)

Sets the previous pointer of element to previous.

Source

fn set_next(&mut self, element: T, next: T)

Sets the next pointer of element to next.

Implementors§