Osvoj si programování v jazyce Rust a začni vyvíjet moderní aplikace s důrazem na výkon a správu paměti. Kurz probíhá v angličtině.
Lukáš Hozda
Senior Software Engineer,
Braiins Systems

Komplexní a praktický kurz, ve kterém se naučíš tvořit bezpečný a efektivní kód v jazyce Rust. Osvojíš si všechny klíčové koncepty od ownershipu, error handlingu, lifetimes až po asynchronní programování a práci s webovými frameworky, jako je Actix-web.
A to není vše – navíc získáš záznamy kurzu Github Copilot zdarma! Naučíš se, jak s tímto nástrojem automatizovat kódování, aby tvoje práce byla rychlejší a efektivnější.
Nejlepší absolventi kurzu dostanou příležitost pracovat ve společnosti Braiins jako Rust developeři.
Posuň své programátorské skills o level výš. V kurzu se naučíš efektivně pracovat s pamětí, ovládneš pokročilé techniky v Rustu a začneš tvořit bezpečný a rychlý kód pro náročné aplikace.
Získej znalosti, které ti umožní použít Rust pro back-end. Naučíš se pracovat s nízkoúrovňovými koncepty a frameworky, jako je Actix-web nebo Axum, a otevřeš si tím nové možnosti pro moderní webové aplikace.
Prohlub své znalosti v programování a nauč se přemýšlet o kódu jinak. Osvojíš si klíčové koncepty jako ownership a lifetimes a zvládneš tvořit aplikace, které jsou rychlé, spolehlivé a připravené na produkci.
Hned od začátku se ponoříš do práce s nástroji a postupy, které používají profesionálové – od Cargo na správu projektů až po Prometheus na monitorování aplikací. Postupně se naučíš, jak psát rychlý, efektivní a bezpečný kód.
Každá lekce obsahuje praktické úkoly, které tě připraví na skutečné vývojářské situace. Vyzkoušíš si například psaní back-endové aplikace, správu paměti nebo asynchronní programování s Tokiem.
Získáš dovednosti potřebné k psaní udržovatelného, efektivního a čitelného kódu. Naučíš se, jak Rust pomáhá řešit problémy s pamětí a chybami – a jak můžeš díky tomu posunout své programování na další úroveň.
Na závěr kurzu budeš mít hotový projekt, který si můžeš přidat do portfolia – například kompletní chatovací aplikaci s vlastním serverem a klientem. Skvělý základ, který ti otevře dveře k pozicím v Rustu!
Praktické cvičení: Instalace a konfigurace Rustu a jeho nástrojů, zprovoznění Rustu v preferovaném IDE/editoru kódu.
Výstupy z lekce: Vím, jaké jsou silné a slabé stránky jazyka Rust. Znám nejvhodnější domény pro jeho použití, rozumím filozofii návrhu Rustu a umím nainstalovat a nakonfigurovat Rust na svém počítači, abych mohl*a začít psát kód.
Praktické cvičení: Napiš program, který čte ze standardního vstupu, upravuje text podle zadání a vypisuje jej zpět uživateli.
Výstupy z lekce: Znám syntaxi jazyka Rust a umím číst základní kód. Vím, kde najít odkaz na standardní knihovnu Rust a jak v ní vyhledávat, umím uspořádat kód jazyka Rust do projektu Cargo a začínám teoreticky chápat koncepty týkající se správy paměti v jazyce Rust.
Výstupy z lekce: Umím uspořádat zdrojový kód do souborů, správně psát funkce, které přijímají parametry, a správně používat základní řídící struktury.
Výstupy z lekce: Umím používat pattern matching a pokročilé řídicí struktury k efektivnímu rozhodování v programu a idiomatickým způsobem oddělení jednotlivých částí dat od sebe dokážu popsat rozdíl mezi enumerací v jazyce Rust a enumerací v jazycích, jako je C# nebo C++ (prostá enumerace vs. tagovaný union). Umím definovat vlastní struktury a ukládat data logickým způsobem a vím, kdy stačí použít n-tici (tuple).
Praktické cvičení: Přepiš aplikaci tak, aby chyby správně probublávaly nahoru call stackem, nahraď unwraps() a expects() operátorem try a správně reprezentuj chybovost v programu pomocí typů Option a Result.
Výstupy z lekce: Umím si poradit s chybovostí operací a rozumím chybovému modelu Rustu, dokážu rozeznat, proč a kdy by se mělo panikařit a kdy by se měly chyby ošetřit. Zvládnu určit, co se stane, když dojde k chybě, dokážu chyby rozbalit a podívat se na jejich obsah, abych podle toho mohl*a upravit chování programu, a umím zajistit, aby program dokázal bezpečně selhat a ukončit se.
Výstupy z lekce: Znám paměťové důsledky používání různých datových struktur pro kolekce, rozumím slice semantics a tomu, kdy můžu použít slice a kdy musím použít vektor, umím vysvětlit, proč jsou řetězce v jazyce Rust komplikované a jak fungují a který typ řetězce kdy použít.
Praktické cvičení: Spouštění threads pro čtení vstupů a přijímání zpráv a jejich zobrazování.
Výstupy z lekce: Umím spravovat threads v jazyce Rust, umím vytvářet threads, ukončovat vlákna a spojovat vlákna, vím, jak sdílet informace mezi vlákny, a umím vytvářet a používat typy bezpečné pro threads.
Výstupy z lekce: Můžu vytvářet, mazat, číst a zapisovat do souborů, bezpečně zobrazovat data na standardním výstupu a analyzovat data ze standardního vstupu. Umím detekovat a ošetřit běžné I/O chyby – nedostatečný přístup, soubor neexistuje, soubor není obyčejný soubor, ale složka atd.
Praktické cvičení: Rozděl aplikaci na samostatnou klientskou a serverovou část. Klienti posílají zprávy serveru po síti, zatímco server je přijímá a rozesílá připojeným klientům.
Výstupy z lekce: Můžu ve svém programu implementovat synchronní síť – otevřít sokety, naslouchat spojení, přijímat bajty a posílat bajty zpět. Dokážu použít knihovnu Serde k anotaci svých typů tak, aby mohly být bezpečně deserializovány a přenášeny po síti, a můžu se rozhodnout, které datové formáty mají v jazyce Rust dobrou podporu a které jsou vhodné pro náš účel (chatovací aplikace).
Výstupy z lekce: Rozumím tomu, jak funguje objektově orientované programování v jazyce Rust, umím implementovat a používat běžné traity standardní knihovny Rust s vlastními typy, a umím definovat funkce a struktury, které jsou generické nad typy omezenými traity.
Praktické cvičení: Přeměn obě části aplikace pro chatování na plnohodnotné Cargo crates. Použij knihovny vhodné do produkce, které se postarají o takové aspekty, jako je protokolování. Prozkoumej další užitečné crates pro zjednodušení nebo vylepšení aplikace, jako jsou itertools, rayon, crates pro logování (tracing).
Výstupy z lekce: Umím se orientovat v ekosystému Rust. Vím, kde najít crates a dostupné knihovny, a umím vyhodnotit, zda se vyplatí je použít. Zvládnu přidávat, odebírat a spravovat verze závislostí a funkce prostřednictvím rozhraní Cargo CLI, a můžu využívat nástroje, které mi pomohou udržet kód čistý a idiomatický a upozorní mě na možné těžko odhalitelné chyby.
Výstupy z lekce: Umím popsat, jak v jazyce Rust fungují lifetimes a reference, jak (a kdy) správně anotovat kód pomocí lifetimes a jak sledovat lifetimes v uživatelských typech, vím, jaké chytré ukazatele jsou k dispozici ve standardní knihovně, proč jsou potřebné, kdy je lze použít (například rozdíl mezi Rc a Arc) a jakých běžných chyb se vyvarovat.
Praktické cvičení: Zaveď do aplikace správného zpracování chyb a hlášení chyb. Server by měl přesně a silně typovaným způsobem hlásit klientovi, proč přesně něco nefunguje (chyby jako neplatné pověření, neplatný příjemce apod.).
Výstupy z lekce: Dokážu přesně reprezentovat chyby a chybovost ve svém programu, vím, kdy mě zajímá který typ chyb, a dokážu přesně vybrat mezi crates anyhow a thiserror pro ošetření chyb, a umím vysvětlit, jak v jazyce Rust fungují error traity a jak je v případě potřeby implementovat ručně.
Výstupy z lekce: Umím využít asynchronní model programování v jazyce Rust a popsat, jak souvisí s modelem správy paměti v jazyce Rust, umím vytvářet futures, psát asynchronní funkce, asynchronní traity, await futures a používat streamy prostřednictvím standardní knihovny a běžně používaných knihoven z crates.io.
Praktické cvičení: Přepiš chatovacího klienta i chatovací server do asynchronního paradigmatu s použitím frameworku Tokio. Začni ukládat data o chatu a uživatelích do databáze.
Výstupy z lekce: Možnost používat nejoblíbenější, časem prověřený a rozšířený asynchronní programovací framework s kompletní výbavou, rozumím konceptům Tokio, jako jsou tasks, reactors a executors, a vím, kdy použít Tokio task místo systémového vlákna, a umím používat makro select! k rozhodování na základě dokončení futures.
Praktické cvičení: Přidej testy (podle specifikace) pro kód sdílené knihovny a použij komentáře k dokumentaci knihovny.
Výstupy z lekce: Dokážu používat integrované nástroje Rustu pro psaní unit a integračních testů, umím dokumentovat svůj kód, vytvářet webové stránky s dokumentací, které je možné prohlížet v prohlížeči, a pomocí doctestů zajistit aktuálnost ukázek kódu. Znám aktuální řešení pro code coverage (vestavěná podpora, cargo tarpaulin).
Praktické cvičení: Implementuj webový front-end pro správu serverové komponenty chatovací aplikace z prohlížeče.
Výstupy z lekce: Zvládnu rychle integrovat webové frameworky pro back-end, umím představit, které frameworky jsou v současnosti populární, jak se liší a jaké jsou jejich výhody a nevýhody. Vím, jak zobrazovat HTML a statické soubory a vytvořit rozhraní REST API včetně serializace/deserializace uživatelských typů z formulářových dat, JSON nebo hlaviček.
Praktické cvičení: Implementuj metriky do serverové části aplikace, nastav Grafanu a ověř funkčnost metrik vykreslením grafů v Grafaně.
Výstupy z lekce: Schopnost nastavit registr metrik Prometheus a front-end Grafana, umím svou aplikaci instrumentovat tak, aby vykazovala metriky, které mi umožní přesně měřit a vyhodnocovat provoz přes mou aplikaci. Používám labels k rozlišení různých zdrojů příchozích dat a vím, kdy použít Gauge a kdy Counter. Znám tipy pro používání metrik k ladění.
Praktické cvičení: Studenti dostanou závěrečnou individuální zpětnou vazbu, jak zlepšit svůj projekt, aby mohl přejít do finální podoby v rámci kurzu.
Výstupy z lekce: Mám zběžné znalosti pokročilých témat, jako jsou makra, metaprogramování, propojení s jazykem C, Rust pro vývoj front-endů, Nightly Rust a debugging, což jsou témata, která je dobré znát, ale nejsou pro každodenní používání Rustu kritická. Díky nim mám ukazatele, co studovat dál, pokud chci dosáhnout pokročilejších znalostí programovacího jazyka Rust.
