本文簡要介紹rust語言中 Trait std::io::BufRead
的用法。
用法
pub trait BufRead: Read {
fn fill_buf(&mut self) -> Result<&[u8]>;
fn consume(&mut self, amt: usize);
fn has_data_left(&mut self) -> Result<bool> { ... }
fn read_until(&mut self, byte: u8, buf: &mut Vec<u8>) -> Result<usize> { ... }
fn read_line(&mut self, buf: &mut String) -> Result<usize> { ... }
fn split(self, byte: u8) -> Split<Self>ⓘNotable traits for Split<B>impl<B: BufRead> Iterator for Split<B> type Item = Result<Vec<u8>>; where Self: Sized,
{ ... }
fn lines(self) -> Lines<Self>ⓘNotable traits for Lines<B>impl<B: BufRead> Iterator for Lines<B> type Item = Result<String>; where Self: Sized,
{ ... }
}
BufRead
是Read
er 的一種類型,它有一個內部緩衝區,允許它執行額外的讀取方式。
例如,在不使用緩衝區的情況下讀取 line-by-line 效率很低,因此如果要逐行讀取,則需要 BufRead
,其中包括 read_line
方法和 lines
迭代器。
例子
鎖定的標準輸入實現 BufRead
:
use std::io;
use std::io::prelude::*;
let stdin = io::stdin();
for line in stdin.lock().lines() {
println!("{}", line.unwrap());
}
如果你有一些實現std::io::Read, 你可以使用std::io::BufReader把它變成一個BufRead
.
例如, File
實現了 Read
,但沒有實現 BufRead
。 BufReader
來救援!
use std::io::{self, BufReader};
use std::io::prelude::*;
use std::fs::File;
fn main() -> io::Result<()> {
let f = File::open("foo.txt")?;
let f = BufReader::new(f);
for line in f.lines() {
println!("{}", line.unwrap());
}
Ok(())
}
相關用法
- Rust BufRead.split用法及代碼示例
- Rust BufReader.new用法及代碼示例
- Rust BufReader.get_mut用法及代碼示例
- Rust BufReader.with_capacity用法及代碼示例
- Rust BufRead.fill_buf用法及代碼示例
- Rust BufRead.has_data_left用法及代碼示例
- Rust BufRead.read_until用法及代碼示例
- Rust BufRead.read_line用法及代碼示例
- Rust BufReader.capacity用法及代碼示例
- Rust BufRead.lines用法及代碼示例
- Rust BufReader.buffer用法及代碼示例
- Rust BufReader用法及代碼示例
- Rust BufReader.get_ref用法及代碼示例
- Rust BufReader.into_inner用法及代碼示例
- Rust BufWriter.capacity用法及代碼示例
- Rust BufWriter.get_ref用法及代碼示例
- Rust BufWriter.get_mut用法及代碼示例
- Rust BufWriter.into_inner用法及代碼示例
- Rust BufWriter用法及代碼示例
- Rust BufWriter.with_capacity用法及代碼示例
- Rust BufWriter.new用法及代碼示例
- Rust BufWriter.into_parts用法及代碼示例
- Rust BufWriter.buffer用法及代碼示例
- Rust Builder.stack_size用法及代碼示例
- Rust BuildHasher.build_hasher用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Trait std::io::BufRead。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。