Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
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
← Prev
Back
Next →
← Prev
Back
Next →