導入
ビデオアドレス: https://www.bilibili.com/video/av78062009/
関連ソースコード: https://github.com/anonymousGiga/Rust-link-list
詳細
このセクションの初めに、安全な両端キューを設計します。両端キューのレイアウトには主に Rc と RefCell を使用します。
Rc
Rc: Rc ポインタを介してデータを共有できます。Rust言語には所有権の概念があるため、データが所有権を失うとその後そのデータを使用できなくなりますが、Rcはそのような問題を解決します。Rc ポインタが指す値は読み取り専用であり、変更できません。
レフセル
RefCell: 不変の値は、RefCell ポインタを通じて変更できます。Rustの一般変数が不変として定義されている場合、その値は変更できませんが、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>,
}