From 55b2d7b5248cb81e80e8c207ab03e6b4b52ce2f9 Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Tue, 24 Aug 2021 23:34:43 +0200 Subject: [PATCH] io: move std stuff to own module --- embassy/src/io/mod.rs | 4 ++++ embassy/src/io/std.rs | 35 +++++++++++++++++++++++++++++++++++ embassy/src/io/traits.rs | 37 ------------------------------------- 3 files changed, 39 insertions(+), 37 deletions(-) create mode 100644 embassy/src/io/std.rs diff --git a/embassy/src/io/mod.rs b/embassy/src/io/mod.rs index 8445f6e8..52b05097 100644 --- a/embassy/src/io/mod.rs +++ b/embassy/src/io/mod.rs @@ -1,7 +1,11 @@ mod error; +#[cfg(feature = "std")] +mod std; mod traits; mod util; pub use self::error::*; +#[cfg(feature = "std")] +pub use self::std::*; pub use self::traits::*; pub use self::util::*; diff --git a/embassy/src/io/std.rs b/embassy/src/io/std.rs new file mode 100644 index 00000000..ddec8d56 --- /dev/null +++ b/embassy/src/io/std.rs @@ -0,0 +1,35 @@ +use core::pin::Pin; +use core::task::{Context, Poll}; +use futures::io as std_io; + +use super::{AsyncBufRead, AsyncWrite, Result}; + +pub struct FromStdIo(T); + +impl FromStdIo { + pub fn new(inner: T) -> Self { + Self(inner) + } +} + +impl AsyncBufRead for FromStdIo { + fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let Self(inner) = unsafe { self.get_unchecked_mut() }; + unsafe { Pin::new_unchecked(inner) } + .poll_fill_buf(cx) + .map_err(|e| e.into()) + } + fn consume(self: Pin<&mut Self>, amt: usize) { + let Self(inner) = unsafe { self.get_unchecked_mut() }; + unsafe { Pin::new_unchecked(inner) }.consume(amt) + } +} + +impl AsyncWrite for FromStdIo { + fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll> { + let Self(inner) = unsafe { self.get_unchecked_mut() }; + unsafe { Pin::new_unchecked(inner) } + .poll_write(cx, buf) + .map_err(|e| e.into()) + } +} diff --git a/embassy/src/io/traits.rs b/embassy/src/io/traits.rs index b59cdc0d..8e4a981d 100644 --- a/embassy/src/io/traits.rs +++ b/embassy/src/io/traits.rs @@ -5,9 +5,6 @@ use core::task::{Context, Poll}; #[cfg(feature = "alloc")] use alloc::boxed::Box; -#[cfg(feature = "std")] -use futures::io as std_io; - use super::error::Result; /// Read bytes asynchronously. @@ -159,37 +156,3 @@ where self.get_mut().as_mut().poll_write(cx, buf) } } - -#[cfg(feature = "std")] -pub struct FromStdIo(T); - -#[cfg(feature = "std")] -impl FromStdIo { - pub fn new(inner: T) -> Self { - Self(inner) - } -} - -#[cfg(feature = "std")] -impl AsyncBufRead for FromStdIo { - fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - let Self(inner) = unsafe { self.get_unchecked_mut() }; - unsafe { Pin::new_unchecked(inner) } - .poll_fill_buf(cx) - .map_err(|e| e.into()) - } - fn consume(self: Pin<&mut Self>, amt: usize) { - let Self(inner) = unsafe { self.get_unchecked_mut() }; - unsafe { Pin::new_unchecked(inner) }.consume(amt) - } -} - -#[cfg(feature = "std")] -impl AsyncWrite for FromStdIo { - fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll> { - let Self(inner) = unsafe { self.get_unchecked_mut() }; - unsafe { Pin::new_unchecked(inner) } - .poll_write(cx, buf) - .map_err(|e| e.into()) - } -}