介绍
视频地址: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>, | |
} |