【问题标题】:Is this a valid implementation of `std::mem::drop`?这是 `std::mem::drop` 的有效实现吗?
【发布时间】:2018-08-25 02:29:15
【问题描述】:

根据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);
}

这是std::mem::drop 所做的吗?它是否执行除这些之外的任何其他清理任务?

【问题讨论】:

    标签: memory-management rust destructor


    【解决方案1】:

    我们来看看source:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多