016 リンクリストを通してRustの安全な二重リンクリストのレイアウトを学ぶ

導入

ビデオアドレス: 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>,
}

おすすめ

転載: blog.csdn.net/lcloveyou/article/details/120683199
おすすめ