016 通過連結串列學習Rust之安全的雙連結串列佈局

linghuyichong發表於2021-06-20

視訊地址:www.bilibili.com/video/av78062009/
相關原始碼:github.com/anonymousGiga/Rust-link...

本節開始,我們將設計一個安全的雙端佇列。雙端佇列的佈局我們主要使用到Rc和RefCell。

Rc: 通過Rc指標可以共享資料。Rust語言因為有所有權的概念,所以,資料失去了所有權之後,後面就無法使用該資料,而Rc就是解決此類問題的。而Rc指標指向的值是隻讀性質的,不能夠修改。

RefCell:通過RefCell指標可以改變不可變的值。Rust一般變數定義為immutable的時候,是不能修改其值的,但是,RefCell指標能做到。

通過Rc和RefCell,我們可以定義我們的雙連結串列,程式碼如下:

use std::rc::Rc;
use std::cell::RefCell;

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

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

struct Node<T> {
    elem: T,
    next: Link<T>,
    prev: Link<T>,
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結
令狐一衝

相關文章