天天看點

012 通過連結清單學習Rust之持久化單連結清單

介紹

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

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

詳細内容

在之前我們已經實作了一個單連結清單,從這節開始,我們将實作一個持久化的單連結清單。通過持久化的單連結清單,可以讓其他人來共享使用連結清單的資料。

布局

考慮如下例子:

list1 = A -> B -> C -> D
list2 = tail(list1) = B -> C -> D
list3 = push(list2, X) = X -> B -> C -> D      

我們希望我們看到的記憶體布局是這樣:

list1 -> A ---+
              |
              v
list2 ------> B -> C -> D
              ^
              |
list3 -> X ---+      

定義

use std::rc::Rc;

pub struct List<T> {
  head: Link<T>,
}

type Link<T> = Option<Rc<Node<T>>>;

struct Node<T> {
  elem: T,
  next: Link<T>,
}