pub struct Concat<I>{ /* private fields */ }
Implementations§
Source§impl<I> Concat<I>
impl<I> Concat<I>
Sourcepub fn current(&self) -> Option<&<I as Iterator>::Item>
pub fn current(&self) -> Option<&<I as Iterator>::Item>
Returns a reference to the item last read, or None if the iterator has been exhausted.
This is useful for error handling and reporting: if a read operation fails, the reference returned will point to the item which caused the the error.
Examples found in repository?
examples/cat.rs (line 19)
11fn main() {
12 let mut args = args_os();
13 let progname = args.next().unwrap_or_else(|| OsString::from("cat"));
14
15 let mut c = concat(args.map(InputSource::from));
16 let res = copy(&mut c, &mut stdout());
17
18 if let Err(e) = res {
19 match c.current() {
20 None => {
21 println!("{}: {}\n",
22 AsRef::<Path>::as_ref(&progname).display(),
23 e);
24 },
25
26 Some(ref f) => {
27 println!("{}: {}: {}\n",
28 AsRef::<Path>::as_ref(&progname).display(),
29 f.path().display(),
30 e);
31 },
32 };
33
34 exit(1);
35 }
36}
Trait Implementations§
Source§impl<I> Read for Concat<I>
impl<I> Read for Concat<I>
Source§fn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Pull some bytes from this source into the specified buffer, returning
how many bytes were read. Read more
1.36.0 · Source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
Like
read
, except that it reads into a slice of buffers. Read moreSource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector
)1.0.0 · Source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
Reads all bytes until EOF in this source, placing them into
buf
. Read more1.0.0 · Source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
Reads all bytes until EOF in this source, appending them to
buf
. Read more1.6.0 · Source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
Reads the exact number of bytes required to fill
buf
. Read moreSource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf
)Pull some bytes from this source into the specified buffer. Read more
Source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf
)Reads the exact number of bytes required to fill
cursor
. Read more1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Creates a “by reference” adaptor for this instance of
Read
. Read moreAuto Trait Implementations§
impl<I> Freeze for Concat<I>
impl<I> RefUnwindSafe for Concat<I>
impl<I> Send for Concat<I>
impl<I> Sync for Concat<I>
impl<I> Unpin for Concat<I>
impl<I> UnwindSafe for Concat<I>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more