Rust Ownership System

Rust Ownership System

基于作用域和栈的内存管理是很符合直觉的,就像下面这样。

fn main() {

let i = 5;

}

这里的变量 i 最后离开了作用域,然后内存被回收。

而在下面这个例子里,变量被析构了两次。

fn main() {

let i = 5;

foo(i);

}

fn foo(i: i64) {

// do something...

}

第一次析构发生在 foo 结束的时候,第二次发生在 main 函数结束的时候。如果在 foo 中修改了这个变量的话,并不会影响到在 main 中的值。因为这里是的变量是被 拷贝 了......