The Rust Programming Language, 2nd Edition

by Steve Klabnik; Carol Nichols

Programming

Book Details

Book Title

The Rust Programming Language, 2nd Edition

Author

Steve Klabnik; Carol Nichols

Publisher

No Starch Press

Publication Date

2023

ISBN

9781593278519

Number of Pages

760

Language

English

Format

PDF

File Size

3MB

Subject

programming-languages/rust

Table of Contents

  • Title Page
  • Copyright
  • About the Authors
  • Foreword
  • Preface
  • Acknowledgments
  • Introduction
  • Chapter 1: Getting Started
  • Installation
  • Hello, World!
  • Hello, Cargo!
  • Summary
  • Chapter 2: Programming a Guessing Game
  • Setting Up a New Project
  • Processing a Guess
  • Generating a Secret Number
  • Comparing the Guess to the Secret Number
  • Allowing Multiple Guesses with Looping
  • Summary
  • Chapter 3: Common Programming Concepts
  • Variables and Mutability
  • Data Types
  • Functions
  • Comments
  • Control Flow
  • Summary
  • Chapter 4: Understanding Ownership
  • What Is Ownership?
  • References and Borrowing
  • The Slice Type
  • Summary
  • Chapter 5: Using Structs to Structure Related Data
  • Defining and Instantiating Structs
  • An Example Program Using Structs
  • Method Syntax
  • Summary
  • Chapter 6: Enums and Pattern Matching
  • Defining an Enum
  • The match Control Flow Construct
  • Concise Control Flow with if let
  • Summary
  • Chapter 7: Managing Growing Projects with Packages, Crates, and Modules
  • Packages and Crates
  • Defining Modules to Control Scope and Privacy
  • Paths for Referring to an Item in the Module Tree
  • Bringing Paths into Scope with the use Keyword
  • Separating Modules into Different Files
  • Summary
  • Chapter 8: Common Collections
  • Storing Lists of Values with Vectors
  • Storing UTF-8 Encoded Text with Strings
  • Storing Keys with Associated Values in Hash Maps
  • Summary
  • Chapter 9: Error Handling
  • Unrecoverable Errors with panic!
  • Recoverable Errors with Result
  • To panic! or Not to panic!
  • Summary
  • Chapter 10: Generic Types, Traits, and Lifetimes
  • Removing Duplication by Extracting a Function
  • Generic Data Types
  • Traits: Defining Shared Behavior
  • Validating References with Lifetimes
  • Generic Type Parameters, Trait Bounds, and Lifetimes Together
  • Summary
  • Chapter 11: Writing Automated Tests
  • How to Write Tests
  • Controlling How Tests Are Run
  • Test Organization
  • Summary
  • Chapter 12: An I/O Project: Building a Command Line Program
  • Accepting Command Line Arguments
  • Reading a File
  • Refactoring to Improve Modularity and Error Handling
  • Developing the Library’s Functionality with Test-Driven Development
  • Working with Environment Variables
  • Writing Error Messages to Standard Error Instead of Standard Output
  • Summary
  • Chapter 13: Functional Language Features: Iterators and Closures
  • Closures: Anonymous Functions That Capture Their Environment
  • Processing a Series of Items with Iterators
  • Improving Our I/O Project
  • Comparing Performance: Loops vs. Iterators
  • Summary
  • Chapter 14: More About Cargo and Crates.io
  • Customizing Builds with Release Profiles
  • Publishing a Crate to Crates.io
  • Cargo Workspaces
  • Installing Binaries with cargo install
  • Extending Cargo with Custom Commands
  • Summary
  • Chapter 15: Smart Pointers
  • Using Box to Point to Data on the Heap
  • Treating Smart Pointers Like Regular References with Deref
  • Running Code on Cleanup with the Drop Trait
  • Rc, the Reference Counted Smart Pointer
  • RefCell and the Interior Mutability Pattern
  • Reference Cycles Can Leak Memory
  • Summary
  • Chapter 16: Fearless Concurrency
  • Using Threads to Run Code Simultaneously
  • Using Message Passing to Transfer Data Between Threads
  • Shared-State Concurrency
  • Extensible Concurrency with the Send and Sync Traits
  • Summary
  • Chapter 17: Object-Oriented Programming Features
  • Characteristics of Object-Oriented Languages
  • Using Trait Objects That Allow for Values of Different Types
  • Implementing an Object-Oriented Design Pattern
  • Summary
  • Chapter 18: Patterns and Matching
  • All the Places Patterns Can Be Used
  • Refutability: Whether a Pattern Might Fail to Match
  • Pattern Syntax
  • Summary
  • Chapter 19: Advanced Features
  • Unsafe Rust
  • Advanced Traits
  • Advanced Types
  • Advanced Functions and Closures
  • Macros
  • Summary
  • Chapter 20: Final Project: Building a Multithreaded Web Server
  • Building a Single-Threaded Web Server
  • Turning Our Single-Threaded Server into a Multithreaded Server
  • Graceful Shutdown and Cleanup
  • Summary
  • Appendix A: Keywords
  • Appendix B: Operators and Symbols
  • Appendix C: Derivable Traits
  • Appendix D: Useful Development Tools
  • Appendix E: Editions
  • Index