Advertisement
Guest User

Untitled

a guest
Apr 18th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.59 KB | None | 0 0
  1. struct Node<T> {
  2. elem: T,
  3. next: Link<T>,
  4. }
  5.  
  6. struct List<T> {
  7. head: Link<T>
  8. }
  9.  
  10.  
  11. type Link<T> = Option<Box<Node<T>>>;
  12.  
  13. impl<T> List<T> {
  14. pub fn new() -> List<T> {
  15. return List { head: None };
  16. }
  17. pub fn push(&mut self, elem: T) {
  18. let old_head = self.head.take();
  19. let new_node = Node { elem: elem, next: old_head };
  20. self.head = Some(Box::new(new_node));
  21. }
  22. pub fn pop(&mut self, elem: T) -> Option<T> {
  23. let old_head = self.head.take();
  24. self.head = old_head.map(|n| { n.next });
  25. return old_head.map(|x| { x.elem });
  26. }
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement