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