[][src]Struct encodingbufreader::BufReaderEncoding

pub struct BufReaderEncoding<R> { /* fields omitted */ }

Modificate std::io::BufReader

Methods

impl<R: Read> BufReaderEncoding<R>[src]

Important traits for BufReaderEncoding<R>
pub fn new(inner: R, encoder: EncodingRef) -> BufReaderEncoding<R>[src]

Important traits for BufReaderEncoding<R>
pub fn with_capacity(
    cap: usize,
    inner: R,
    encoder: EncodingRef
) -> BufReaderEncoding<R>
[src]

Important traits for Lines<R>
pub fn lines(self) -> Lines<R>[src]

Returns an iterator over the lines of this reader.

The iterator returned from this function will yield instances of io::Result<String>. Each string returned will not have a newline byte (the 0xA byte) or CRLF (0xD, 0xA bytes) at the end.

Examples

std::io::Cursor is a type that implements BufRead. In this example, we use Cursor to iterate over all the lines in a byte slice.

use encodingbufreader::{BufReaderEncoding};
use encoding::all::UTF_8;
let bytes = "This string\nwill be read".as_bytes();

let mut lines_iter = BufReaderEncoding::new(bytes,UTF_8).map(|l| l.unwrap());
assert_eq!(lines_iter.next(), Some(String::from("This string")));
assert_eq!(lines_iter.next(), Some(String::from("will be read")));
assert_eq!(lines_iter.next(), None);

Errors

Each line of the iterator has the same error semantics as BufRead::read_line.

pub fn read_line(&mut self, buf: &mut String) -> Result<usize>[src]

Read all bytes until a newline (the 0xA byte) is reached, and append them to the provided buffer.

This function will read bytes from the underlying stream until the newline delimiter (the 0xA byte) or EOF is found. Once found, all bytes up to, and including, the delimiter (if found) will be appended to buf.

If successful, this function will return the total number of bytes read.

If this function returns Ok(0), the stream has reached EOF.

Errors

This function has the same error semantics as [std::io::Read::read_until] and will also return an error if the read bytes are not valid encoding. If an I/O error is encountered then buf may contain some bytes already read in the event that all data read so far was valid encoding.

Examples

use encodingbufreader::{BufReaderEncoding};
use encoding::all::GB18030;
let bytes: &[u8] = &[
            213, 226, 202, 199, 210, 187, 184, 246, 215, 214, 183, 251, 180, 174, 10, 189, 171,
            187, 225, 177, 187, 182, 193, 200, 161,
        ];
let mut bufreader = BufReaderEncoding::new(bytes, GB18030);
let mut buf = String::new();
let num_bytes = bufreader
    .read_line(&mut buf)
    .expect("reading from bytes won't fail");
assert_eq!(num_bytes, 15);
assert_eq!(buf, "这是一个字符串\n");

pub fn set_encoder(&mut self, encoder: EncodingRef)[src]

Trait Implementations

impl<R> Debug for BufReaderEncoding<R> where
    R: Debug
[src]

impl<R: Read> Read for BufReaderEncoding<R>[src]

fn read_vectored(&mut self, bufs: &mut [IoSliceMut]) -> Result<usize, Error>1.36.0[src]

Like read, except that it reads into a slice of buffers. Read more

unsafe fn initializer(&self) -> Initializer[src]

🔬 This is a nightly-only experimental API. (read_initializer)

Determines if this Reader can work with buffers of uninitialized memory. Read more

fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>1.0.0[src]

Read all bytes until EOF in this source, placing them into buf. Read more

fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>1.0.0[src]

Read all bytes until EOF in this source, appending them to buf. Read more

fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>1.6.0[src]

Read the exact number of bytes required to fill buf. Read more

fn by_ref(&mut self) -> &mut Self1.0.0[src]

Creates a "by reference" adaptor for this instance of Read. Read more

fn bytes(self) -> Bytes<Self>1.0.0[src]

Transforms this Read instance to an [Iterator] over its bytes. Read more

fn chain<R>(self, next: R) -> Chain<Self, R> where
    R: Read
1.0.0[src]

Creates an adaptor which will chain this stream with another. Read more

fn take(self, limit: u64) -> Take<Self>1.0.0[src]

Creates an adaptor which will read at most limit bytes from it. Read more

impl<R: Read> BufRead for BufReaderEncoding<R>[src]

fn read_until(&mut self, byte: u8, buf: &mut Vec<u8>) -> Result<usize, Error>1.0.0[src]

Read all bytes into buf until the delimiter byte or EOF is reached. Read more

fn read_line(&mut self, buf: &mut String) -> Result<usize, Error>1.0.0[src]

Read all bytes until a newline (the 0xA byte) is reached, and append them to the provided buffer. Read more

fn split(self, byte: u8) -> Split<Self>1.0.0[src]

Returns an iterator over the contents of this reader split on the byte byte. Read more

fn lines(self) -> Lines<Self>1.0.0[src]

Returns an iterator over the lines of this reader. Read more

Auto Trait Implementations

impl<R> Sync for BufReaderEncoding<R> where
    R: Sync

impl<R> Send for BufReaderEncoding<R> where
    R: Send

impl<R> Unpin for BufReaderEncoding<R> where
    R: Unpin

impl<R> !RefUnwindSafe for BufReaderEncoding<R>

impl<R> !UnwindSafe for BufReaderEncoding<R>

Blanket Implementations

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]