Rust Language Training Course

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

Leave a Reply

Your email address will not be published. Required fields are marked *