use crate::data_structures::node::Node;
pub struct LinkedList<T> {
head: Option<Box<Node<T>>>
}
impl<T> LinkedList<T> {
pub fn new() -> Self {
LinkedList { head: None }
}
pub fn push_front(&mut self, value: T) {
let mut new_node = Box::new(
Node::new(
value,
None
)
);
new_node.next = self.head.take();
self.head = Some(new_node);
}
pub fn pop_front(&mut self) -> Option<T> {
if let Some(node) = self.head.take() {
self.head = node.next;
Some(node.value)
} else {
None
}
}
pub fn is_empty(&self) -> bool {
self.head.is_none()
}
}