Введение: почему 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 отличное сообщество и документация. Вот что стоит изучить после основ:
- Книга "The Rust Programming Language" (официальная документация, доступна на русском). Это ваша библия. Прочитайте первые 10 глав.
- Rust By Example