diff --git a/embedded-io-adapters/src/std.rs b/embedded-io-adapters/src/std.rs index 90a2f852..98a65429 100644 --- a/embedded-io-adapters/src/std.rs +++ b/embedded-io-adapters/src/std.rs @@ -60,6 +60,18 @@ impl embedded_io::Write for FromStd { Err(e) => Err(e), } } + + fn write_all(&mut self, buf: &[u8]) -> Result<(), Self::Error> { + self.inner.write_all(buf) + } + + fn write_fmt( + &mut self, + fmt: core::fmt::Arguments<'_>, + ) -> Result<(), embedded_io::WriteFmtError> { + Ok(self.inner.write_fmt(fmt)?) + } + fn flush(&mut self) -> Result<(), Self::Error> { self.inner.flush() } @@ -69,6 +81,14 @@ impl embedded_io::Seek for FromStd { fn seek(&mut self, pos: embedded_io::SeekFrom) -> Result { self.inner.seek(pos.into()) } + + fn rewind(&mut self) -> Result<(), Self::Error> { + self.inner.rewind() + } + + fn stream_position(&mut self) -> Result { + self.inner.stream_position() + } } /// Adapter to `std::io` traits. @@ -115,6 +135,22 @@ impl std::io::Write for ToStd { Err(e) => Err(to_std_error(e)), } } + + fn write_all(&mut self, buf: &[u8]) -> Result<(), std::io::Error> { + self.inner.write_all(buf).map_err(to_std_error) + } + + fn write_fmt(&mut self, fmt: core::fmt::Arguments<'_>) -> Result<(), std::io::Error> { + match self.inner.write_fmt(fmt) { + Ok(()) => Ok(()), + Err(e @ embedded_io::WriteFmtError::FmtError) => Err(std::io::Error::new( + std::io::ErrorKind::Other, + format!("{e:?}"), + )), + Err(embedded_io::WriteFmtError::Other(e)) => Err(to_std_error(e)), + } + } + fn flush(&mut self) -> Result<(), std::io::Error> { self.inner.flush().map_err(to_std_error) } @@ -124,6 +160,14 @@ impl std::io::Seek for ToStd { fn seek(&mut self, pos: std::io::SeekFrom) -> Result { self.inner.seek(pos.into()).map_err(to_std_error) } + + fn rewind(&mut self) -> Result<(), std::io::Error> { + self.inner.rewind().map_err(to_std_error) + } + + fn stream_position(&mut self) -> Result { + self.inner.stream_position().map_err(to_std_error) + } } /// Convert a embedded-io error to a [`std::io::Error`]