-2
私はソケット経由で別のプログラムから来たBERTデータのデシリアライザを実装しようとしています。次のコードの場合:私は渡されたデータから文字列を読み込むしようとしているとき構造体の借用されていないコンテンツから移動しないようにしました
use std::io::{self, Read};
#[derive(Clone, Copy)]
pub struct Deserializer<R: Read> {
reader: R,
header: Option<u8>,
}
impl<R: Read> Read for Deserializer<R> {
#[inline]
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
self.reader.read(buf)
}
}
impl<R: Read> Deserializer<R> {
/// Creates the BERT parser from an `std::io::Read`.
#[inline]
pub fn new(reader: R) -> Deserializer<R> {
Deserializer {
reader: reader,
header: None,
}
}
#[inline]
pub fn read_string(&mut self, len: usize) -> io::Result<String> {
let mut string_buffer = String::with_capacity(len);
self.reader.take(len as u64).read_to_string(&mut string_buffer);
Ok(string_buffer)
}
}
錆コンパイラはエラーを生成します。
私も私のDeserializer<R>
構造体の場合は、この問題を解決するにはどうすればよい
error: cannot move out of borrowed content [E0507]
self.reader.take(len as u64).read_to_string(&mut string_buffer);
^~~~
help: run `rustc --explain E0507` to see a detailed explanation
Clone/Copy
個の形質がありますか?
おそらく、この質問が[** 74 ** **同じエラーメッセージに関する他の質問とはどのように違うのですか?](http:///stackoverflow.com/search?q=%5Brust%5D+cannot+move+out+of+borrowed+content+is%3Aq)?あなたは、質問をするときに[大量の努力をする](http://meta.stackoverflow.com/q/261592/155423)が期待されます。 – Shepmaster
[借用したコンテンツ\ [E0507 \]]から移動できません(http://stackoverflow.com/questions/37797035/cannot-move-out-of-borrowed-content-e0507) – polka
可能な[借りたコンテンツから移動する](http://stackoverflow.com/questions/28158738/cannot-move-out-of-borrowed-content) –