本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。