本文簡要介紹rust語言中 Trait std::io::Read
的用法。
用法
pub trait Read {
fn read(&mut self, buf: &mut [u8]) -> Result<usize>;
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize> { ... }
fn is_read_vectored(&self) -> bool { ... }
unsafe fn initializer(&self) -> Initializer { ... }
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize> { ... }
fn read_to_string(&mut self, buf: &mut String) -> Result<usize> { ... }
fn read_exact(&mut self, buf: &mut [u8]) -> Result<()> { ... }
fn by_ref(&mut self) -> &mut Self where Self: Sized,
{ ... }
fn bytes(self) -> Bytes<Self>ⓘNotable traits for Bytes<R>impl<R: Read> Iterator for Bytes<R> type Item = Result<u8>; where Self: Sized,
{ ... }
fn chain<R: Read>(self, next: R) -> Chain<Self, R>ⓘNotable traits for Chain<T, U>impl<T: Read, U: Read> Read for Chain<T, U> where Self: Sized,
{ ... }
fn take(self, limit: u64) -> Take<Self>ⓘNotable traits for Take<T>impl<T: Read> Read for Take<T> where Self: Sized,
{ ... }
}
Read
trait 允許從源讀取字節。
Read
特征的實現者稱為'readers'。
讀者由一種必需的方法定義, read()
。對 read()
的每次調用都將嘗試從該源中提取字節到提供的緩衝區中。在 read()
方麵實現了許多其他方法,為實現者提供了多種讀取字節的方法,而隻需要實現一個方法。
讀者旨在相互組合。 std::io
中的許多實現者采用並提供實現 Read
特征的類型。
請注意,對 read()
的每次調用都可能涉及係統調用,因此,使用實現了 BufRead
的東西,例如 BufReader
,效率會更高。
例子
File
實現 Read
:
use std::io;
use std::io::prelude::*;
use std::fs::File;
fn main() -> io::Result<()> {
let mut f = File::open("foo.txt")?;
let mut buffer = [0; 10];
// read up to 10 bytes
f.read(&mut buffer)?;
let mut buffer = Vec::new();
// read the whole file
f.read_to_end(&mut buffer)?;
// read into a String, so that you don't need to do the conversion.
let mut buffer = String::new();
f.read_to_string(&mut buffer)?;
// and more! See the other methods for more details.
Ok(())
}
use std::io::prelude::*;
fn main() -> io::Result<()> {
let mut b = "This string will be read".as_bytes();
let mut buffer = [0; 10];
// read up to 10 bytes
b.read(&mut buffer)?;
// etc... it works exactly as a File does!
Ok(())
}
相關用法
- Rust Read.read用法及代碼示例
- Rust Read.by_ref用法及代碼示例
- Rust Read.chain用法及代碼示例
- Rust Read.read_to_string用法及代碼示例
- Rust Read.read_to_end用法及代碼示例
- Rust Read.bytes用法及代碼示例
- Rust Read.take用法及代碼示例
- Rust Read.read_exact用法及代碼示例
- Rust Result.unwrap_or_else用法及代碼示例
- Rust RefCell.try_borrow_unguarded用法及代碼示例
- Rust Ref.map用法及代碼示例
- Rust RefMut.leak用法及代碼示例
- Rust Ref.filter_map用法及代碼示例
- Rust RefCell.replace_with用法及代碼示例
- Rust Receiver.recv用法及代碼示例
- Rust Result.as_deref_mut用法及代碼示例
- Rust Result.unwrap_or_default用法及代碼示例
- Rust Result.as_mut用法及代碼示例
- Rust Result.map_or用法及代碼示例
- Rust Result.err用法及代碼示例
- Rust Receiver.recv_timeout用法及代碼示例
- Rust Receiver.try_recv用法及代碼示例
- Rust Result用法及代碼示例
- Rust Result.is_err用法及代碼示例
- Rust Result.into_ok用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Trait std::io::Read。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。