1. 不可变引用(Immutable References):
使用 & 符号创建不可变引用,允许读取值但不能修改它。不可变引用可以有多个,同时存在。
fn main() {
let s1 = String::from("Hello");
// 创建不可变引用
let len = calculate_length(&s1);
// 通过不可变引用读取值
println!("Length of '{}' is {}.", s1, len);
}
fn calculate_length(s: &String) -> usize {
s.len()
}
2. 可变引用(Mutable References):
使用 &mut 符号创建可变引用,允许读取和修改值。但是,在特定作用域内,只能有一个可变引用,以避免数据竞争。
fn main() {
let mut s2 = String::from("Rust");
// 创建可变引用
modify_string(&mut s2);
// 通过可变引用修改值
println!("Modified string: {}", s2);
}
fn modify_string(s: &mut String) {
s.push_str(" is awesome!");
}
注意,可变引用 &mut 必须在变量和函数之间共享,并且在特定作用域内只能有一个。
引用和借用的概念使得在不转移所有权的情况下安全地访问和修改数据成为可能。这有助于防止数据竞争和其他常见的并发问题。 Rust 的所有权系统与引用和借用的结合为编写安全且高效的并发代码提供了有力的工具。
转载请注明出处:http://www.pingtaimeng.com/article/detail/6791/Rust