Expand description
Traits, helpers, and type definitions for core I/O functionality.
The std::io module contains a number of common things you’ll need
when doing input and output. The most core part of this module is
the Read and Write traits, which provide the
most general interface for reading and writing input and output.
§Read and Write
Because they are traits, Read and Write are implemented by a number
of other types, and you can implement them for your types too. As such,
you’ll see a few different types of I/O throughout the documentation in
this module: Files, TcpStreams, and sometimes even Vec<T>s. For
example, Read adds a read method, which we can use on
Files:
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
let n = f.read(&mut buffer)?;
println!("The bytes: {:?}", &buffer[..n]);
Ok(())
}Read and Write are so important, implementors of the two traits have a
nickname: readers and writers. So you’ll sometimes see ‘a reader’ instead
of ‘a type that implements the Read trait’. Much easier!
§Seek and BufRead
Beyond that, there are two important traits that are provided: Seek
and BufRead. Both of these build on top of a rea