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Ä› jako main v 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 typ Option<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átter rustfmt, linter clippy, 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.