mirror of
https://github.com/rust-embedded/embedded-hal.git
synced 2026-03-13 17:37:41 +00:00
Merge pull request #700 from Conaclos/std-io-adaptaer-read-exact-fix
io-adapter: Forward `Read::read_exact` in the std adapters
This commit is contained in:
commit
e833acdfd8
@ -40,6 +40,19 @@ impl<T: std::io::Read + ?Sized> embedded_io::Read for FromStd<T> {
|
||||
fn read(&mut self, buf: &mut [u8]) -> Result<usize, Self::Error> {
|
||||
self.inner.read(buf)
|
||||
}
|
||||
|
||||
fn read_exact(
|
||||
&mut self,
|
||||
buf: &mut [u8],
|
||||
) -> Result<(), embedded_io::ReadExactError<Self::Error>> {
|
||||
match self.inner.read_exact(buf) {
|
||||
Ok(()) => Ok(()),
|
||||
Err(error) if error.kind() == std::io::ErrorKind::UnexpectedEof => {
|
||||
Err(embedded_io::ReadExactError::UnexpectedEof)
|
||||
}
|
||||
Err(error) => Err(error.into()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: std::io::BufRead + ?Sized> embedded_io::BufRead for FromStd<T> {
|
||||
@ -125,6 +138,17 @@ impl<T: embedded_io::Read + ?Sized> std::io::Read for ToStd<T> {
|
||||
fn read(&mut self, buf: &mut [u8]) -> Result<usize, std::io::Error> {
|
||||
self.inner.read(buf).map_err(to_std_error)
|
||||
}
|
||||
|
||||
fn read_exact(&mut self, buf: &mut [u8]) -> std::io::Result<()> {
|
||||
match self.inner.read_exact(buf) {
|
||||
Ok(()) => Ok(()),
|
||||
Err(e @ embedded_io::ReadExactError::UnexpectedEof) => Err(std::io::Error::new(
|
||||
std::io::ErrorKind::UnexpectedEof,
|
||||
format!("{e:?}"),
|
||||
)),
|
||||
Err(embedded_io::ReadExactError::Other(e)) => Err(to_std_error(e)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: embedded_io::Write + ?Sized> std::io::Write for ToStd<T> {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user