天天看點

003 通過連結清單學Rust之給連結清單添加函數

介紹

視訊位址:https://www.bilibili.com/video/av78062009/

相關源碼:https://github.com/anonymousGiga/Rust-link-list

詳細内容

在上一節,我們基本确定了連結清單的布局方式,下面我們就來實作連結清單的響應的函數。

對于連結清單來說,最基本的幾個函數就是:

New //new函數為建立連結清單的函數
Push//添加元素的函數
Pop //彈出元素的函數      

New

實作如下:

impl List {
  pub fn new() -> Self {
    List { head: Link::Empty }
  }
}      

Push

實作如下:

impl List {
  pub fn push(&mut self, elem: i32) {
    let node = Box::new(Node {
      elem: elem,
      next: mem::replace(&mut self.head, Link::Empty),
    });
    
    self.head = Link::More(node);
  }
}      

Pop

impl List {
  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) 
      }
    }
  }
}