Struct std::io::ChanReader
pub struct ChanReader { // some fields omitted }
Allows reading from a rx.
Example
use std::io::ChanReader; let (tx, rx) = channel(); let mut reader = ChanReader::new(rx); let mut buf = ~[0u8, ..100]; match reader.read(buf) { Ok(nread) => println!("Read {} bytes", nread), Err(e) => println!("read error: {}", e), }
Methods
impl ChanReader
fn new(rx: Receiver<~[u8]>) -> ChanReader
Wraps a Port
in a ChanReader
structure
Trait Implementations
impl Reader for ChanReader
fn read(&mut self, buf: &mut [u8]) -> IoResult<uint>
Read bytes, up to the length of buf
and place them in buf
.
Returns the number of bytes read. The number of bytes read my
be less than the number requested, even 0. Returns Err
on EOF.
Error
If an error occurs during this I/O operation, then it is returned as
Err(IoError)
. Note that end-of-file is considered an error, and can be
inspected for in the error's kind
field. Also note that reading 0
bytes is not considered an error in all circumstances
fn read_byte(&mut self) -> IoResult<u8>
Reads a single byte. Returns Err
on EOF.
fn fill(&mut self, buf: &mut [u8]) -> IoResult<()>
Fills the provided slice with bytes from this reader
This will continue to call read
until the slice has been completely
filled with bytes.
Error
If an error occurs at any point, that error is returned, and no further bytes are read.
fn push_exact(&mut self, buf: &mut ~[u8], len: uint) -> IoResult<()>
Reads exactly len
bytes and appends them to a vector.
May push fewer than the requested number of bytes on error
or EOF. If Ok(())
is returned, then all of the requested bytes were
pushed on to the vector, otherwise the amount len
bytes couldn't be
read (an error was encountered), and the error is returned.
fn read_exact(&mut self, len: uint) -> IoResult<~[u8]>
Reads exactly len
bytes and gives you back a new vector of length
len
Error
Fails with the same conditions as read
. Additionally returns error
on EOF. Note that if an error is returned, then some number of bytes may
have already been consumed from the underlying reader, and they are lost
(not returned as part of the error). If this is unacceptable, then it is
recommended to use the push_exact
or read
methods.
fn read_to_end(&mut self) -> IoResult<~[u8]>
Reads all remaining bytes from the stream.
Error
Returns any non-EOF error immediately. Previously read bytes are discarded when an error is returned.
When EOF is encountered, all bytes read up to that point are returned.
fn read_to_str(&mut self) -> IoResult<~str>
Reads all of the remaining bytes of this stream, interpreting them as a UTF-8 encoded stream. The corresponding string is returned.
Error
This function returns all of the same errors as read_to_end
with an
additional error if the reader's contents are not a valid sequence of
UTF-8 bytes.
fn bytes<'r>(&'r mut self) -> Bytes<'r, Self>
Create an iterator that reads a single byte on each iteration, until EOF.
Error
Any error other than EndOfFile
that is produced by the underlying Reader
is returned by the iterator and should be handled by the caller.
fn read_le_uint_n(&mut self, nbytes: uint) -> IoResult<u64>
Reads n
little-endian unsigned integer bytes.
n
must be between 1 and 8, inclusive.
fn read_le_int_n(&mut self, nbytes: uint) -> IoResult<i64>
Reads n
little-endian signed integer bytes.
n
must be between 1 and 8, inclusive.
fn read_be_uint_n(&mut self, nbytes: uint) -> IoResult<u64>
Reads n
big-endian unsigned integer bytes.
n
must be between 1 and 8, inclusive.
fn read_be_int_n(&mut self, nbytes: uint) -> IoResult<i64>
Reads n
big-endian signed integer bytes.
n
must be between 1 and 8, inclusive.
fn read_le_uint(&mut self) -> IoResult<uint>
Reads a little-endian unsigned integer.
The number of bytes returned is system-dependant.
fn read_le_int(&mut self) -> IoResult<int>
Reads a little-endian integer.
The number of bytes returned is system-dependant.
fn read_be_uint(&mut self) -> IoResult<uint>
Reads a big-endian unsigned integer.
The number of bytes returned is system-dependant.
fn read_be_int(&mut self) -> IoResult<int>
Reads a big-endian integer.
The number of bytes returned is system-dependant.
fn read_be_u64(&mut self) -> IoResult<u64>
Reads a big-endian u64
.
u64
s are 8 bytes long.
fn read_be_u32(&mut self) -> IoResult<u32>
Reads a big-endian u32
.
u32
s are 4 bytes long.
fn read_be_u16(&mut self) -> IoResult<u16>
Reads a big-endian u16
.
u16
s are 2 bytes long.
fn read_be_i64(&mut self) -> IoResult<i64>
Reads a big-endian i64
.
i64
s are 8 bytes long.
fn read_be_i32(&mut self) -> IoResult<i32>
Reads a big-endian i32
.
i32
s are 4 bytes long.
fn read_be_i16(&mut self) -> IoResult<i16>
Reads a big-endian i16
.
i16
s are 2 bytes long.
fn read_be_f64(&mut self) -> IoResult<f64>
Reads a big-endian f64
.
f64
s are 8 byte, IEEE754 double-precision floating point numbers.
fn read_be_f32(&mut self) -> IoResult<f32>
Reads a big-endian f32
.
f32
s are 4 byte, IEEE754 single-precision floating point numbers.
fn read_le_u64(&mut self) -> IoResult<u64>
Reads a little-endian u64
.
u64
s are 8 bytes long.
fn read_le_u32(&mut self) -> IoResult<u32>
Reads a little-endian u32
.
u32
s are 4 bytes long.
fn read_le_u16(&mut self) -> IoResult<u16>
Reads a little-endian u16
.
u16
s are 2 bytes long.
fn read_le_i64(&mut self) -> IoResult<i64>
Reads a little-endian i64
.
i64
s are 8 bytes long.
fn read_le_i32(&mut self) -> IoResult<i32>
Reads a little-endian i32
.
i32
s are 4 bytes long.
fn read_le_i16(&mut self) -> IoResult<i16>
Reads a little-endian i16
.
i16
s are 2 bytes long.
fn read_le_f64(&mut self) -> IoResult<f64>
Reads a little-endian f64
.
f64
s are 8 byte, IEEE754 double-precision floating point numbers.
fn read_le_f32(&mut self) -> IoResult<f32>
Reads a little-endian f32
.
f32
s are 4 byte, IEEE754 single-precision floating point numbers.
fn read_u8(&mut self) -> IoResult<u8>
Read a u8.
u8
s are 1 byte.
fn read_i8(&mut self) -> IoResult<i8>
Read an i8.
i8
s are 1 byte.
fn by_ref<'a>(&'a mut self) -> RefReader<'a, Self>
Creates a wrapper around a mutable reference to the reader.
This is useful to allow applying adaptors while still retaining ownership of the original value.