Перейти к содержимому

Шпаргалка по Rust

Страница для быстрой справки: то, что хочется проверить, не перечитывая целый урок. Каждый раздел ссылается на страницу, где всё объясняется как следует.

Ключевое слово Значение
let Объявить переменную (Переменные)
mut Сделать переменную или ссылку изменяемой (Переменные)
const Объявить константу (Переменные)
fn Объявить функцию (Функции)
struct Объявить структуру (Структуры)
enum Объявить перечисление (Перечисления)
impl Добавить методы типу (Структуры, Трейты)
trait Объявить трейт (Трейты)
match Сопоставить значение с образцами (Match)
if let / while let Сопоставить с одним образцом (if let и while let)
loop / while / for Три вида циклов (Циклы, Цикл while, Цикл for)
break / continue Управлять циклом (Break и continue)
mod Объявить модуль (Модули)
pub Сделать элемент видимым за пределами модуля (Модули)
use Ввести путь в область видимости (Модули)
unsafe Открыть доступ к сырым указателям и другим операциям, за которые отвечаешь ты сам (Unsafe)
move Заставить замыкание забрать владение захваченными значениями (Многопоточность)
& / &mut Заимствовать / изменяемо заимствовать значение (Заимствование)
Метод Что делает
.len() Длина в байтах (кириллическая буква занимает 2 байта)
.trim() Убирает пробелы в начале и в конце
.to_uppercase() / .to_lowercase() Меняет регистр
.contains(pat) Есть ли подстрока или шаблон
.replace(from, to) Заменяет все совпадения
.push_str(s) Добавляет &str в конец
.push(c) Добавляет один char в конец
.chars() Перебирает строку по символам
.split(pat) Делит строку, возвращает итератор подстрок
.parse::<T>() Превращает текст в другой тип (возвращает Result)

Подробности и примеры — в уроке Строки.

Метод Что делает
.push(x) Добавляет в конец
.pop() Удаляет и возвращает последний элемент (Option)
.remove(i) Удаляет элемент с индексом i
.len() Количество элементов
.is_empty() Пуст ли вектор
.get(i) Безопасный доступ по индексу (Option, без паники)
.iter() Перебирает элементы по ссылке
.contains(&x) Есть ли такое значение
.sort() Сортирует на месте
.sort_by_key(|x| ...) Сортирует по полю или вычисленному ключу
.dedup() Удаляет идущие подряд дубликаты (сначала отсортируй)

Подробности и примеры — в уроках Векторы, Сортировка и поиск и Итераторы.

Тип Используй, когда нужно…
Vec<T> Упорядоченный список, который может расти
HashMap<K, V> Быстро находить значение по ключу
HashSet<T> Уникальные элементы и быстрая проверка «есть ли он здесь?»
BTreeMap<K, V> Пары ключ-значение, отсортированные по ключу
VecDeque<T> Очередь — добавлять и забирать с обоих концов

Подробности и примеры — в уроках HashMap и HashSet и BTreeMap.

Метод Для чего Что делает
.unwrap() Оба Достаёт значение, паникует при None/Err
.expect("msg") Оба Как .unwrap(), но со своим сообщением паники
.unwrap_or(default) Оба Достаёт значение или запасной вариант
.is_some() / .is_none() Option Проверяет, какой это вариант
.is_ok() / .is_err() Result Проверяет, какой это вариант
? Оба Досрочно возвращает None/Err

Подробности и примеры — в уроках Option и Result.

Спецификатор Что выводит
{} Обычный вывод (нужен трейт Display)
{:?} Отладочный формат (Debug)
{:#?} Отладочный формат с красивыми отступами
{:.2} 2 знака после запятой
{:5} Дополняет до ширины 5
{name} Подставляет переменную с именем name

Подробности и примеры — в уроке Вывод на экран.

Команда Что делает
cargo new name Создаёт новый проект
cargo run Собирает и запускает
cargo check Быстро ищет ошибки, не собирая программу
cargo test Запускает тесты
cargo add crate Добавляет зависимость
cargo fmt Форматирует код
cargo clippy Ищет в коде частые ошибки (линтер)
cargo build --release Собирает оптимизированный исполняемый файл

Подробности и примеры — в уроке Cargo и крейты.

Синтаксис Значение
1..5 От 1 до 5, не включая 5
1..=5 От 1 до 5 включительно
..3 С начала до 3, не включая 3
2.. От 2 до конца
.. Всё целиком

Подробности и примеры — в уроках Цикл for и Срезы.

Что нужно… Крейт Урок
JSON (и другие форматы) serde + serde_json JSON и Serde
Асинхронный код, таймеры, сеть tokio Async/Await
Интерфейс командной строки clap CLI-утилита на clap
Простая обработка ошибок anyhow, thiserror anyhow и thiserror
Случайные числа rand Случайные числа
Регулярные выражения regex Регулярные выражения
Дата и время chrono Дата и время
Логирование log + env_logger, tracing Логирование
Веб-сервер axum Веб-API на Axum

Любой из них добавляется командой cargo add <крейт>. Как выбрать хороший крейт, рассказано в уроке Cargo и крейты.