Rust返回值与作用域
Rust中在函数返回值的时候也会发生作用域的转移。
示例程序:
fn main() {
let s1 = gives_ownership();
let s2 = String::from("hello");
let s3 = takes_and_gives_back(s2);
}
fn gives_ownership() -> String {
let some_string = String::from("yuyoubei");
some_string
}
fn takes_and_gives_back(a_string: String) -> String {
a_string
}
上述程序中,main函数中所有权的转移过程:
- gives_ownership() 中的 some_string \(\rightarrow\) 主函数中的 s1
- 主函数中的 s2 \(\rightarrow\) takes_and_gives_back() 中的 a_string \(\rightarrow\) 主函数中的 s3