所有权原则
- Rust 中每一个值都被一个变量所拥有,该变量被称为值的所有者;
- 一个值同时只能被一个变量所拥有,或者说一个值只有有一个所有者;
- 当所有者(变量)离开作用域范围时,这个值被丢弃。
let s1 = String::from("hello");
let s2 = s1;
println!("{}, world!", s1);
上述代码中,首先在堆上开辟了一块空间,存放“hello“。然后将指向”hello“的指针、字符串长度、字符串容量三者,作为一个复杂类型,赋予 s1。
当执行let s2 = s1;
后,由于一个值只能被一个变量拥有,此时s1
为无效引用,当执行第三行的println
语句时会报错。
Q: 为什么要这么设计? A: 避免二次释放问题。