- 通过可变变量实现函数修改传递进来的变量值:
- 在Rust中,要使函数能够修改传递进来的变量值,需要将参数声明为可变引用。
- 代码示例如下:
fn modify_variable(num: &mut i32) {
*num += 1;
}
fn main() {
let mut number = 5;
modify_variable(&mut number);
println!("The modified number is: {}", number);
}
- 所有权和借用规则的体现:
- 所有权:在Rust中,每个值都有一个所有者。在上述代码中,
number
变量在main
函数中创建,main
函数是number
的所有者。
- 借用:
- 可变借用:当调用
modify_variable(&mut number)
时,number
被可变借用。可变借用意味着在借用期间,只有这个可变引用可以访问和修改该变量,其他任何对该变量的访问都是不允许的,这是为了避免数据竞争。例如,在modify_variable
函数执行期间,如果尝试在main
函数中再次访问number
,编译器会报错。
- 借用规则:Rust的借用规则确保在任何给定时间,要么只能有一个可变引用(可变借用),要么可以有多个不可变引用(不可变借用),但不能同时存在可变和不可变引用。在这个例子中,
modify_variable
函数获得了number
的可变引用,因此在函数调用期间,其他地方不能再对number
进行借用。当函数调用结束,可变借用结束,main
函数可以继续使用number
。