1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use num_traits::one;

use crate::LinkedList;
use crate::Num;

pub trait AbsoluteLinkedList<T: Num>: LinkedList<T> {
    fn get_first(&self) -> T;
    fn get_last(&self) -> T;
    fn get_size(&self) -> T;

    fn set_first(&mut self, element: T);
    fn set_last(&mut self, element: T);
    fn set_size(&mut self, size: T);

    fn inc_size(&mut self) {
        self.set_size(self.get_size() + one())
    }
    fn dec_size(&mut self) {
        self.set_size(self.get_size() - one())
    }
}