5.13. Первая программа на Rust
Первая программа на Rust
Установка инструментов
Для работы с Rust требуется установка набора инструментов, известного как Rustup. Это официальный установщик и менеджер версий языка. Он автоматически загружает и настраивает всё необходимое: компилятор rustc, менеджер пакетов и зависимостей cargo, а также документацию.
Шаг 1. Скачивание и запуск установщика
Установка выполняется через командную строку. На большинстве Unix-подобных систем (Linux, macOS) достаточно выполнить одну команду в терминале:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Эта команда загружает скрипт установки с официального сайта и передаёт его интерпретатору оболочки. Скрипт спрашивает, какую конфигурацию выбрать. Рекомендуется оставить вариант по умолчанию — default host triple — и нажать Enter. Это установит стабильную версию Rust для текущей операционной системы и архитектуры.
На Windows процесс аналогичен. Следует скачать исполняемый файл rustup-init.exe с официального сайта и запустить его. Установщик предложит те же варианты, что и в Unix-версии.
Шаг 2. Обновление переменной окружения PATH
После завершения установки скрипт автоматически добавляет каталог ~/.cargo/bin в переменную окружения PATH. Это необходимо для того, чтобы команды rustc и cargo были доступны из любого места в терминале.
В некоторых случаях, особенно после установки в графической среде, может потребоваться перезапустить терминал или выполнить команду:
source "$HOME/.cargo/env"
Это загружает обновлённые настройки окружения в текущую сессию.
Шаг 3. Проверка установки
Чтобы убедиться, что всё работает корректно, следует проверить версии установленных компонентов:
rustc --version
cargo --version
Команды должны вывести информацию о версиях компилятора и менеджера пакетов. Например:
rustc 1.78.0 (9b00956e5 2024-04-29)
cargo 1.78.0 (54d8815d0 2024-04-23)
Наличие номеров версий подтверждает успешную установку.
Выбор интегрированной среды разработки
Rust не требует конкретной IDE, но использование специализированных инструментов значительно ускоряет разработку. Основной компонент, обеспечивающий поддержку языка в редакторах, — это rust-analyzer. Это сервер языка, реализующий протокол Language Server Protocol (LSP). Он предоставляет такие функции, как автодополнение, навигация по коду, подсветка ошибок в реальном времени, рефакторинг и быстрый просмотр типов.
Поддерживаемые редакторы
-
Visual Studio Code — наиболее популярный выбор. Для работы с Rust требуется установка расширения rust-analyzer из Marketplace. После установки расширение автоматически обнаруживает проекты Rust и активирует все возможности языкового сервера.
-
JetBrains IntelliJ IDEA / CLion / RustRover — мощные коммерческие IDE с отличной поддержкой Rust через плагин. Особенно рекомендуется RustRover, специализированная среда от JetBrains, созданная специально для Rust.
-
Vim / Neovim — для пользователей этих редакторов доступны плагины, такие как coc.nvim или nvim-lspconfig, которые интегрируют rust-analyzer.
-
Emacs — поддержка осуществляется через пакет lsp-mode и rust-mode.
Выбор редактора зависит от личных предпочтений и опыта. Для новичков рекомендуется начать с Visual Studio Code из-за простоты настройки и богатой экосистемы расширений.
Создание первого проекта
Rust использует Cargo как центральный инструмент управления проектами. Cargo отвечает за создание структуры проекта, компиляцию кода, управление зависимостями, запуск тестов и сборку дистрибутивов.
Шаг 1. Инициализация проекта
Откройте терминал и перейдите в каталог, где вы хотите создать проект. Выполните команду:
cargo new hello_rust
Эта команда создаёт новый каталог hello_rust со следующей структурой:
hello_rust/
├── Cargo.toml
└── src/
└── main.rs
Файл Cargo.toml — это манифест проекта. Он содержит метаданные: название, версию, зависимости, настройки сборки. По умолчанию он выглядит так:
[package]
name = "hello_rust"
version = "0.1.0"
edition = "2021"
[dependencies]
Раздел [package] описывает сам проект. Поле edition указывает, какую версию языка использовать. Rust сохраняет обратную совместимость через выпуски (editions), и 2021 — это актуальная стабильная версия на момент написания.
Каталог src содержит исходный код. Файл main.rs — точка входа в программу. Его содержимое по умолчанию:
fn main() {
println!("Hello, world!");
}
Это и есть первая программа на Rust.
Шаг 2. Анализ структуры программы
Программа состоит из одной функции — main. Это специальное имя, которое компилятор ищет как стартовую точку выполнения. Тело функции заключено в фигурные скобки {}.
Вызов println! — это макрос, а не обычная функция. Макросы в Rust обозначаются восклицательным знаком. Они позволяют генерировать код на этапе компиляции, что делает их мощным инструментом метапрограммирования. Макрос println! выводит текст в стандартный поток вывода (обычно терминал) и добавляет символ новой строки в конце.
Строка "Hello, world!" — это строковый литерал. В Rust строки по умолчанию имеют тип &str (срез строки), который является эффективной ссылкой на неизменяемую последовательность UTF-8 символов.
Каждое выражение в Rust завершается точкой с запятой, если оно не возвращает значение, предназначенное для использования в другом месте. В данном случае вызов println! ничего не возвращает, поэтому требует точки с запятой.
Компиляция и запуск программы
Cargo предоставляет удобные команды для сборки и выполнения проекта.
Шаг 1. Запуск в режиме разработки
Выполните в корне проекта:
cargo run
Эта команда автоматически компилирует проект и запускает полученный исполняемый файл. Вывод будет таким:
Compiling hello_rust v0.1.0 (/path/to/hello_rust)
Finished dev [unoptimized + debuginfo] target(s) in 0.35s
Running `target/debug/hello_rust`
Hello, world!
Cargo создаёт исполняемый файл в подкаталоге target/debug/. Режим сборки по умолчанию — dev — оптимизирован для скорости компиляции и включает отладочную информацию, что полезно при разработке.
Шаг 2. Запуск в режиме релиза
Когда программа готова к распространению, её собирают в режиме release:
cargo build --release
Этот режим включает все уровни оптимизации компилятора, что значительно увеличивает производительность, но замедляет саму сборку. Исполняемый файл помещается в target/release/.
Для запуска релизной версии:
cargo run --release
Шаг 3. Только компиляция
Если нужно только собрать программу без запуска, используется команда:
cargo build
или
cargo build --release
После этого можно запустить исполняемый файл напрямую:
./target/debug/hello_rust
(на Windows путь будет .\target\debug\hello_rust.exe)
Дальнейшие шаги и рекомендации
Первая программа — это отправная точка. Rust предоставляет богатую стандартную библиотеку и огромное количество внешних пакетов через реестр crates.io. Чтобы добавить зависимость, её описание помещают в раздел [dependencies] файла Cargo.toml. Например:
[dependencies]
rand = "0.8"
После этого Cargo автоматически скачает и скомпилирует указанную версию библиотеки при следующем запуске cargo build.
Также рекомендуется изучить встроенную документацию. Команда:
rustup doc
открывает локальную копию официальной документации в браузере. Это особенно полезно при отсутствии интернета или для быстрого поиска информации.