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

  21 Hours

Number of participants


Starts

Ends


Dates are subject to availability and take place between 09:30 and 16:30.

Price per participant

Testimonials (4)

Related Courses

Rust Advanced

  14 Hours

Rust for Systems Programming

  21 Hours

Rust for Embedded Systems

  21 Hours

Rust for Game Development

  21 Hours

Rust for Web Development

  21 Hours

Combined C/C++, JAVA and Web Application Security

  28 Hours

Advanced Java Security

  21 Hours

Combined JAVA, PHP and Web Application Security

  28 Hours

Related Categories