- Introduction
- Licence
- Foreword
- Credits
- Notation used through this book
- Setting Up Rust
- C and C++ Background
- Rust Background
- Let's Start Simple
- Compiling and Linking in More Detail
- Source Layout and Other General Points
- Namespacing With Modules
- Porting Code
- Features of Rust compared with C++
- Types
- Strings
- Variables
- Literals
- Collections
- Structs
- Comments
- Lifetimes, References and Borrowing
- Expressions
- Conditions
- Switch / Match
- Casting
- Enumerations
- Loops
- Functions
- Polymorphism
- Error Handling
- Lambda Expressions / Closures
- Templates / Generics
- Attributes
- Multi-threading
- Lint
- Macros
- Memory Allocation
- Foreign Function Interface
- Porting from C/C++ to Rust
- Copy Constructor / Assignment Operators
- Missing Braces in Conditionals
- Assignment in Conditionals
- Class Member Initialisation
- Headers and Sources
- Forward Declarations
- Namespace Collisions
- Macros
- Type Mismatching
- Explicit / Implicit Class Constructors
- Poor Lifetime Enforcement
- Memory Allocation
- Null Pointers
- Virtual Destructors
- Exception Handling / Safety
- Templates vs Generics
- Multiple Inheritance
- Linker Errors
- Debugging Rust
- Memory Management
- Rust's std:: library
- Rust Cookbook