diff --git a/src/main.rs b/src/main.rs index 0e7feed..c0f7872 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,11 +13,7 @@ pub struct List { head: Link, } -#[derive(Debug)] -enum Link { - Empty, - More(Box>), -} +type Link = Option>>; #[derive(Debug)] struct Node { @@ -27,21 +23,21 @@ struct Node { impl List { pub fn new() -> Self { - Self { head: Link::Empty } + Self { head: None } } pub fn push(&mut self, elem: T) { let new_node = Node { elem: elem, - next: std::mem::replace(&mut self.head, Link::Empty), + next: std::mem::replace(&mut self.head, None), }; - self.head = Link::More(Box::new(new_node)); + self.head = Some(Box::new(new_node)); } pub fn pop(&mut self) -> Option { - match std::mem::replace(&mut self.head, Link::Empty) { - Link::Empty => None, - Link::More(node) => { + match std::mem::replace(&mut self.head, None) { + None => None, + Some(node) => { self.head = node.next; Some(node.elem) }