借用

收藏580

阅读11105

更新时间2025-08-27

将变量的所有者传递给另一个函数然后返回所有者是非常不方便的。 Rust 支持一个概念,即借用,即值的所有者暂时转移到实体,然后返回到原始所有者实体。

考虑以下因素 −

fn main(){
   // a list of nos
   let v = vec![10,20,30];
   print_vector(v);
   println!("{}",v[0]); // this line gives error
}
fn print_vector(x:Vec){
   println!("Inside print_vector function {:?}",x);
}

main 函数调用函数 print_vector()。 向量作为参数传递给该函数。 矢量的所有者也从 main() 传递给 print_vector() 函数。当 main() 函数尝试访问向量 v 时,上述代码将导致如下所示的错误。

|  print_vector(v);
|     - value moved here
|  println!("{}",v[0]);
|     ^ value used here after move

这是因为一旦所有者转移到另一个函数,最初拥有它的函数就无法再使用该变量或值。

什么是借用?

当一个函数暂时将对变量/值的控制权转移给另一个函数时,称为借用。这是通过传递对变量 (& var_name) 的引用而不是将变量/值本身传递给函数来实现的。 在控制权传递到的函数完成执行后,变量/值的所有者将转移给变量的原始所有者。

fn main(){
   // a list of nos
   let v = vec![10,20,30];
   print_vector(&v); // passing reference
   println!("Printing the value from main() v[0]={}",v[0]);
}
fn print_vector(x:&Vec){
   println!("Inside print_vector function {:?}",x);
}

输出

Inside print_vector function [10, 20, 30]
Printing the value from main() v[0] = 10

可变引用

函数可以通过使用对借用资源的可变引用来修改此类资源。 可变引用以 &mut 为前缀。可变引用只能对可变变量进行操作。

示例:改变整数引用

fn add_one(e: &mut i32) {
   *e+= 1;
}
fn main() {
   let mut i = 3;
   add_one(&mut i);
   println!("{}", i);
}

main()函数声明一个可变整型变量i并将i的可变引用传递给add_one()。 add_one() 将变量 i 的值增加 1。

示例:改变字符串引用

fn main() {
   let mut name:String = String::from("TutorialsPoint");
   display(&mut name); 
   //传递名称的可变引用
   println!("The value of name after modification is:{}",name);
}
fn display(param_name:&mut String){
   println!("param_name value is :{}",param_name);
   param_name.push_str(" Rocks"); 
   //修改实际的字符串,name
}

main() 函数将变量name 的可变引用传递给display() 函数。 显示函数将附加字符串附加到原始 name 变量。

输出

param_name value is :TutorialsPoint
The value of name after modification is:TutorialsPoint Rocks

相关

视频

RELATED VIDEOS

更多

免费

phpStudy极速入门视频教程

免费

Midjourney基础课程
初级 Midjourney基础课程

11149次学习

收藏

免费

极客学院Git使用视频教程

免费

尚观shell视频教程
高级 尚观shell视频教程

15709次学习

收藏

免费

尚观Linux入门视频教程
初级 尚观Linux入门视频教程

42887次学习

收藏

免费

尚观Linux初级视频教程
初级 尚观Linux初级视频教程

40264次学习

收藏

免费

尚观Linux中级视频教程
中级 尚观Linux中级视频教程

48298次学习

收藏

免费

尚观Linux高级视频教程
高级 尚观Linux高级视频教程

41982次学习

收藏

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号