小编Kno*_*kko的帖子

如何在Rust中使用对象作为其自身方法的参数?

我在Rust中为简单的结构编写了以下代码。这只是一个例子,没有太多真实的逻辑:

struct Vec2 {
    x: f32,
    y: f32,
}

impl Vec2 {
    fn multiply(&mut self, other: &Vec2) {
        self.x *= other.x;
        self.y *= other.y;
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以创建简单的向量,然后将向量与另一个向量相乘,但是当我尝试将向量与自身向量相乘时遇到了一个问题:编译器抱怨我不能借用该向量,因为它也被借为不可变的。

fn main() {
    let mut vec = Vec2 { x: 2.0, y: 2.3 };
    vec.multiply(&vec);
}
Run Code Online (Sandbox Code Playgroud)
struct Vec2 {
    x: f32,
    y: f32,
}

impl Vec2 {
    fn multiply(&mut self, other: &Vec2) {
        self.x *= other.x;
        self.y *= other.y;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是有道理的,但是将这样的向量与其自身相乘的正确方法是什么?更重要的是:对于一般情况,我需要使用自己的方法(使用与参数相同的结构)来修改结构。

methods mutability rust borrow-checker

2
推荐指数
1
解决办法
86
查看次数

标签 统计

borrow-checker ×1

methods ×1

mutability ×1

rust ×1