Rust 所有权

2019-11-04  本文已影响0人  RoyLin1996

什么是所有权?(Ownership)

Rust 不使用 GC(垃圾回收器)管理内存,而是使用所有权机制进行管理。和 GC 要启动专门的工作线程并且会在运行时中断程序相比,所有权机制是非常轻量级的。

当下面的代码运行到右花括号处时,Rust 会自动调用一个名叫 drop 的函数来释放变量 s 占用的内存

{
    let s = String::from("hello"); 
}                            

如果把内存空间比喻成一间房子,那么要进入这间房子就必须拿到它对应的那把钥匙,这把钥匙同一时刻只属于一个人。

当 s1 被赋值给 s2 时将发生移动而不是浅拷贝,也就是说 s1 将变得无效而 s2 获得所有权

let s1 = String::from("hello");
let s2 = s1;

函数调用也会发生所有权移动

fn main() {
    let s = String::from("hello");

    takes_ownership(s); 
    // s 在此处已经无效
}

fn takes_ownership(some_string: String) {
    println!("{}", some_string);
}
上一篇 下一篇

猜你喜欢

热点阅读