Title Page Copyright and Credits Rust Quick Start Guide About Packt Why subscribe? Packt.com Contributors About the author About the reviewers Packt is searching for authors like you Preface Who this book is for What this book covers To get the most out of this book Download the example code files Download the color images Conventions used Get in touch Reviews Getting Ready Installing Rust Starting a new project Project metadata Dependencies on libraries from crates.io Dependencies on Git repositories Dependencies on local libraries Automatically generated source files Compiling our project Debug and release builds Dynamic libraries, software distribution, and Rust Using crates.io Summary Basics of the Rust Language Functions Defining a function Modules Defining a module A module as a section of a file A module as a separate file Accessing module contents from outside Using the item's full name directly Using the item's short name Public and private module items Expressions Literal expressions Operator expressions Array and tuple expressions Block expressions Branch expressions Loop expressions while loops for loops Variables, types, and mutability Type inference Data structures Mutability of data structures More about functions Parameters Return types Error handling Using Result to signal success or failure Calling functions that return Result Implementing behavior for types Summary The Big Ideas – Ownership and Borrowing Scope and ownership The stack Transferring ownership Copying Lending Lending immutably Lending mutably Accessing borrowed data The lifetime of borrowed data Ownership and the self parameter Moving self Borrowing self Mutably borrowing self Summary Making Decisions by Pattern Matching Variable assignment with pattern matching Using if let expressions to test whether a pattern matches Using match to choose one of several patterns Using don't care in patterns Moving and borrowing in pattern matches Matching tuples and other more complex patterns Nested patterns Storing a matched value and comparing it to a pattern Ignoring most of a data structure Gotchas Not all values can be matched against a literal pattern Patterns assign values to variable names Summary One Data Type Representing Multiple Kinds of Data Enumerations Basic enumerations Parameterized enumerations Checking the value type and extracting parameter values Result is an enumeration, accessed via the prelude Traits and trait objects Traits Implementing our PrintableDirection trait Trait objects Using our PrintableDirection trait Trait objects only provide access to the trait interface Any Any can store almost anything But to access it we have to already know about the real data type Comparison of these techniques Summary Heap Memory and Smart Pointers Box Box and variable size Box and Any Vec and String String Vec Rc Weak references Cell and RefCell Cell What's the point? RefCell Arc Mutex and RwLock Summary Generic Types Types with generic type parameters Limiting what types can be used for type parameters Implementing functionality for types with generic type parameters Using generic types as function return values Compiler errors involving generic type parameters Generic types on functions outside of implementation blocks Alternative ways to write trait bounds Generic types versus trait objects Higher-order functions and trait bounds that represent functions Complete implementation of a binary tree with generic type parameters Summary Important Standard Traits Traits that can be derived Clone Copy Debug PartialEq Eq PartialOrd Ord Hash Default Traits that enable operators ​Add, Mul, Sub, and Div AddAssign, MulAssign, SubAssign, and DivAssign BitAnd BitAndAssign BitOr BitOrAssign BitXor BitXorAssign Deref DerefMut Drop Index IndexMut Neg Not Rem and RemAssign Shl and ShlAssign Shr and ShrAssign Traits that are implemented automatically Sync Send Sized Fn FnMut FnOnce Summary Other Books You May Enjoy Leave a review - let other readers know what you think