为什么丢下`&mutrc<_>没有做什么?如何明确删除“rc<_>”?

问题描述 投票:0回答:1
我有一个

Scene

struct持有该程序的资源,并引用了场景的资源,并且也由现场拥有。因此资源包裹在
Object
中。
rust游乐场
当程序结束时,我可以自定义清洁资源要做,我不能只是让所有内容都放在范围内。
我在
Rc<>
引用上称drop会减少RC计数,以便当我删除
Object
drop时,它被正确销毁了。 问题是:如果我打电话Scene
drop()
&mut mesh

drop()

Mesh
Rc
不会减少计数(编译器甚至警告它什么都不做),但是如果我用自有的呼叫
Rc::drop()
&mut self

Rc::drop()

    &mut self
  • 我将第二次销毁它,因为它已经被移动了。
    我的问题是:
  • 在我想要的时候,降低计数并破坏资源的正确方法是什么? thy为什么
    Rc::drop
    如果什么也不做?
        
rust drop reference-counting
1个回答
0
投票
从其所有者或(更常见的是)放弃所有者本身。

thy为什么

drop
如果什么也不做?

&mut

是内部协议的一部分,您无法明确称呼它:

Https://doc.rust-lang.org/stable/error_codes/e0040.html
当您打电话

drop

并将其传递给
pub fn drop<T>(_x: T) {} 时,您将删除可变的参考,这无济于事。 Rc

功能是不典型的,这实际上是

Rc

如果您只能减少nilly野的重新数,Rust会发现自己活着
Drop对物体,也就是悬挂的指针。
(来自评论)
由于我还有其他资源必须明确破坏(与C代码...相互作用),其中一些需要在网格之前释放,然后再释放一些。

您需要用自己的and Impl,而不是您想在这里做的任何事情来将其作为主资源进行重新审议。或将彼此的资源重新为自己的资源,并提及其自己的依赖性(因此,下降顺序自然是正确的)。
    
	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.