这是`std :: mem :: drop`的有效实现吗?

sag*_*aga 2 destructor memory-management rust

根据The Rust Programming Language,ch15-03,std::mem::drop获取一个对象,接收它的所有权,并调用它的drop功能.

这就是这段代码的作用:

fn my_drop<T>(x: T) {}

fn main() {
    let x = 5;
    let y = &x;
    let mut z = 4;

    let v = vec![3, 4, 2, 5, 3, 5];

    my_drop(v);
}
Run Code Online (Sandbox Code Playgroud)

这是做什么的std::mem::drop?它是否执行除此之外的任何其他清理任务?

Fra*_*gné 9

我们来看看来源:

#[inline]
#[stable(feature = "rust1", since = "1.0.0")]
pub fn drop<T>(_x: T) { }
Run Code Online (Sandbox Code Playgroud)

#[inline]给编译器一个暗示该函数应该内联的提示.#[stable]标准库使用它来标记稳定通道上可用的API.否则,它真的只是一个空功能!当_x超出范围作为drop返回时,其析构函数运行; 在Rust中没有其他方法可以隐式执行清理任务.

  • 你甚至不必查看源代码.[drop`的文档](https://doc.rust-lang.org/std/mem/fn.drop.html)字面上包含嵌入其中的函数的源代码. (2认同)