TP2951

Introduction to Rust Programming Training

This five day course is designed to equip a programmer with the necessary tools, knowledge and skills to develop client, server or embedded software solutions using the Rust programming language. This course covers the Rust language, explores std (standard) library as well as best practices.Perhaps, more importantly, this course prepares the participant to not just learn the mechanics behind Rust programming, but help develop the mentality and understand the design principles behind this mighty language.
Course Details

Duration

5 days
Course Outline
  • Hello, world!
    • Characteristics of Rust
    • Getting rustup
    • Cargo
    • “Hello, World” (finally)
    • Unit Tests
  • What you already know
    • Basic Syntax
    • A bit of convention
    • Comments
    • Variables and Constants
    • Operators
    • Control Statements
    • Functions
  • Basic Types
    • Numeric Types
    • Boolean Type
    • String Types
    • Unit Type
  • What you might not know
    • Ownership and Borrowing
    • Option
    • Result
    • Macros!
  • Compound Types
    • Defining enum
    • Arrays and Vec<T>
    • HashMap
    • Defining struct
  • Modules and CratesReviewing Cargo.toml
    • Creating Libraries
    • Using Library
    • Modules
  • Memory Management
    • Rust memory model
    • Allocating memory
    • Box<T> and Cow<T>
    • Rc<T> and Arc<T>
    • Cell<T> and RefCell<T>
    • unsafe code
  • Object Oriented Programming
    • Is Rust OO?
    • Implementing structs
    • Implementing traits
    • Creating traits
    • impl and dyn
  • Functional Programming
    • Closures
    • Iterators
    • Reviewing for in
    • My Functional Friends
  • Generics
    • Fancy a cup of <T>?
    • Generic functions
    • Generics in struct
    • Generics with traits
    • Using Self
  • Fearless Concurrency
    • Threads in Rust
    • move data between threads
    • Exchanging messages
    • Syncing threads
    • Promises
    • async and await
  • Rust and the Outside World
    • Foreign Function Interface (FFI)
    • nostd for embedded development
    • Using extern crate
    • Exploring Serde for serialization