Chapter 18. Input and Output
Doolittle: What concrete evidence do you have that you exist?
Bomb #20: Hmmmm...well...I think, therefore I am.
Doolittle: That’s good. That’s very good. But how do you know that anything else exists?
Bomb #20: My sensory apparatus reveals it to me.
Dark Star
Rust’s standard library features for input and output are organized around three traits—Read, BufRead, and Write—and the various types that implement them:
Values that implement
Readhave methods for byte-oriented input. They’re called readers.Values that implement
BufReadare buffered readers. They support all the methods ofRead, plus methods for reading lines of text and so forth.Values that implement
Writesupport both byte-oriented and UTF-8 text output. They’re called writers.
Figure 18-1 shows these three traits and some examples of reader and writer types.
In this chapter, we’ll show how to use these traits and their methods, the various types that implement them, and other ways to interact with files, the terminal, and the network.
Figure 18-1. Selected reader and writer types from the Rust standard library
Readers and Writers
Readers are values that your program can read bytes from. Examples include:
Files opened using
std::fs::File::open(filename)std::net::TcpStreams, for receiving data over the networkstd::io::stdin(), for reading from the process’s standard ...