Slides and other material primarily intended for the workshop organizer.
The template for the participants is here.
(or in the submodule rust-workshop)
When inviting people to the workshop, include the information in invitation.md.
The following agenda serves as a progress tracker for the workshop preparation.
- language basics 1
- introduction, goal of the workshop
- agenda
- map out the book (which day covers which chapters, what is skipped)
- invite students to come up with their own final project ideas
- theory
- 3: common programming concepts
- 4: ownership
- practice
- setup
- toolchain
- copy rust-workshop repo
- install vscode extensions
- editor setup (clippy)
- rustlings (until move semantics)
- setup
- homework:
- standard library reading
- suggested bonus exercises
- language basics 2
- theory
- 5: structs
- 6: enums & match
- 7: crates & modules
- 8:
stdcollections - 9: error handling
- practice
- navigate
stddocumentation
- navigate
- homework
- Read list of modules in the standard libraries. Pick a couple of them and read the module-level documentation.
- theory
- advanced language features
- theory
- 10: generics
- 10: traits
- 10: lifetimes (only overview)
- 13: closures
- 13: iterators
- conclusion of language part. quick note about async.
- practice
- write custom iterator
- homework
- theory
- beyond the book: navigating the ecosystem
- theory
- how to use libraries
- how to find libraries
- not in
std:-
rand -
regex -
log -
time -
hyper(http)
-
- blessed.rs (shortlist)
- container-based cross-compilation
- FFI glue-code generators (C, C++, WASM, Python! and many more)
- release automation
- lib.rs (extensive category-based index)
- not in
- library information (crates.io)
- library documentation (docs.rs)
- demo of two crates showcasing the power of the language:
-
itertools -
serde
-
- This Week in Rust
- how to setup a CI/CD pipeline
- quick note about the state of embedded
- practice
- homework
- Skim blessed.rs from top to bottom. "Holy shit, you can do that?"-moments are guaranteed.
- theory
- start project
- network services
- several services communicate via HTTP, data types are in a shared crate
- if frontend experience present: leptos dashboard for services
- CLI tools
- communicate via stdin/-out, can be composed using pipes
- python extension module (PyO3 & maturin)
- ...
- network services
- finish project, wrap up, discussion, feedback etc.