Skip to content

Commit ec1432e

Browse files
committed
impl BufRead and Seek for ByteOrdered
- add delegating impls if the inner src/dest also implements them
1 parent ccad53d commit ec1432e

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

src/wrap.rs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use byteorder::{
44
BigEndian, LittleEndian, NativeEndian, NetworkEndian, ReadBytesExt, WriteBytesExt,
55
};
66
use std::fmt::Arguments;
7-
use std::io::{Read, Result as IoResult, Write};
7+
use std::io::{BufRead, Read, Result as IoResult, Seek, SeekFrom, Write};
88
use {Endian, Endianness, StaticEndianness};
99

1010
/// Wrapper type for a reader or writer with an assumed byte order.
@@ -536,6 +536,36 @@ where
536536
}
537537
}
538538

539+
impl<T, E> BufRead for ByteOrdered<T, E>
540+
where
541+
T: BufRead,
542+
{
543+
fn fill_buf(&mut self) -> IoResult<&[u8]> {
544+
self.inner.fill_buf()
545+
}
546+
547+
fn consume(&mut self, amt: usize) {
548+
self.inner.consume(amt)
549+
}
550+
551+
fn read_until(&mut self, byte: u8, buf: &mut Vec<u8>) -> IoResult<usize> {
552+
self.inner.read_until(byte, buf)
553+
}
554+
555+
fn read_line(&mut self, buf: &mut String) -> IoResult<usize> {
556+
self.inner.read_line(buf)
557+
}
558+
}
559+
560+
impl<T, E> Seek for ByteOrdered<T, E>
561+
where
562+
T: Seek,
563+
{
564+
fn seek(&mut self, pos: SeekFrom) -> IoResult<u64> {
565+
self.inner.seek(pos)
566+
}
567+
}
568+
539569
#[cfg(test)]
540570
mod tests {
541571
// TODO test moar

0 commit comments

Comments
 (0)