Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 生锈:借错了吗?_Rust - Fatal编程技术网

Rust 生锈:借错了吗?

Rust 生锈:借错了吗?,rust,Rust,在编程a时,我遇到了一些与借用相关的代码问题。虽然这个问题很容易解决(有点冗长),但对于我来说,编译器不接受第一个代码似乎很奇怪 很难解释问题是什么,所以我举了一个小例子 use io::stdio::println; struct Dog; impl Dog { fn bark(&self, text: &str) { println(text); } fn get_text(&mut self) -> ~str {

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

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

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);
}
这是虫子吗?如果没有,为什么借阅检查器会以这种方式执行编码?

是的,这是一个错误:

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