Skip to main content

platform_trees/lists/
relative_doubly_linked_list.rs

1use crate::{LinkType, LinkedList};
2
3pub trait RelativeLinkedList<T: LinkType>: LinkedList<T> {
4    fn get_first(&self, head: T) -> T;
5    fn get_last(&self, head: T) -> T;
6    fn get_size(&self, head: T) -> T;
7
8    fn set_first(&mut self, head: T, element: T);
9    fn set_last(&mut self, head: T, element: T);
10    fn set_size(&mut self, head: T, size: T);
11
12    fn inc_size(&mut self, head: T) {
13        self.set_size(head, self.get_size(head) + T::funty(1));
14    }
15    fn dec_size(&mut self, head: T) {
16        self.set_size(head, self.get_size(head) - T::funty(1));
17    }
18}