- let ret = self.file.read(buf);
- if ret.is_err() { return Err(ByteIOError::ReadError); }
- let sz = ret.unwrap();
- if sz < buf.len() { self.eof = true; return Err(ByteIOError::EOF); }
- Ok(sz)
+ match self.file.read_exact(buf) {
+ Ok(()) => Ok(buf.len()),
+ Err(err) => {
+ if err.kind() == std::io::ErrorKind::UnexpectedEof {
+ self.eof = true;
+ Err(ByteIOError::EOF)
+ } else {
+ Err(ByteIOError::ReadError)
+ }
+ },
+ }