Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::mem::{replace};
- #[derive(Debug)]
- enum Link {
- Nil,
- Cons(Box<Node>)
- }
- #[derive(Debug)]
- struct Node {
- element: i32,
- next: Link
- }
- #[derive(Debug)]
- pub struct List {
- head: Link
- }
- impl List {
- pub fn new() -> Self {
- List { head: Link::Nil }
- }
- pub fn push(&mut self, v: i32) {
- self.head = Link::Cons(Box::new(
- Node {
- element: v,
- next: replace(&mut self.head, Link::Nil)
- }
- ));
- }
- pub fn pop(&mut self) -> Option<i32> {
- match replace(&mut self.head, Link::Nil) {
- Link::Nil => None,
- Link::Cons(node) => {
- self.head = node.next;
- Some(node.element)
- }
- }
- }
- }
- fn main() {
- let mut l = List::new();
- l.push(19);
- l.push(20);
- println!("{:?}", l);
- println!("{:?}", l.pop());
- println!("{:?}", l);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement