私は構造体を持っています:
pub struct Paradise {
cstream: TcpStream,
}
メソッドで:
pub fn write_message(&mut self, code: i32, message: &str) {
let foo = format!("{} {}\r\n", code, message);
let _ = self.cstream.write(foo.as_bytes());
}
それはうまくいきます。これは FTP サーバーなので、新しいサーバーを取得するときは次のようTcpStream
にTcpListener::bind
します。
let mut p = Paradise::new(stream);
p.start();
そして、そのstart
メソッド内で私は呼び出します:
self.write_message(220, "Welcome to Paradise");
案の定、FTP クライアントにそのメッセージが表示されます。ここまでは順調ですね。
しかし、私は次のことを行います。
let mut br = BufReader::new(&self.cstream);
loop {
let mut buffer = String::new();
let _ = br.read_line(&mut buffer);
println!("{:?}", buffer);
self.write_message(550, "Testing");
}
write_message
そして、ループ内の次の呼び出しに到達すると:
*self
も不変として借用されるため、可変として借用できませんself.cstream
[E0502]
完全なコード:
ループ内で呼び出すことができるように、どうすれば変更できますか?write_message