Skip to main content

Rust ref 和 & 使用详解

1. ref和&都是用来定义指针

先看下面的代码:

fn main() {
let i = 1;
let l = &i;
let ref j = i;
println!("{} {}", l, j)
}

结果都一样,都是在声明指针。区别在哪?&在右边,而ref在左边。验证修改值是否可以:

fn main() {
let mut i = 1;
let l = &mut i;
*l = 10;
println!("{}", l);

let ref mut j = i;
*j = 20;
println!("{}" j)
}

2. ref

ref 关键字

  • ref 关键字通常用于模式匹配中,用于创建引用绑定。
  • 它允许您在模式匹配中创建引用,而不会转移所有权。
  • 一般用于让模式匹配不消耗值,例如在 match 表达式中捕获引用。

示例:

fn main() {
let value = 42;
let reference = &value;

match reference {
&ref x => println!("Got a reference to {}", x),
_ => println!("No reference found"),
}
}

ref 通常用于模式匹配中,用于创建引用绑定,以便在模式匹配中访问引用,而不转移所有权。

3. &

& 符号

  • & 符号用于创建引用,它是 Rust 中用于借用值的常见方式。
  • 它可以用在变量前来创建不可变引用(借用)。

示例:

fn main() {
let value = 42;

// 创建不可变引用
let reference = &value;

// 通过引用访问值
println!("Got a reference to {}", *reference);
}

& 用于创建引用,以便在代码中借用值,允许读取但不修改被引用的值。

4. 总结

ref 关键字

  • ref 关键字通常用于模式匹配中,用于创建引用绑定。
  • 它允许您在模式匹配中创建引用,而不会转移所有权。
  • 一般用于让模式匹配不消耗值,例如在 match 表达式中捕获引用。

& 符号

  • & 符号用于创建引用,它是 Rust 中用于借用值的常见方式。
  • 它可以用在变量前来创建不可变引用(借用)。