Rust для начинающих в 2025: полное руководство по старту

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Введение: почему Rust — это язык будущего (и настоящего)

В 2025 году Rust прочно занял место одного из самых востребованных языков программирования. Его выбирают за невероятную производительность, сравнимую с C++, и абсолютную безопасность памяти, которую гарантирует компилятор. Rust — это не просто модный тренд, а инструмент, на котором пишут ядра операционных систем, веб-движки (например, часть Firefox), блокчейн-проекты и даже инструменты для Python (через PyO3).

Если вы уже знакомы с Python или другим языком, Rust покажется вам строгим, но справедливым учителем. Он заставит вас думать о памяти, владении и заимствовании данных на этапе компиляции, а не во время выполнения. Это избавит от целого класса ошибок. В этой статье мы разберем, с чего начать ваш путь в мир Rust в 2025 году: от установки до первых осмысленных программ.

Шаг 1: Установка и настройка окружения

Первое, что нужно сделать — установить Rust. Лучший способ — использовать официальный установщик rustup. Он управляет версиями компилятора и инструментов.

Установка на Windows, macOS и Linux

Откройте терминал (или командную строку на Windows) и выполните команду:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

На Windows можно скачать rustup-init.exe с официального сайта rustup.rs. Следуйте инструкциям на экране. После установки перезапустите терминал или выполните:

source $HOME/.cargo/env

Проверьте, что всё работает:

rustc --version
cargo --version

Вы должны увидеть номера версий. rustc — это компилятор, а cargo — менеджер пакетов и система сборки. Вы будете использовать cargo постоянно.

Инструменты для разработки

Для комфортной работы вам понадобится редактор кода. Лучшие варианты:

  • VS Code с расширением rust-analyzer — это стандарт де-факто. Расширение дает автодополнение, проверку ошибок на лету и навигацию по коду.
  • IntelliJ IDEA с плагином Rust — мощный вариант, если вы привыкли к среде от JetBrains.
  • Helix или Neovim — для любителей терминала.

Также установите rustfmt (форматировщик кода) и clippy (линтер). Они устанавливаются через rustup:

rustup component add rustfmt clippy

Шаг 2: Создание первого проекта с Cargo

Не пишите код в одиночных файлах. Используйте cargo для создания структуры проекта. Это автоматически создаст папку с файлом Cargo.toml (манифест проекта) и папкой src.

cargo new hello_rust
cd hello_rust

Откройте файл src/main.rs. Вы увидите классическую программу:

fn main() {
    println!("Hello, world!");
}

Запустите её:

cargo run

cargo run скомпилирует и сразу выполнит программу. Команда cargo build только скомпилирует, а cargo check проверит код на ошибки без создания исполняемого файла — это очень быстро.

Шаг 3: Основы синтаксиса и уникальные концепции

Rust синтаксически похож на C++, но с большим влиянием функциональных языков. Вот самое важное для начинающего.

Переменные и неизменяемость

По умолчанию все переменные в Rust неизменяемы. Это ключевая фишка безопасности.

fn main() {
    let x = 5;
    // x = 6; // Ошибка! Нельзя изменить неизменяемую переменную
    println!("Значение x: {}", x);

    let mut y = 10; // Ключевое слово mut делает переменную изменяемой
    y = 20;
    println!("Значение y: {}", y);
}

Система владения (Ownership)

Это сердце Rust. Каждое значение в Rust имеет ровно одного "владельца" — переменную. Когда владелец выходит из области видимости, значение автоматически удаляется.

fn main() {
    let s1 = String::from("привет"); // s1 — владелец строки
    let s2 = s1; // Владение ПЕРЕМЕЩАЕТСЯ в s2

    // println!("{}", s1); // ОШИБКА! s1 больше не владеет строкой
    println!("{}", s2); // Работает
}

Заимствование (Borrowing)

Если нужно использовать данные, не становясь их владельцем, используйте ссылки & (заимствование).

fn main() {
    let s = String::from("мир");
    let len = calculate_length(&s); // Передаем ссылку, а не владение
    println!("Длина '{}' равна {}.", s, len); // s все еще доступна!
}

fn calculate_length(s: &String) -> usize {
    s.len()
}

Структуры и перечисления

Rust поддерживает структуры (struct) и перечисления (enum), которые являются основой для создания сложных типов данных.

// Структура
struct User {
    username: String,
    email: String,
    active: bool,
}

// Перечисление
enum IpAddrKind {
    V4,
    V6,
}

fn main() {
    let user1 = User {
        username: String::from("rustacean"),
        email: String::from("rust@example.com"),
        active: true,
    };

    let ip = IpAddrKind::V4;
}

Шаг 4: Ресурсы для дальнейшего изучения в 2025 году

У Rust отличное сообщество и документация. Вот что стоит изучить после основ: