Topic | Description | Link |
---|---|---|
Look here first | Starts with quick to intermediate tutorials on the Rust language. | Getting Started |
Hello World | A quick taste of how C++, Rust, and C# are similar and different - the infamous HelloWorld program. | Hello Worlds |
Rust in a Nutshell | Brief discussion of Rust codes with simple examples. | Rust in a Nutshell |
into_rust() | Excellent introduction to Rust's ownership model with simple metaphors. | into_rust() |
Survey | This is an extensive github Readme.md file with table of contents and most of the ideas expressed in simple language with lots of details. |
easy-rust |
Syntax | This is is a github Gist that presents much of the Rust syntax without much drill-down. This is a good starting place, but you will find, as you learn Rust, that a lot is missing here. But starting out, that is probably a good thing. Almost all the missing details you can find in the previous easy-rust link. |
syntax guide |
Safety | Rust definitions, invariants, syntax checking rules, and types that make Rust code safe by construction. |
Rust Bites Safety |
Ownership | Discussion of the ownership rules with several small code examples. |
Rust Bites Ownership |
Rust Story | A narrative walk through of the Rust Language, provided by this site. |
Rust Story |
Rust Bite by Byte | A sequence of small bites from the Rust language with examples. |
Rust Bites |
Hello Objects | A quick taste of how C++, Rust, and C# create and use objects. | Hello Objects |
Tooling | The Rust environment comes with some great tools: cargo, clippy, doc. You will want to add Visual Studio Code. |
Tooling Cargo Book Visual Studio Code |
File System |
Rust has a well engineered facility for accessing files and directories. Some key types in std::fs are: DirEntry, File, OpenOptions, ReadDir, ... |
Rust story File System std::fs |
Error Handling |
Rust error handling is based on use of the enumeration:
|
RustStory Enums RustStory Error Handling Gentle Introduction to Rust std::Result |
Data Operations | Rust data operations copy, move, and clone. These operations combined with Rust's ownership rules (discussed next time) are the defining characteristics of the language. They are responsible for Rust's data safety and performance. |
Hello Data Data types, copy, and move Rust Story Data Trait Copy keyword move Trait Clone |
Strings |
Rust strings come in two flavors: |
Rust Story Strings std::String Primitive Type str |
struct | Rust structs serve the same role as classes do in C++ and C#. Struct methods are defined inside impl StructName {} blocks. |
Rust Story structs std::Stuct keyword impl |
Generics | Generics in Rust are very similar to those in C# and Java, and simpler than C++ templates. They are code generators often do little more than substitute a specific type for a generic parameter. Rust generics are often constrained with traits, as discussed above. |
Rust Story Generics Rust Bites Generics and Traits The Rust Book |
Rust env | Command line arguments for any Rust program are available through the std::env module. |
std::env Accepting CL args |