我想在堆栈上创建一个可变 struct ,并从助手函数中对其进行变异.

#[derive(Debug)]
struct Game {
    score: u32,
}

fn addPoint(game: &mut Game) {
    game.score += 1;
}

fn main() {
    let mut game = Game { score: 0 };

    println!("Initial game: {:?}", game);

    // This works:
    game.score += 1;

    // This gives a compile error:
    addPoint(&game);

    println!("Final game:   {:?}", game);
}

try 编译此文件将提供:

error[E0308]: mismatched types
  --> src/main.rs:19:14
   |
19 |     addPoint(&game);
   |              ^^^^^ types differ in mutability
   |
   = note: expected type `&mut Game`
              found type `&Game`

我做错了什么?

推荐答案

引用也需要标记为可变:

addPoint(&mut game);

Rust相关问答推荐

如何定义使用拥有的字符串并返回拥有的Split的Rust函数?

捕获Rust因C++异常而产生panic

为什么函数不接受选项T参数的所有权?

在没有引用计数或互斥锁的情况下,可以从Rust回调函数内的封闭作用域访问变量吗?

通过解引用将值移出Box(以及它被脱糖到什么地方)?

有没有办法在Rust中配置常量变量的值?

我是否可以在Ruust中修改 struct 实例上的字符串,以使其在修改后具有相同的字符串生存期?

在铁 rust 中,如何一次只引用几件事中的一件?

根据填充系数以相对大小在给定空间中布局项目

如何在Rust中缩短数组

对reqwest提供的这种嵌套JSON struct 进行反序列化

`use` 和 `crate` 关键字在 Rust 项目中效果不佳

相当于 Rust 中 C++ 的 std::istringstream

如何保存指向持有引用数据的指针?

trait 对象指针的生命周期

有没有办法隐式绑定 let/match 操作的成员?

在给定 Rust 谓词的情况下,将 Some 转换为 None 的惯用方法是什么?

为什么这个闭包没有比 var 长寿?

通用类型,不同于输入类型,作为函数的返回值

如何从 many0 传播 Nom 失败上下文?