1. 针对所有权规则:
唯一所有权 <------------> 智能指针(引用计数)<-------------->共享所有权
(引用计数)
{
单线程:Rc
多线程:Arc
}
2. 针对借用规则:
共享不可变(多读)<----->可变又共享(内部可变性)<----->可变不共享(独写,读写互斥)
内部可变性)
{
单线程:Cell, RefCell.
多线程: Mutex, RwLock, Atomic.
}
注:
(1)实现写代码时,若编程语言的规则是【不可变不共享】,那么我认为这门语言基本没啥用了。
(2)借用规则其实就是编译期和运行期的“读写锁机制”(前人总结,我摘抄)
3. 借用与生命周期:
核心思想:避免出现“悬垂指针”,注意rust引用也是指针,是一种受限的指针类型; A借用B, 则B的命(生命周期)必须大于等于A,则可以杜绝悬垂引用,反之则很可能会出现悬垂引用。
注:
(1)移动语义项的归纳:Rc, Arc, Cell, RefCell, Mutex, RwLock, Atomic等.
(2)遇到不明白,请写代码编译代码,rust编译器是个好老师。
注意:个人水平有限,难免谬误,欢迎指正,仅做参考,抛砖引玉;怕日后遗忘,故随笔记录。