无法重新借用变量,因为我无法将不可变局部变量借用为可变

时间:2015-07-25 20:55:23

标签: rust borrow-checker

我是Rust的新手,并且在借阅检查器方面遇到了困难。

consume_byte拨打main即可。但是,如果我尝试在它们之间添加另一个函数(consume_two_bytes),它们就会崩溃。

以下代码无法编译,因为reader中的consume_two_bytes变量似乎不可变且无法借用。

在函数签名中添加&mut只会更改编译器错误。

use std::io::Read;
use std::net::TcpListener;

fn consume_byte<R>(reader: R) where R: Read {
    let mut buffer = vec![];
    reader.take(1).read_to_end(&mut buffer).unwrap();
}

fn consume_two_bytes<R>(reader: R) where R: Read {
    consume_byte(&mut reader);
    consume_byte(&mut reader);
}

fn main() {
    let listener = TcpListener::bind("127.0.0.1:8080").unwrap();
    let (mut stream, _) = listener.accept().unwrap();

    consume_byte(&mut stream);
    consume_byte(&mut stream);

    consume_two_bytes(&mut stream);
}

1 个答案:

答案 0 :(得分:7)

ng-click必须在reader中可变:

consume_two_bytes