【Rust】所有权、引用、借用

所有权

所有权的规则
Rust 中的每一个值都有一个被称为其 所有者(owner)的变量。
值在任一时刻有且只有一个所有者。
当所有者(变量)离开作用域,这个值将被丢弃。

Rust 采取了一个不同的策略:内存在拥有它的变量离开作用域后就被自动释放

变量与数据交互

方式(一):移动

let s1 = String::from("hello");
let s2 = s1;
// s1 不能再用

方式(二):克隆

let s1 = String::from("hello");
let s2 = s1.clone();
// s1,s2都可用

栈上的数据:复制
实现了Copy trait 整数、布尔、浮点、字符、元组

向函数传递值可能会移动或复制,移动时所有权会转移,复制不会转移
返回值也可以转移所有权

let mut s1 = String::from("hello");
s1 = take(s1);// 转移所有权到函数
println!("{}",s1);

fn take(s: String) -> String {
    s// 返回所有权
}

 

上一篇:P1012 [NOIP1998 提高组] 拼数


下一篇:cf1144 E. Median String(思维)