For several consecutive years, Rust has been voted "most loved programming language" in Stack Overflow's annual developer survey. This open source systems programming language is now used for everything from game engines and operating systems to browser components and virtual reality simulation engines. But Rust is also an incredibly complex language with a notoriously difficult learning curve.
Rather than focus on the language as a whole, this guide teaches Rust using a single small, complete, focused program in each chapter. Author Ken Youens-Clark shows you how to start, write, and test each of these programs to create a finished product. You'll learn how to handle errors in Rust, read and write files, and use regular expressions, Rust types, structs, and more.
Discover how to:
- Use Rust's standard libraries and data types such as strings, vectors, dictionaries, and sets to create systems programs
- Write and test Rust programs and functions
- Read and write files, including stdin, stdout, and stderr
- Document and validate command-line arguments
- Write programs that fail gracefully
- Parse raw and delimited text
- Use and control randomness
This book is a great way to practice writing Rust in real-world scenarios. Ken has laid out a path to build your skills in testing, using crates, and solving common problems. -- Carol Nichols, Cofounder, Integer 32, co-author of The Rust Programming Language (NoStarch, 2018)
Many people who start tinkering with Rust struggle to know how to apply it to their day-to-day work. Command Line Rust is an excellent remedy to this. It shows you how to build utilities that can demonstrate to you and your colleagues that Rust is worth learning. -- Tim McNamara, author of Rust In Action (Manning, 2021)
Author(s): Ken Youens-Clark
Edition: 1
Publisher: O'Reilly Media
Year: 2022
Language: English
Pages: 396
Cover
Copyright
Table of Contents
Preface
What Is Rust (and Why Is Everybody Talkin’ About It)?
Who Should Read This Book
Why You Should Learn Rust
The Coding Challenges
Getting Rust and the Code
Conventions Used in This Book
Using Code Examples
O’Reilly Online Learning
How to Contact Us
Acknowledgments
Chapter 1. Truth or Consequences
Getting Started with “Hello, world!”
Organizing a Rust Project Directory
Creating and Running a Project with Cargo
Writing and Running Integration Tests
Adding a Project Dependency
Understanding Program Exit Values
Testing the Program Output
Exit Values Make Programs Composable
Summary
Chapter 2. Test for Echo
How echo Works
Getting Started
Accessing the Command-Line Arguments
Adding clap as a Dependency
Parsing Command-Line Arguments Using clap
Creating the Program Output
Writing Integration Tests
Creating the Test Output Files
Comparing Program Output
Using the Result Type
Summary
Chapter 3. On the Catwalk
How cat Works
Getting Started
Starting with Tests
Creating a Library Crate
Defining the Parameters
Iterating Through the File Arguments
Opening a File or STDIN
Using the Test Suite
Solution
Reading the Lines in a File
Printing Line Numbers
Going Further
Summary
Chapter 4. Head Aches
How head Works
Getting Started
Writing a Unit Test to Parse a String into a Number
Converting Strings into Errors
Defining the Arguments
Processing the Input Files
Reading Bytes Versus Characters
Solution
Reading a File Line by Line
Preserving Line Endings While Reading a File
Reading Bytes from a File
Printing the File Separators
Going Further
Summary
Chapter 5. Word to Your Mother
How wc Works
Getting Started
Iterating the Files
Writing and Testing a Function to Count File Elements
Solution
Counting the Elements of a File or STDIN
Formatting the Output
Going Further
Summary
Chapter 6. Den of Uniquity
How uniq Works
Getting Started
Defining the Arguments
Testing the Program
Processing the Input Files
Solution
Going Further
Summary
Chapter 7. Finders Keepers
How find Works
Getting Started
Defining the Arguments
Validating the Arguments
Finding All the Things
Solution
Conditionally Testing on Unix Versus Windows
Going Further
Summary
Chapter 8. Shave and a Haircut
How cut Works
Getting Started
Defining the Arguments
Parsing the Position List
Extracting Characters or Bytes
Parsing Delimited Text Files
Solution
Selecting Characters from a String
Selecting Bytes from a String
Selecting Fields from a csv::StringRecord
Final Boss
Going Further
Summary
Chapter 9. Jack the Grepper
How grep Works
Getting Started
Defining the Arguments
Finding the Files to Search
Finding the Matching Lines of Input
Solution
Going Further
Summary
Chapter 10. Boston Commons
How comm Works
Getting Started
Defining the Arguments
Validating and Opening the Input Files
Processing the Files
Solution
Going Further
Summary
Chapter 11. Tailor Swyfte
How tail Works
Getting Started
Defining the Arguments
Parsing Positive and Negative Numeric Arguments
Using a Regular Expression to Match an Integer with an Optional Sign
Parsing and Validating the Command-Line Arguments
Processing the Files
Counting the Total Lines and Bytes in a File
Finding the Starting Line to Print
Finding the Starting Byte to Print
Testing the Program with Large Input Files
Solution
Counting All the Lines and Bytes in a File
Finding the Start Index
Printing the Lines
Printing the Bytes
Benchmarking the Solution
Going Further
Summary
Chapter 12. Fortunate Son
How fortune Works
Getting Started
Defining the Arguments
Finding the Input Sources
Reading the Fortune Files
Randomly Selecting a Fortune
Printing Records Matching a Pattern
Solution
Going Further
Summary
Chapter 13. Rascalry
How cal Works
Getting Started
Defining and Validating the Arguments
Writing the Program
Solution
Going Further
Summary
Chapter 14. Elless Island
How ls Works
Getting Started
Defining the Arguments
Finding the Files
Formatting the Long Listing
Displaying Octal Permissions
Testing the Long Format
Solution
Notes from the Testing Underground
Going Further
Summary
Epilogue
Index
About the Author
Colophon