Menu
Coddy logo textTech

Rust Cheat Sheet: ściąga z Rusta

Ostatnia aktualizacja

Hello World i struktura programu

Program w Rust zaczyna się od fn main; instrukcje kończą się średnikiem.

OperacjaSkładnia
Punkt wejściafn main() { ... }
Wypisanie liniiprintln!("Hello, World!");
Wypisanie z wartościamiprintln!("{} is {}", name, age);
Wypisanie w formie debugprintln!("{:?}", value);
Komentarz liniowy// comment
Użycie elementu z modułuuse std::collections::HashMap;
Kompilacja i uruchomieniecargo run
Kompilacja wersji releasecargo build --release

Zmienne i typy (let / mut)

Wiązania są domyślnie niemutowalne; dodaj mut, aby pozwolić na ponowne przypisanie.

OperacjaSkładnia
Wiązanie niemutowalnelet x = 5;
Wiązanie mutowalnelet mut count = 0;
Jawny typlet age: u32 = 30;
Stałaconst MAX: u32 = 100;
Shadowinglet x = x + 1;
Typy całkowitei32, u32, i64, usize
Inne typy skalarnef64, bool, char
Krotkalet pair: (i32, &str) = (1, "a");
Konwersja typulet f = x as f64;

Instrukcje sterujące

if jest wyrażeniem, a Rust ma trzy rodzaje pętli.

OperacjaSkładnia
If / elseif x > 0 { ... } else { ... }
If jako wyrażenielet y = if x > 0 { 1 } else { -1 };
Pętla nieskończonaloop { ... }
Pętla zwracająca wartośćlet v = loop { break 5; };
Pętla whilewhile x < 100 { ... }
Pętla for po zakresiefor i in 0..10 { ... }
Pętla for po kolekcjifor item in &items { ... }
Break / continuebreak;, continue;

Funkcje

Ostatnie wyrażenie (bez średnika) jest wartością zwracaną.

OperacjaSkładnia
Podstawowa funkcjafn add(a: i32, b: i32) -> i32 { a + b }
Jawne zwrócenie wartościfn f() -> i32 { return 5; }
Brak wartości zwracanejfn log(msg: &str) { ... }
Przyjęcie referencjifn len(s: &String) -> usize { s.len() }
Domknięcielet add = |a, b| a + b;
Domknięcie z typemlet sq = |x: i32| -> i32 { x * x };
Funkcja jako argumentfn apply(f: impl Fn(i32) -> i32) { ... }

Ownership i pożyczanie

Każda wartość ma jednego właściciela; referencje pożyczają ją bez przejmowania własności.

OperacjaSkładnia
Przeniesienie (move, zmiana właściciela)let b = a; (a przestaje być ważne)
Klonowanie (głęboka kopia)let b = a.clone();
Pożyczka niemutowalnalet r = &x;
Pożyczka mutowalnalet r = &mut x;
Pożyczka w funkcjifn read(s: &String) { ... }
Dereferencja*r
Reguła pożyczaniaWiele & ALBO jedno &mut naraz, nigdy oba
Wycinek (pożycza zakres)let part = &arr[1..3];

Struktury i enumy

Struktury grupują powiązane dane; enumy opisują wartość, która jest jednym z kilku wariantów.

OperacjaSkładnia
Definicja strukturystruct Point { x: i32, y: i32 }
Utworzenie instancjilet p = Point { x: 1, y: 2 };
Dostęp do polap.x
Struktura krotkowastruct Pair(i32, i32);
Metoda (blok impl)impl Point { fn dist(&self) -> f64 { ... } }
Funkcja powiązanaimpl Point { fn new() -> Self { ... } }
Definicja enumaenum Shape { Circle(f64), Rect(f64, f64) }
Enum z nazwanymi polamienum Msg { Move { x: i32, y: i32 } }
Wyprowadzenie traitów (derive)#[derive(Debug, Clone)]

Dopasowanie wzorców (match)

match porównuje wartość ze wzorcami i musi obejmować wszystkie przypadki.

OperacjaSkładnia
Dopasowanie wartościmatch x { 1 => "one", _ => "other" }
Dopasowanie enumamatch shape { Shape::Circle(r) => ... }
Dopasowanie zakresumatch n { 1..=5 => ..., _ => ... }
Wiązanie ze strażnikiem (guard)match x { n if n > 0 => ... }
Dopasowanie krotkimatch point { (0, y) => ..., (x, _) => ... }
if let (jeden wzorzec)if let Some(v) = opt { ... }
while letwhile let Some(v) = stack.pop() { ... }
Destrukturyzacja strukturylet Point { x, y } = p;

Traity i typy generyczne

Traity definiują wspólne zachowanie; typy generyczne pozwalają kodowi działać dla wielu typów.

OperacjaSkładnia
Definicja traitatrait Area { fn area(&self) -> f64; }
Implementacja traitaimpl Area for Circle { fn area(&self) -> f64 { ... } }
Metoda domyślnatrait Greet { fn hi(&self) { ... } }
Funkcja generycznafn largest<T: PartialOrd>(list: &[T]) -> &T { ... }
Struktura generycznastruct Wrapper<T> { value: T }
Ograniczenie traitem (where)fn f<T>(x: T) where T: Display { ... }
Argument impl Traitfn print(item: impl Display) { ... }
Obiekt traitalet shapes: Vec<Box<dyn Area>> = ...;

Obsługa błędów (Result / Option)

Rust opisuje brak wartości przez Option, a błędy, które da się obsłużyć, przez Result.

OperacjaSkładnia
Wartość opcjonalnaOption<T>: Some(v) lub None
Typ ResultResult<T, E>: Ok(v) lub Err(e)
Zwrócenie Resultfn read() -> Result<String, Error> { ... }
Propagacja przez ?let data = read()?;
Unwrap (panika przy None/Err)opt.unwrap()
Wartość domyślnaopt.unwrap_or(0)
Przekształcenie wartościopt.map(|v| v + 1)
Obsługa obu gałęzimatch res { Ok(v) => ..., Err(e) => ... }
Zamiana Option na Resultopt.ok_or("missing")?

Popularne kolekcje (Vec / HashMap)

Vec to rozszerzalna tablica; HashMap to magazyn klucz-wartość.

OperacjaSkładnia
Utworzenie wektoralet mut v: Vec<i32> = Vec::new();
Literał wektoralet v = vec![1, 2, 3];
Push / popv.push(4);, v.pop();
Dostęp przez indeksv[0]
Bezpieczny dostępv.get(0) zwraca Option<&T>
Iteracjafor x in &v { ... }
Długośćv.len()
Utworzenie mapylet mut m: HashMap<String, i32> = HashMap::new();
Wstawienie / odczytm.insert(k, v);, m.get(&k)
Entry API*m.entry(k).or_insert(0) += 1;

Najczęściej używana składnia Rusta na jednej stronie. Ten Rust cheat sheet to szybka ściąga z rdzenia języka: zmienne i mutowalność, ownership i pożyczanie, struktury i enumy, dopasowanie wzorców, traity i typy generyczne oraz typy Result i Option, na których opiera się obsługa błędów w Rust.

Wszystko tutaj to standardowy Rust, który kompiluje się na aktualnym stabilnym toolchainie. Skopiuj to, czego potrzebujesz, albo uruchom każdy fragment w edytorze online Rusta, bez instalowania cargo.

Rust cheat sheet: FAQ

Czy ten Rust cheat sheet jest darmowy?
Tak. Ten Rust cheat sheet jest całkowicie darmowy i nie wymaga rejestracji. Dodaj go do zakładek i wracaj, gdy potrzebujesz sprawdzić wzorzec match, ograniczenie traitem albo metodę kolekcji.
Czym są ownership i pożyczanie w Rust?
Ownership (własność) to model pamięci Rusta: każda wartość ma dokładnie jednego właściciela i jest zwalniana, gdy ten właściciel wychodzi z zakresu. Pożyczanie pozwala korzystać z wartości bez przejmowania własności dzięki referencji: &x dla pożyczki niemutowalnej lub &mut x dla mutowalnej. Kompilator pilnuje jednej reguły: naraz możesz mieć wiele pożyczek niemutowalnych albo dokładnie jedną mutowalną, co zapobiega wyścigom danych już na etapie kompilacji.
Czym różni się Result od Option w Rust?
Option<T> oznacza wartość, której może nie być: jest to Some(v) albo None, a używasz go, gdy nie ma błędu do zgłoszenia, tylko brakująca wartość. Result<T, E> oznacza operację, która może się nie udać: jest to Ok(v) albo Err(e) z wartością błędu, gdy coś pójdzie nie tak. Używaj Option dla sytuacji „może jest, może nie” i Result dla „to może się nie udać”; operator ? propaguje oba.
Czy mogę ćwiczyć Rusta online?
Tak. Otwórz edytor online Rusta, aby skompilować i uruchomić dowolny fragment z tej ściągi w przeglądarce, bez instalowania cargo ani toolchaina. Gdy chcesz nauki krok po kroku, darmowy interaktywny kurs Rusta w Coddy przeprowadzi cię od zmiennych i ownership do traitów i obsługi błędów.
Czy ta ściąga nadaje się dla początkujących?
Tak. Jest uporządkowana od najczęstszych tematów (zmienne, instrukcje sterujące, funkcje) do bardziej zaawansowanych (traity, typy generyczne, obsługa błędów), więc górne sekcje przydadzą się od pierwszego dnia, a ownership i resztę opanujesz z czasem.
Ilustracja języków programowania w Coddy

Naucz się języka Rust z Coddy

ZACZNIJ