Rust 教程

浏览27780
更新时间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<i32>){
   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<i32>){
   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

相关视频

更多

免费

phpStudy极速入门视频教程
初级phpStudy极速入门视频教程

54.6万次学习

收藏

免费

phpStudy V8 视频教程
初级phpStudy V8 视频教程

38.8万次学习

收藏

免费

小皮面板使用视频教程
初级小皮面板使用视频教程

21.6万次学习

收藏

免费

好课诞生记
初级好课诞生记

7.1万次学习

收藏

精品课程

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

共29课时

65万人学习

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

共25课时

41.3万人学习

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

共43课时

76.8万人学习

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

共25课时

64.2万人学习

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

共22课时

24.4万人学习

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

共28课时

36.3万人学习

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

共89课时

133.5万人学习

热门下载

更多
phpStudy 2018最新版
phpStudy 2018最新版

集成PHP7,16种组合,超全大合集

下载

VC9 32位
VC9 32位

VC9 32位 phpstudy集成安装环境运行库

下载

VC11 32位
VC11 32位

VC11 32位 phpstudy集成安装环境运行库​

下载

php程序员工具箱完整版
php程序员工具箱完整版

程序员工具箱 v1.0 php集成环境

下载

VC14 32位
VC14 32位

VC14 32位 phpstudy安装环境运行库

下载

SublimeText3汉化版
SublimeText3汉化版

中文版,非常好用

下载

Notepad++ Windows版
Notepad++ Windows版

Notepad++ 8.9.7 Windows版官方安装包,适合 Windows 用户进行代码编辑、文本处理、语法高亮和插件扩展配置。

下载