Rust
Rust je modernĂ systĂ©movĂ˝ programovacĂ jazyk, kterĂ˝ kombinuje vĂ˝kon C/C++ s bezpeÄŤnostĂ pamÄ›ti — a to vše bez garbage collectoru. Kompilátor (rustc) pĹ™ed pĹ™ekladem zkontroluje, Ĺľe kĂłd nedÄ›lá nic nebezpeÄŤnĂ©ho s pamÄ›tĂ, a pokud ano, prostÄ› se nezkompiluje.
Instalace
Rust se nejjednodušeji instaluje pomocà nástroje rustup, který spravuje verze kompilátoru a toolchainů.
Linux / macOS
Jeden pĹ™Ăkaz, kterĂ˝ nainstaluje všechno potĹ™ebnĂ©:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Po instalaci je potĹ™eba buÄŹ otevĹ™Ăt novĂ˝ terminál, nebo naÄŤĂst promÄ›nnĂ© prostĹ™edĂ:
source $HOME/.cargo/env
Windows
Stáhněte si instalátor rustup-init.exe z rustup.rs a spusťte. Alternativně přes winget:
winget install Rustlang.Rustup
Ověřenà instalace
rustc --version
cargo --version
Měli byste vidět něco jako rustc 1.XX.X a cargo 1.XX.X.
Cargo — co to je a jak funguje
Cargo je oficiálnà build systém a package manager Rustu. Prakticky vše kolem Rust projektů se řešà přes něj:
- vytvářenà nových projektů
- kompilace a spouštÄ›nĂ
- správa závislostĂ (balĂÄŤkĹŻ z crates.io)
- testovánĂ, benchmarky, dokumentace
ZatĂmco v C a C++ si musĂte buildovacĂ systĂ©m (Make, CMake, Meson…) vybrat a nastavit sami, v Rustu je Cargo standardem a funguje hned od začátku.
ZákladnĂ pĹ™Ăkazy
cargo new projekt # vytvořà novou složku s projektem
cargo build # zkompiluje projekt (debug)
cargo build --release # optimalizovanĂ˝ release build
cargo run # zkompiluje A spustĂ
cargo test # spustĂ testy
cargo check # rychlá kontrola bez generovánà binárky
cargo add nazev # přidá závislost do projektu
Struktura projektu
KdyĹľ spustĂte cargo new hello, Cargo vytvoĹ™Ă:
hello/
├── Cargo.toml # manifest projektu (metadata, závislosti)
├── .gitignore # předpřipraveno pro Git
└── src/
└── main.rs # vstupnà bod programu
Soubor Cargo.toml vypadá takto:
[package]
name = "hello"
version = "0.1.0"
edition = "2021"
[dependencies]
Závislosti se přidávajà buď ručně do [dependencies], nebo pohodlněji pomocà cargo add:
cargo add serde
Hello, World!
Varianta 1: Přes Cargo (doporučený způsob)
cargo new hello
cd hello
cargo run
A je to! Cargo vám rovnou vygeneroval Hello World, zkompiloval ho a spustil:
Compiling hello v0.1.0 (/path/to/hello)
Finished dev [unoptimized + debuginfo] target(s) in 0.42s
Running `target/debug/hello`
Hello, world!
Obsah vygenerovaného src/main.rs:
fn main() { println!("Hello, world!"); }
Varianta 2: Bez Carga, ručně přes rustc
Pro jednorázové skripty se hodà vědět, že Rust zvládne i kompilaci jednoho souboru:
echo 'fn main() { println!("Hello, World!"); }' > hello.rs
rustc hello.rs
./hello
V reálnĂ˝ch projektech ale vĹľdycky pouĹľĂvejte Cargo — jakmile budete chtĂt pĹ™idat knihovnu nebo napsat test, ocenĂte to.
Co se v tom kódu děje?
fn main() { println!("Hello, world!"); }
fn main()— vstupnĂ bod programu, stejnÄ› jakomainv C/C++println!— makro (poznáte podle vykĹ™iÄŤnĂku), vypĂše text na stdout a pĹ™idá novĂ˝ řádek- ŽádnĂ©
return 0;nenĂ potĹ™eba — pokud funkce nic nevracĂ, implicitnÄ› vracĂ()(jednotkovĂ˝ typ)
Co dělá Rust jiný
Bez zacházenĂ do hloubky — hlavnĂ nápady, kterĂ© Rust pĹ™inášĂ:
- Ownership & borrowing — kaĹľdá hodnota má právÄ› jednoho vlastnĂka. KdyĹľ vlastnĂk zmizĂ, paměť se uvolnĂ. Pokud chcete hodnotu "pĹŻjÄŤit", pouĹľĂváte reference s jasnĂ˝mi pravidly.
- Borrow checker — kompilátor při překladu kontroluje, že nedojde k use-after-free, data race ani dangling pointeru. Pokud ano, program se nezkompiluje.
- Žádné
null— mĂsto toho typOption<T>, kterĂ˝ vás nutĂ explicitnÄ› ošetĹ™it pĹ™Ăpad "žádná hodnota". - ŽádnĂ© vĂ˝jimky — chyby se vracejĂ pĹ™es typ
Result<T, E>, takže je z kódu jasně vidět, co může selhat. - Paměťová bezpečnost bez GC — vše výše uvedené běžà bez runtime overheadu. Výsledné binárky jsou stejně rychlé jako C/C++.
- Modernà tooling —
cargo, formátterrustfmt, linterclippy, skvělé error messages od kompilátoru.
Rust má povÄ›st jazyka se strmou kĹ™ivkou uÄŤenà — zejmĂ©na borrow checker mĹŻĹľe zpočátku frustrovat. Ale jakmile si zvyknete, zĂskáte nástroj, ve kterĂ©m jde psát systĂ©movĂ˝ kĂłd s mnohem vÄ›tšĂm klidem, neĹľ jakĂ˝ vám dá C nebo C++.
Pokud se chcete naučit Rust pořádně, doporučuje se oficiálnà kniha The Rust Programming Language (zdarma) a interaktivnà cvičenà Rustlings.