所有权
所有权的规则 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// 返回所有权 }