sn9*_*n99 6 reference raii rust
fn main() {
let k = "fire";
drop(k);
println!("{:?}", k);
}
Run Code Online (Sandbox Code Playgroud)
k为什么我丢了之后还能用?不会drop自动解除引用吗?如果是,那为什么?的实现是什么Drop样的&str?
\n\n\n\n
std::mem::drop当我打电话给推荐人时会发生什么
引用本身被删除。
\n\n\n\n\n参考而不是拥有的价值
\n
参考就是一个值。
\n\n\n\n\n\n
k为什么我丢了之后还能用?
因为不可变指针实现了Copy. 您传入引用的副本,然后它就会被删除。
\n\n\n不会
\ndrop自动解除引用吗?
不,不是的。
\n\n\n\n\n的实现是什么
\nDrop样的&str?
没有一个可以用于任何类型的引用,无论是不可变的还是可变的,因此它实际上是 1:
\n\nimpl Drop for &str {\n fn drop(&mut self) {}\n}\nRun Code Online (Sandbox Code Playgroud)\n\n也可以看看:
\n\n\n\n1 \xe2\x80\x94 正如Peter Hall 指出的Drop那样,空实现和没有用户提供的实现之间存在差异,但就这个Drop问题而言,它们是相同的。
| 归档时间: |
|
| 查看次数: |
1360 次 |
| 最近记录: |