Vocational Rust 2/2

This two-module-long Rust course is made for developers that already have some experience in functional programming and wish to build upon it an advanced expertise in Rust. As a low-level language, it ties robustness and performance in one package which makes it a serious contender to replace C and C++.

This second module dives into advanced aspects of traits and ownership, which paves the way to discussing more advanced notions such as boxing, concurrency, collections... All sections include exercises that participants solve in-session, with help from the trainer(s). Also, this module builds on a running example so that participants follow and contribute to a growing codebase performing non-trivial tasks. The final version is about 3.5 KLOC.

Program

Customization of the program

Some sections are labeled as [OPT]ional. They cover topics that participants will be fine learning about on their own using what they learnt during the course. They can do so either from the course's material (which include exercices for all optional sections) and/or from alternative resources online. These sections are optional because there is simply not enough time to cover everything in three days. Different clients will want to prioritize different concepts, which is why we propose to tailor the course; it can either contain

  • all optional sections: the trainer will present them without the exercises;
  • one optional section: fully presented, with exercises;
  • a tailored version of the above, to discuss before training starts.

Alternatively, clients can elect not to include any optional section. While this can sound like a net loss, trainers adapt the speed at which they introduce notions and conduct exercises in real time. Not having any optional section gives more time to discuss Rust's fundamental and advanced concepts, and practice them. As mentioned already, none of the optional sections are very difficult to dive in for anyone with a good grasp on Rust's main concepts. As a consequence it might be more efficient to take the time to build solid foundations.

[OPT] Declarative macros

  • Writing a declarative macro
  • Visibility
  • Hygiene

Advanced traits

  • Trait coherence rule
  • Fundamental traits from the standard library
  • Complex trait bounds

Advanced ownership

  • Dive into borrow rules
  • Lifetime subtyping
  • Storing references
  • Implementing traits for references

More basic (niche) notions

  • Global state: const and static
  • Turbo fish

Type size and boxing

  • Sized types and DSTs
  • Algebraic datatypes
  • Reference counting

Collections

  • Fundamental types: Vec, HashMap, BTreeMap
  • Fundamental traits: Iterator, IntoIterator, Collect

Interior Mutability

  • Detailed discussion of RefCell
  • RefCell limitations (using rayon)

[OPT] Single Dispatch

  • Trait objects
  • Heterogeneous collections
  • Lifetime bounds for trait objects

Fearless Concurrency

  • Rc and Arc
  • Send and Sync
  • Spawning threads and passing messages

[OPT] Unsafe Rust and FFI

  • Unsafe powers
  • Raw pointers
  • Unsafe functions and traits
  • FFI basics
  • Calling Rust from C and C from Rust

Next Sessions

  • April 22-24 2024
  • June 3-5 2024
  • October 14-16 2024
  • December 9-11 2024

Vocational Rust 2/2

Duration: 3 days Practice: 50%
Price: 2000 EUR/pers. excl. taxes
Pre-requisites
  • Functional Programming
  • Rust module 1
Public
  • Developers
Pedagological Objectives
  • Customization of the program
  • [OPT] Declarative macros
  • Advanced traits
  • Advanced ownership
  • More basic (niche) notions
  • Type size and boxing
  • Collections
  • Interior Mutability
  • [OPT] Single Dispatch
  • Fearless Concurrency
  • [OPT] Unsafe Rust and FFI
Quality Indicators
  • Mean satisfaction score: 18.5/20
  • Success Rate: 100%

Version: November 14, 2022

Adrien Champion (Rust)

Adrien is a senior R&D developer at OCamlPro since 2018 after a PhD in Computer Science and a post-doc in Japan. Adrien develops in Rust since the first versions of the Rust compiler, and maintains several open-source crates in Rust, such as hashconsing, rsmt2, zdd ou safe_index.

Useful Information

Contact

You can contact us using the form on top of every course description, or by email at contact@ocamlpro.com.

Delayed access timeframe

Since our trainings are organised upon request within two months after the first contact, the access timeframe may vary depending on your specific needs and custom training conditions which will all be agreed upon prior to the course.

Registration and course modalities

Our courses may either be done remotely or physically.

Prior to the course:

  • Either a meeting or a survey to identify your needs and expectations.
  • Shipment of administrative papers such as: written agreement, welcome booklet and rules of procedure.
  • Shipment of everything required to guarantee the good conduct of the course: external ressources, and custom instructions alike.

During the course:

  • The attendee goes to the designated location with his/her personal computer.
  • Time slots for our on-site Inter Corporation Trainings are the following:
    • Start - 9:30AM
    • Lunch Break - 12:00PM to 01:00PM
    • End - 05:30PM
  • Evaluations throughout the duration of the course (quizzes, tests and experimentations).

End the course:

  • Presentation of a certificate of training.
  • Auto-evaluation quizz.
  • A hot feedback form on the quality of the course.

After the course:

  • A cold feedback form on your satisfaction (roughly three months after the course)

Methods used and modalities for evaluation

Our courses may welcome a maximum of ten attendees and the number of tutors may vary between one and two depending on the amount of practical tasks in the course.

Parameters such as the number of attendees and their overall skill level will affect pedagogical modalities such as the number of pratical tasks, guided discussions, collaborative development, etc.

Courses may include small projects to develop independently to help consolidate the acquired knowledge.

The ressources are written by the OCamlPro team prior to the courses. Documents are generally written in english and can be translated to french if need be.

We make the progress of our trainees and its evaluation a core aspect of our courses. Indeed, guaranteeing the durable acquisition of the skills at hand is key, especially for the newer comers. To that extent, we will have trainees undergo tailored group works, exercises and hands-on practice which modalities can all be customised to your specific needs.

Accessibility, handicap

Preliminary studies are done prior to every training to guarantee the quality of the course by tweaking the pedagogical modalities and take into consideration any handicap communicated during the first stages of the registration. We are at your disposal to answer your every question and other queries at: contact@ocamlpro

Funding by OPCO and CPF

The funding of the training by the OPCO is possible as OCamlPro has received the Qualiopi certification. The two following conditions must then be attained:

  • The funding must cover all expenses relative to the course.
  • The funding agreement must get to us five days prior to the training session at the latest.

Our trainings do not yet deliver certicates or official qualifications and thus cannot be funded by your personnal CPF.