Rust可变变量和字符串[重复]

a64a0gku  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(137)
    • 此问题在此处已有答案**:

When does Rust drop the value in case of reassignment? [duplicate](1个答案)
Does Rust free up the memory of overwritten variables?(3个答案)
4天前关闭。
我有下面的代码

{
    let mut a = String::from("Foo");
    a = String::from("Bar");
}

我想知道第一个字符串什么时候会被释放,是当我给一个不同的字符串赋值的时候,还是当作用域结束的时候?

arknldoa

arknldoa1#

你可以很容易地测试:

struct B(&'static str);

impl Drop for B {
    fn drop(&mut self) {
        println!("{} B dropped", self.0)
    }
}

fn main() {
    {
        let mut b = B("first");
        println!("{} B created", b.0);
        b = B("second");
        println!("{} B reasigned", b.0);
    }
}

这将输出:

first B created
first B dropped
second B reasigned
second B dropped

因此,当变量被重新赋值时,B的第一个示例会被删除,第二个示例会在函数末尾被删除。
Playground link to try it yourself

相关问题