gpt4 book ai didi

Rust:错误的借用顺序?

转载 作者:行者123 更新时间:2023-11-29 08:28:08 25 4
gpt4 key购买 nike

在对 Sudoku Solver in Rust 进行编程时我对一些与借用相关的代码有疑问。虽然这个问题很容易解决(有点冗长),但编译器不接受第一个代码对我来说似乎很奇怪。

很难解释问题是什么,所以我做了一个小例子

use io::stdio::println;

struct Dog;
impl Dog {
fn bark(&self, text: &str) {
println(text);
}

fn get_text(&mut self) -> ~str {
~"some text"
}
}

fn main() {
let mut dog = Dog;

// This causes an error
dog.bark(dog.get_text());

// But this is allowed
let text = dog.get_text();
dog.bark(text);
}

这是一个错误吗?如果不是,为什么借用检查器以这种方式强制编码?

最佳答案

是的,这是一个错误:#6268 .

借用检查器似乎不理解参数在原始方法被调用时已被完全评估,因此认为 get_text&mut self 是别名bark&self(并且具有别名 &mut 指针是非法的)。

关于Rust:错误的借用顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22297249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com