Resultをio::Resultに変換する
Read
トレイトやWrite
トレイトを実装するには、io::Result
を返す必要がある。これらの関数のなかでstd::result::Result
を扱うとき、これをio::Result
に変換したい。
fn write(&mut self, buf: &[u8]) -> io::Result {
let string = String::from_utf8(buf.to_vec());
.map_err(io::Error::from(io::ErrorKind::InvalidData))?;
// ...
}
-
io::Result
にするために、map_err
を使ってエラーの型をio::Error
に変換する。 -
io::Error
はio::ErrorKind
からfrom
関数で生成できる。 -
io::ErrorKind
はドキュメントにあるようにenumとして定義されている。このコードのような不正なデータを受け取った場合はInvalidData
で表せそう。