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
:
-
Values that implement
Read
have methods for byte-oriented input. Theyâre called readers. -
Values that implement
BufRead
are buffered readers. They support all the methods ofRead
, plus methods for reading lines of text and so forth. -
Values that implement
Write
support 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 explain how to use these traits and their methods, cover the reader and writer types shown in the figure, and show other ways to interact with files, the terminal, and the network.
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::TcpStream
s, for receiving data over the network -
std::io::stdin()
, for reading from the processâs standard ...
Get Programming Rust, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.