获得徽章 0
如果一个包同时含有 src/main.rs 和 src/lib.rs,则它有两个 crate:一个二进制的和一个库的,且名字都与包相同。通过将文件放在 src/bin 目录下,一个包可以拥有多个二进制 crate:每个 src/bin 下的文件都会被编译成一个独立的二进制 crate。
1
let some_number = Some(5);
let some_char = Some('e');
let absent_number: Option<i32> = None;
评论
enum Option<T> {
None,
Some(T),
}
评论
Slice是一类引用,所以它没有所有权.
评论
RefCell<T> 在任何时候只允许有多个不可变借用或一个可变借用。
评论
当创建不可变和可变引用时,我们分别使用 & 和 &mut 语法。对于 RefCell<T> 来说,则是 borrow 和 borrow_mut 方法。
borrow 方法返回 Ref<T> 类型的智能指针,borrow_mut 方法返回 RefMut<T> 类型的智能指针。
评论
在不可变值内部改变值就是 内部可变性 模式。
16
Rc<T> 允许相同数据有多个所有者;Box<T> 和 RefCell<T> 有单一所有者。
Box<T> 允许在编译时执行不可变或可变借用检查;Rc<T>仅允许在编译时执行不可变借用检查;RefCell<T> 允许在运行时执行不可变或可变借用检查。
因为 RefCell<T> 允许在运行时执行可变借用检查,所以我们可以在即便 RefCell<T> 自身是不可变的情况下修改其内部的值。
展开
13
类似于 Rc<T>,RefCell<T> 只能用于单线程场景。
6
RefCell<T> 用于当你确信代码遵守借用规则,而编译器不能理解和确定的时候。
10
对于引用和 Box<T>,借用规则的不可变性作用于编译时。对于 RefCell<T>,这些不可变性作用于运行时。
4
RefCell<T> 代表其数据的唯一的所有权
2
下一页
个人成就
文章被阅读 702
掘力值 62
收藏集
1
关注标签
6
加入于