Skip to content

Commit 5d7519a

Browse files
committed
reorganize io.rs and add some comments
1 parent e7a9d15 commit 5d7519a

File tree

1 file changed

+39
-36
lines changed

1 file changed

+39
-36
lines changed

capnp/src/io.rs

Lines changed: 39 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ pub trait Write {
4242
fn write_all(&mut self, buf: &[u8]) -> Result<()>;
4343
}
4444

45+
/// Blanket impls for when `std` is enabled.
4546
#[cfg(feature = "std")]
4647
mod std_impls {
4748
use crate::io::{BufRead, Read, Write};
@@ -85,6 +86,44 @@ mod std_impls {
8586
}
8687
}
8788

89+
/// Blanket impls for when `embedded-io` is enabled and `std` is not.
90+
#[cfg(all(feature = "embedded-io", not(feature = "std")))]
91+
mod embedded_io_impls {
92+
use crate::io::{BufRead, Read, Write};
93+
use crate::Result;
94+
use embedded_io::Error;
95+
96+
impl<W: embedded_io::Write> Write for W {
97+
fn write_all(&mut self, buf: &[u8]) -> Result<()> {
98+
embedded_io::Write::write_all(self, buf).map_err(|e| match e {
99+
embedded_io::WriteAllError::WriteZero => {
100+
crate::Error::from_kind(crate::ErrorKind::Failed)
101+
}
102+
embedded_io::WriteAllError::Other(e) => crate::Error::from_kind(e.kind().into()),
103+
})?;
104+
Ok(())
105+
}
106+
}
107+
108+
impl<R: embedded_io::Read> Read for R {
109+
fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
110+
embedded_io::Read::read(self, buf).map_err(|e| crate::Error::from_kind(e.kind().into()))
111+
}
112+
}
113+
114+
impl<R: embedded_io::BufRead + embedded_io::Read> BufRead for R {
115+
fn fill_buf(&mut self) -> Result<&[u8]> {
116+
embedded_io::BufRead::fill_buf(self)
117+
.map_err(|e| crate::Error::from_kind(e.kind().into()))
118+
}
119+
120+
fn consume(&mut self, amt: usize) {
121+
embedded_io::BufRead::consume(self, amt)
122+
}
123+
}
124+
}
125+
126+
/// Fallback impls, for when neither `std` nor `embedded-io` is enabled.
88127
#[cfg(not(any(feature = "std", feature = "embedded-io")))]
89128
mod no_std_impls {
90129
use crate::io::{BufRead, Read, Write};
@@ -161,39 +200,3 @@ mod no_std_impls {
161200
}
162201
}
163202
}
164-
165-
#[cfg(all(feature = "embedded-io", not(feature = "std")))]
166-
mod no_std_impls {
167-
use crate::io::{BufRead, Read, Write};
168-
use crate::Result;
169-
use embedded_io::Error;
170-
171-
impl<W: embedded_io::Write> Write for W {
172-
fn write_all(&mut self, buf: &[u8]) -> Result<()> {
173-
embedded_io::Write::write_all(self, buf).map_err(|e| match e {
174-
embedded_io::WriteAllError::WriteZero => {
175-
crate::Error::from_kind(crate::ErrorKind::Failed)
176-
}
177-
embedded_io::WriteAllError::Other(e) => crate::Error::from_kind(e.kind().into()),
178-
})?;
179-
Ok(())
180-
}
181-
}
182-
183-
impl<R: embedded_io::Read> Read for R {
184-
fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
185-
embedded_io::Read::read(self, buf).map_err(|e| crate::Error::from_kind(e.kind().into()))
186-
}
187-
}
188-
189-
impl<R: embedded_io::BufRead + embedded_io::Read> BufRead for R {
190-
fn fill_buf(&mut self) -> Result<&[u8]> {
191-
embedded_io::BufRead::fill_buf(self)
192-
.map_err(|e| crate::Error::from_kind(e.kind().into()))
193-
}
194-
195-
fn consume(&mut self, amt: usize) {
196-
embedded_io::BufRead::consume(self, amt)
197-
}
198-
}
199-
}

0 commit comments

Comments
 (0)