6

私はRustが初めてで、借用チェッカーに問題があります。

consume_byteからの呼び出しはmain問題なく機能します。しかし、間に別の関数 ( consume_two_bytes) を追加しようとすると、すべてがバラバラになります。

reader次のコードは、変数 in が可変でconsume_two_bytesはなく、借用できないように見えるため、コンパイルされません。

関数シグネチャにa を追加する&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);
}
4

1 に答える 1