pub struct BufReader<R> { /* private fields */ }
BufReader<R>
는 모든 reader에 buffering을 추가해준다. Read
instance와 함께 작동하기엔 너무 비효율적이다. 가령, TcpStream의 결과를 모두 read
한 경우에는 BufReader<R>
은 Read
의 결과로 in-memory buffer를 유지할 것이다. BufReader<R>
은 작은 입력이 반복될 때, 프로그램을 더 빠르게 해준다. 또한 Vec
와 같이 이미 메모리에 있는 것을 읽을 때는 advantage가 없다.
BufReader<R>
가 drop될 때, buffer의 내용은 버려진다.
default 크기인 8KB의 buffer capacity를 가진 BufReader<R>
를 생성한다. inner
에는 stfd::io::stdin.lock()
혹은 File::open("log.txt")
와 같이 어떻게 입력을 받을 것인지 입력해줘야 한다.
몇 byte가 읽혔는지를 반환하면서, 버퍼에 있는 source를 pull한다.
한 줄을 읽고, String
버퍼에 append한다.
내부적으로 buffered data의 reference를 반환한다. fill_buf
와 다르게 buffer가 비어 있어도 채우지 않는다.
buffer 내부에서 한 번에 저장할 수 있는 byte의 수를 반환한다.