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

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

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

Начать курс

Введение: почему Rust — язык будущего в 2025 году

Rust уже несколько лет подряд признаётся самым любимым языком программирования по опросам разработчиков Stack Overflow. В 2025 году он продолжает набирать популярность, особенно в системном программировании, веб-разработке, блокчейне и embedded-системах. Но с чего начать новичку? В этой статье мы разберём, как установить Rust, написать первую программу и понять ключевые концепции языка.

Rust сочетает в себе производительность C/C++ с безопасностью памяти, которая проверяется на этапе компиляции. Это значит, что вы избежите многих ошибок времени выполнения, характерных для других языков. Если вы пришли из Python, вас ждёт крутая кривая обучения, но результат того стоит.

1. Установка Rust и настройка окружения в 2025 году

Первый шаг — установка компилятора Rust и менеджера пакетов Cargo. В 2025 году процесс стал ещё проще.

Установка через rustup

Официальный и рекомендуемый способ — использовать rustup. Откройте терминал и выполните команду:

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

После установки перезагрузите терминал или выполните:

source $HOME/.cargo/env

Проверьте установку:

rustc --version
cargo --version

Вы должны увидеть что-то вроде:

rustc 1.78.0 (2024-12-15)
cargo 1.78.0 (2024-12-15)

Среда разработки

Для комфортной работы рекомендую использовать:

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

2. Синтаксис Rust: первые шаги и примеры кода

Rust — язык со строгой статической типизацией, но с мощным выводом типов. Разберём базовые конструкции.

Создание нового проекта

Используйте Cargo для создания проекта:

cargo new hello_rust
cd hello_rust

Откройте файл src/main.rs. Вы увидите:

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

Запустите программу:

cargo run

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

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

let x = 5; // неизменяемая
// x = 6; // Ошибка!

let mut y = 10; // изменяемая
y = 15; // OK

Типы данных

Rust поддерживает как скалярные, так и составные типы.

// Скалярные типы
let integer: i32 = 42;
let float: f64 = 3.14;
let boolean: bool = true;
let character: char = 'R';

// Составные типы
let tuple: (i32, f64, char) = (500, 6.4, 'R');
let array: [i32; 3] = [1, 2, 3];

Функции

Функции объявляются с помощью fn. Возвращаемое значение указывается после ->.

fn add(a: i32, b: i32) -> i32 {
    a + b // последнее выражение — возвращаемое значение
}

fn main() {
    let result = add(5, 7);
    println!("5 + 7 = {}", result);
}

Управляющие конструкции

let number = 6;

if number % 2 == 0 {
    println!("Чётное");
} else {
    println!("Нечётное");
}

// Циклы
for i in 0..5 {
    println!("i = {}", i);
}

let mut counter = 0;
while counter < 3 {
    println!("counter = {}", counter);
    counter += 1;
}

3. Ключевые концепции: владение, заимствование и lifetimes

Самое сложное для новичков — система владения (ownership). Она гарантирует безопасность памяти без сборщика мусора.

Владение (Ownership)

Каждое значение в Rust имеет ровно одного владельца. При присваивании или передаче в функцию владение перемещается.

let s1 = String::from("hello");
let s2 = s1; // s1 больше недействителен
// println!("{}", s1); // Ошибка! s1 перемещён

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

Чтобы использовать значение без передачи владения, используйте ссылки.

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

fn main() {
    let s1 = String::from("hello");
    let len = calculate_length(&s1);
    println!("Длина '{}' равна {}", s1, len);
}

Ссылки бывают изменяемыми (&mut) и неизменяемыми. Правило: в одной области видимости может быть либо одна изменяемая ссылка, либо сколько угодно неизменяемых.

Время жизни (Lifetimes)

Lifetimes — это аннотации, которые помогают компилятору проверять, что ссылки не становятся висячими. На начальном этапе вы будете редко их писать вручную, но понимать их важно.

fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
    if x.len() > y.len() { x } else { y }
}

4. Где учить Rust в 2025 году: лучшие ресурсы

Чтобы не потеряться в море информации, вот проверенные источники.

Официальная документация

  • The Rust Book (The Rust Programming Language) — бесплатная книга, обязательна к прочтению.
  • Rust by Example — учитесь на примерах кода.
  • Rustlings — интерактивные упражнения прямо в терминале.

О

Блоги

Рекомендаций по книгам