Rust Fundamentals

Slide header

Comprehensive training for intermediate/advanced engineers on the Rust programming language.

Intro

After reaching its landmark age of 10 years, the Rust programming language has shown its potential as a powerful programming language for many application domains. Initially mostly known for its hallmark feature of guaranteed memory-safety, the language expressiveness and tooling ecosystem for enhanced productivity deliver at least at much benefits. The unique approach to guaranteed memory-safety, polymorphism with traits and the use of various functional programming techniques in a language without memory garbage collection requires a diligent learning procedure. This course offers a comprehensive and systematic introduction to the Rust programming language, preparing the attendee for an effective and successful career using Rust.

Objective

  • Build a solid understanding of Rust
  • Focus on idiomatic programming practices
  • Learn language features up to the 2024 edition
  • Directly apply knowledge during hands-on exercises
  • Learn about resources for further professional development.

Audience

Software engineers of medium experience level (2+ years) with a decent base of general software engineering knowledge.

Program

This course is provided in two time two consecutive training days within two weeks (i.e. four days total).

Day 1

Introduction to Rust, ownership and borrowing, basic types and control structures. At the end of the day, the attendees will be able to explain what Rust is, how its compilation model works, and what it can be used for. They will also be able to read and write basic applications using custom data structures and control flow, while understanding Rust’s unique ownership system that guarantees memory safety.

Day 2

Pattern matching and error handling, collections and iterators, traits and generics. At the end of the day, attendees will be able to read and write more advanced applications using proper error handling with Option and Result types. They will be able to effectively use standard library collections and iterators, and apply the trait system to create reusable abstractions and share behavior among types.

Day 3

Advanced language features, concurrency and memory management, and functional programming. At the end of the day, attendees will understand advanced Rust concepts including closures, const generics, and dynamic polymorphism. They will be able to write concurrent programs using threads and basic asynchronous programming, and understand how unsafe code can be applied prudently for high-performance requirements.

Day 4

Project organization and tooling, macros and the ecosystem, application domains. Optional topics (on request): cross-compilation, foreign function interfaces, advanced async programming. At the end of the day, attendees will have a good sense of the Rust toolbox: project structure, essential tooling like Cargo and Clippy, and the crate ecosystem. They will understand the three forms of macros in Rust and be able to write basic declarative macros. When leaving the course, they are equipped with knowledge of how Rust applies to various domains and have handles to sources for further professional development in Rust.

Large homework exercises

For those who are interested, there are a couple of larger homework exercises to choose from. Each of the exercises build up to a fully functional application in a number of smaller steps. These exercises are accompanied with explanation slides, solution code and extensive descriptions of the solution steps.

The large homework exercises are publicly available and can be found via this link.

High Tech Institute

This training is provided through High Tech Institute, more information here.