016 通过链表学习Rust之安全的双链表布局

介绍#

视频地址:www.bilibili.com/video/av78062009/
相关源码:github.com/anonymousGiga/Rust-link...

详细内容#

本节开始,我们将设计一个安全的双端队列。双端队列的布局我们主要使用到 Rc 和 RefCell。

Rc#

Rc: 通过 Rc 指针可以共享数据。Rust 语言因为有所有权的概念,所以,数据失去了所有权之后,后面就无法使用该数据,而 Rc 就是解决此类问题的。而 Rc 指针指向的值是只读性质的,不能够修改。

RefCell#

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 协议》,转载必须注明作者和本文链接
令狐一冲
文章
255
粉丝
121
喜欢
308
收藏
128
排名:327
访问:2.9 万
私信
所有博文
社区赞助商