Fork me on GitHub
摘要: 可以将所有权、借用规则与这些智能指针做一个对比 | Rust 规则 | 智能指针带来的额外规则 | | | | | 一个数据只有一个所有者 | Rc/Arc让一个数据可以拥有多个所有者 | | 要么多个不可变借用,要么一个可变借用 | RefCell实现编译期可变、不可变引用共存 | | 违背规则导 阅读全文
posted @ 2022-08-21 20:49 BabyMelvin 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 一个类型为 T 的对象 foo,如果 T: Deref<Target=U>,那么,相关 foo 的引用&foo在引用的时候会自动转换为&U。 0.解引用 定义一个Deref实例 use std::ops::Deref; struct MyBox<T>(T); impl<T> MyBox<T> { f 阅读全文
posted @ 2022-08-21 20:45 BabyMelvin 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 1.Copy和Drop 我们无法为一个类型同时实现 Copy 和 Drop 特征。因为实现了 Copy 的特征会被编译器隐式的复制,因此非常难以预测析构函数执行的时间和频率。因此这些实现了 Copy 的类型无法拥有析构函数。 #[derive(Copy)] struct Foo; impl Drop 阅读全文
posted @ 2022-08-21 20:37 BabyMelvin 阅读(31) 评论(0) 推荐(0) 编辑