手册
目录
将变量的所有者传递给另一个函数然后返回所有者是非常不方便的。 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
科技资讯
1
2
3
4
5
6
7
8
精选课程
共5课时
17.2万人学习
共49课时
77万人学习
共29课时
61.7万人学习
共25课时
39.3万人学习
共43课时
70.9万人学习
共25课时
61.6万人学习
共22课时
23万人学习
共28课时
33.9万人学习
共89课时
125万人学习