上一章节我们学习了 所有权 ( ownership ) 这个改变,知道了在 堆( heap ) 上分配的变量都有所有权。
上一章节,我们也以一种艰难的方式将具有所有权的变量,比如字符串变量、向量变量作为参数传递给函数,同时为了保证函数调用之后变量仍然具有所有权,又在函数内返回变量。
这样的过程,不但没有减轻我们的负担,反而觉得越来越难以使用的感觉。
使用的过程中,我就一直在想,为什么不多支持一个 借用所有权 或者 租借所有权 的概念呢 ?
把具有所有权的变量传递给函数作为参数时,就是临时出租所有权,当函数执行完后就会自动收回所有权。就像现实生活中,我可以把某个工具临时借用给其它人,当他们使用完了之后还给我们就可以了。
随着对 Rust 的深入了解,觉得 Rust 语言的开发者也是不笨的,他们也想到了 借用所有权 这个概念。
Rust 支持对所有权的 出借 borrowing。当把一个具有所有权的变量传递给函数时,就是把所有权借用给函数的参数,当函数返回后则自动收回所有权。
下面的代码,我们并没有使用上一章节的 所有权 转让规则收回所有权,所以程序会报错
fn main(){
letv=vec![10,20,30];// 声明一个向量,变量 v 具有数据的所有权
print_vector(v);
println!("{}",v[0]);// 这行会报错
}
fn print_vector(x:Vec){
println!("Inside print_vector function {:?}",