Overview
Rust is a systems programming language focused on safety, memory, speed and parallelism.
Course Outline
# Day 1
– Introduction
– Installation
– rustup
– cargo, rustc
– crates.io
– create a first project
– creating a library or executable
– Cargo.toml
– Cargo.lock
– exploring the source
– cargo tools
– hello world program
– Basic syntax
– functions
– variables
– types
– structs and enums
– control flow: if, loops, pattern matching
– exercise: the guessing game
– Ownership
– moves
– mutability
– borrowing
– lifetimes
– exercise: fixing borrow checker compilation errors
– Modules
– importing code
– visibility
– source code organisation
– Traits and generics
– methods
– generic types, functions and methods
– type aliases
– Standard library
– Option
– Result
– collections: Vec, HashMap
– iterators
– exercise: start building a small in memory database
# Day 2
– Tools
– importing crates
– unit tests
– benchmarks
– fuzzing
– documentation
– attributes
– exercise: integrate unit tests, CI and other tools for the database example
– Strings and slices
– String
– &str
– &[u8]
– Iterators
– Closures
– exercise: start implementing queries
– Destructuring
– if let
– API design
– Usual traits
– Clone and Copy
– Debug and Display
– PartialEq, Eq
– Drop
– Static VS dynamic dispatch
– Associated types
– Deref
– Into
– I/O
– exercise: add optional file storage for the database
– Concurrency
– threads
– channels
– Send, Sync
– mutability
– Arc, Mutex
– exercise: multiple clients querying the database while storing regularly
# Day 3
– FFI
– repr(C)
– exporting functions and structures
– unsafe
– Box
– rusty-cheddar and rust-bindgen
– linking
– cargo-vendor
– exercise: making a C interface for our in memory database
– common libraries and interfaces (adaptable depending on what the students want to focus on)
– docs.rs
– Command
– clap
– serde
– log
– tokio
– rocket
– lazy_static
– nom