Rust je systémový programovací jazyk, který kombinuje výkon nízkoúrovňových jazyků s bezpečností a ergonomií moderních vysokoúrovňových jazyků. Jeho hlavním cílem je eliminovat chyby typu „segmentation fault“ a úniky paměti (memory leaks) už v době kompilace, aniž by k tomu potřeboval Garbage Collector (GC).
Největší inovací Rustu je systém Ownership, který nahrazuje automatickou správu paměti (jako v JS) i manuální správu (jako v C++).
1. Každá hodnota v Rustu má proměnnou, která je jejím **vlastníkem**. 2. V jeden okamžik může existovat pouze **jeden vlastník**. 3. Když vlastník odejde z rozsahu platnosti (scope), hodnota je **automaticky uvolněna** z paměti.
Aby mohl kód efektivně pracovat s daty bez jejich neustálého kopírování, používá Rust reference:
Rust využívá infrastrukturu LLVM, což mu dává přístup ke špičkovým optimalizacím a podpoře mnoha architektur (x86, ARM, WebAssembly).
1. **Rustc (Kompilátor):** Zpracuje zdrojový kód a provede syntaktickou analýzu. 2. **Borrow Checker:** Unikátní fáze, která kontroluje pravidla vlastnictví a životnosti (lifetimes). Pokud kód není bezpečný, kompilace skončí chybou. 3. **MIR (Mid-level IR):** Mezi-reprezentace pro optimalizace specifické pro Rust. 4. **LLVM IR:** Převod do mezikódu [[LLVM]], který se následně zkompiluje do strojového kódu.
Rust je známý svou vynikající sadou nástrojů, která je součástí instalace:
Rust se drží principu, že abstrakce by neměly zpomalovat výsledný program.
Result<T, E> a Option<T>, které nutí vývojáře explicitně řešit chyby.Díky své spolehlivosti proniká Rust do kritické infrastruktury:
1. **Linux Kernel:** Rust se stal druhým oficiálním jazykem pro psaní ovladačů v jádře [[Linux]]u (hned po C). 2. **WebAssembly (Wasm):** Rust je nejoblíbenějším jazykem pro psaní vysoce výkonného kódu, který běží v prohlížeči (např. grafické editory, hry). 3. **Cloud & Networking:** Projekty jako Firecracker (AWS) nebo síťové stacky Cloudflare sází na Rust kvůli bezpečnosti proti útokům na přetečení bufferu.
Ukázka bezpečné práce s polem a pattern matching:
fn main() {
let cisla = vec![1, 2, 3];
// Bezpečný přístup k prvku, který nemusí existovat
match cisla.get(5) {
Some(hodnota) => println!("Nalezeno číslo: {}", hodnota),
None => println!("Prvek na této pozici neexistuje."),
}
}
| Vlastnost | Rust | C++ |
|---|---|---|
| Správa paměti | Automatická (Ownership), bez GC. | Manuální (RAII / Smart Pointers). |
| Bezpečnost | Garantovaná kompilátorem (Safe Rust). | Na zodpovědnosti programátora. |
| Rychlost vývoje | Pomalejší start (boj s Borrow Checkerem). | Rychlejší prototypování, delší ladění chyb. |
| Ekosystém | Moderní, integrovaný (Cargo). | Fragmentovaný (CMake, Conan, Makefile). |
—
Víte, že? Rust obsahuje klíčové slovounsafe. To umožňuje vývojáři „vypnout“ některé kontroly v případech, kdy je nutný přímý přístup k hardwaru, ale tato místa jsou v kódu jasně označená a izolovaná.
Související: C++, LLVM, Linux, WebAssembly