Перейти к содержанию
Educora
Начальный14 мин1 / 10

Что такое Rust? Первая программа и Cargo

Узнай, зачем создан Rust и как он обеспечивает безопасность памяти без сборщика мусора, установи его через rustup и запусти первый проект с помощью Cargo.

Проверь себя
В этом уроке ты узнаешь
  • Рассказывать, как появился Rust и где он применяется
  • Сравнивать три подхода к управлению памятью: ручной, сборщик мусора и владение
  • Устанавливать Rust через rustup и пользоваться командами cargo new, cargo run и cargo build
  • Выводить текст и переменные с помощью макроса println!

Представь язык, который работает так же быстро, как C++, но не даёт ошибиться при работе с памятью: ошибку находит сам компилятор ещё до того, как программа упадёт. Инженеры Microsoft и Google сообщали, что около 70% серьёзных уязвимостей в их продуктах вызваны ошибками работы с памятью. Rust создан именно для решения этой проблемы и сегодня входит в число самых любимых языков программирования.

Коротко о Rust

Rust — язык системного программирования: код компилируется прямо в машинный код, без виртуальной машины и интерпретатора. У него три главных обещания: скорость (на уровне C и C++), безопасность памяти (висячие указатели, двойное освобождение памяти и гонки данных обнаруживаются при компиляции) и продуктивность (инструмент Cargo, понятные сообщения об ошибках и сильная система типов).

  1. 2006
    Личный проект

    Сотрудник Mozilla Грейдон Хоар начинает работать над Rust как над личным проектом.

  2. 2009
    Поддержка Mozilla

    Mozilla начинает официально спонсировать проект и развивает его для браузерных технологий.

  3. 2015
    Rust 1.0

    В мае выходит первая стабильная версия. С тех пор новая версия выходит каждые 6 недель.

  4. 2021
    Rust Foundation

    AWS, Google, Huawei, Microsoft и Mozilla создают независимый фонд для поддержки языка.

  5. 2022
    В ядре Linux

    В Linux 6.1 появляется начальная поддержка драйверов на Rust.

Где используется Rust?

  • Операционные системы — драйверы ядра Linux, некоторые компоненты Windows и новые части Android.
  • Браузеры — ряд частей Firefox, например движок Stylo, который вычисляет CSS-стили.
  • WebAssembly — код на Rust компилируется в WebAssembly и работает в браузере почти со скоростью машинного кода.
  • Утилиты командной строки — быстрые инструменты вроде ripgrep, fd и bat; поиск в редакторе VS Code работает именно на ripgrep.
  • Серверы и облака — виртуальные машины AWS Firecracker, высоконагруженные сервисы Cloudflare и Discord.

Безопасность памяти без сборщика мусора

Любая программа во время работы выделяет память и потом должна её вернуть. В C и C++ это делает программист вручную, и ошибка приводит к падению программы или к уязвимости. В Java, Python и Go сборщик мусора (garbage collector) в фоновом режиме убирает неиспользуемую память, но это стоит дополнительной памяти и времени. Rust выбрал третий путь — правила владения. Компилятор отслеживает, кому принадлежит каждое значение, и сам освобождает память ровно в нужный момент.

ПодходЯзыкиПлюсМинус
Ручное управлениеC, C++максимальная скорость и контрольутечки, висячие указатели
Сборщик мусораJava, C#, Python, Goудобно и безопаснопаузы, лишняя память
Владение и проверка заимствованийRustи скорость, и безопасностьпоначалу сложнее учить

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

  1. 1
    Скачай установщик

    В Windows скачай rustup-init.exe с сайта rustup.rs и запусти его. В macOS и Linux выполни в терминале команду curl, показанную ниже.

  2. 2
    Инструменты C++ в Windows

    В Windows для Rust нужен пакет Microsoft Visual Studio C++ Build Tools. Установщик сам предложит его поставить — соглашайся на стандартные параметры.

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

    Открой новый терминал и введи rustc --version и cargo --version. Обе команды должны показать номер версии.

  4. 4
    Периодически обновляй

    Команда rustup update обновляет Rust до последней стабильной версии.

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

# any OS: check the tools
rustc --version
cargo --version
rustup за один раз устанавливает компилятор (rustc), Cargo, форматировщик rustfmt, анализатор clippy и документацию стандартной библиотеки.

Первый проект с Cargo

Cargo — официальный инструмент сборки и менеджер пакетов Rust: он создаёт проекты, компилирует код, запускает программы и тесты, скачивает библиотеки. Новый проект создаёт команда cargo new:

Terminal
cargo new hello
cd hello
cargo run
Text
hello/
├── Cargo.toml
├── .gitignore
└── src/
    └── main.rs
Cargo.toml хранит имя, версию и зависимости проекта, а код находится в файле src/main.rs. Cargo также создаёт git-репозиторий.
Text
[package]
name = "hello"
version = "0.1.0"
edition = "2024"

[dependencies]
edition — редакция языка (2015, 2018, 2021, 2024). Новые проекты получают последнюю; код этого курса работает и в редакции 2021, и в 2024.
Rust
fn main() {
    println!("Hello, world!");
}
Ожидаемый результат
Hello, world!
  • fn main() — точка входа: выполнение программы начинается здесь.
  • println! — не функция, а макрос: в Rust макросы узнают по знаку ! в конце имени.
  • Текст пишется в двойных кавычках, а инструкция заканчивается ;. Для отступа используют 4 пробела.
Text
$ cargo run
   Compiling hello v0.1.0 (/home/aysel/hello)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.61s
     Running `target/debug/hello`
Hello, world!
cargo run сначала компилирует код (в папку target/debug), а затем запускает программу. Время на каждом компьютере будет своим.

Вывод переменных

В тексте println! пара {} — это заполнитель: вместо неё подставляется значение, указанное после запятой. Имя переменной можно написать прямо внутри скобок: {name}. Переменные создаются ключевым словом let — подробнее об этом в следующем уроке.

Rust
fn main() {
    let name = "Aysel";
    let year = 2015;
    println!("Hello, {name}!");
    println!("Rust 1.0 was released in {}.", year);
    println!("{} + {} = {}", 2, 3, 2 + 3);
}
Ожидаемый результат
Hello, Aysel!
Rust 1.0 was released in 2015.
2 + 3 = 5
КомандаЧто делает
cargo new nameсоздаёт новый проект
cargo runкомпилирует и запускает
cargo buildсобирает в target/debug
cargo build --releaseсобирает оптимизированную версию в target/release
cargo checkтолько проверяет ошибки, не создавая файл, — самая быстрая
cargo fmtформатирует код в официальном стиле
cargo clippyанализирует код и даёт советы
Не компилируется
fn main() {
    let name = 'Aysel';
    println("Hello, {name}!");
}
Правильно
fn main() {
    let name = "Aysel";
    println!("Hello, {name}!");
}
Слева две ошибки. Одинарные кавычки — только для одного символа (char), а текст пишется в двойных. Вызов println без ! даёт ошибку E0423, и компилятор подсказывает написать println!.

Главное

  • Rust — компилируемый системный язык, сочетающий скорость, безопасность памяти и продуктивность.
  • В Rust нет сборщика мусора: памятью управляют правила владения, которые проверяет компилятор.
  • rustup устанавливает и обновляет Rust; Cargo создаёт, собирает и запускает проекты и скачивает библиотеки.
  • println! — макрос; заполнители {} или {name} подставляют значения в текст.
  • Когда важна скорость, собирай оптимизированную версию через cargo build --release.

Проверь себя

Вопросов: 10. Каждый правильный ответ приносит XP.

1 / 10
Какая организация в 2009 году начала официально спонсировать разработку Rust?