1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
#[macro_export] macro_rules! impl_async_read_write { ($s:ident, $f:tt) => { impl ::rd_interface::AsyncRead for $s { fn poll_read( mut self: ::std::pin::Pin<&mut Self>, cx: &mut ::std::task::Context<'_>, buf: &mut ::rd_interface::ReadBuf, ) -> ::std::task::Poll<::std::io::Result<()>> { ::rd_interface::AsyncRead::poll_read(::std::pin::Pin::new(&mut self.$f), cx, buf) } } impl ::rd_interface::AsyncWrite for $s { fn poll_write( mut self: ::std::pin::Pin<&mut Self>, cx: &mut ::std::task::Context<'_>, buf: &[u8], ) -> ::std::task::Poll<::std::io::Result<usize>> { ::rd_interface::AsyncWrite::poll_write(::std::pin::Pin::new(&mut self.$f), cx, buf) } fn poll_flush( mut self: ::std::pin::Pin<&mut Self>, cx: &mut ::std::task::Context<'_>, ) -> ::std::task::Poll<::std::io::Result<()>> { ::rd_interface::AsyncWrite::poll_flush(::std::pin::Pin::new(&mut self.$f), cx) } fn poll_shutdown( mut self: ::std::pin::Pin<&mut Self>, cx: &mut ::std::task::Context<'_>, ) -> ::std::task::Poll<::std::io::Result<()>> { ::rd_interface::AsyncWrite::poll_shutdown(::std::pin::Pin::new(&mut self.$f), cx) } } }; }