Ваш первый проект Cargo

RustBeginner
Практиковаться сейчас

Введение

Программы на Rust обычно организуют и запускают с помощью Cargo — инструмента Rust для управления проектами и их сборки. В этой лабораторной работе вы завершите небольшой проект Cargo в терминале Linux. Предварительный опыт работы с терминалом, редактором или Rust не требуется.

Вы научитесь переходить в папку проекта, редактировать исходный файл Rust с помощью nano, просить Cargo проверить код и запускать готовую программу. Лабораторная работа проверяет и исходный код, и точный вывод программы.

Перейдите в проект и отредактируйте исходный код

На этом шаге вы найдёте подготовленный проект и впервые внесёте небольшое изменение в Rust-код с помощью nano.

Терминал — это текстовая область, в которой вы вводите команды. Команда — это инструкция для компьютера. Сначала щёлкните внутри терминала, чтобы он получил фокус клавиатуры, введите следующую команду и нажмите Enter:

pwd

pwd означает print working directory — «вывести текущий рабочий каталог». Каталог — другое название папки. В выводе отображается папка, в которой вы сейчас находитесь; обычно это /home/labex.

Затем выведите список элементов в этой папке:

ls

ls означает list — «вывести список». Вы должны увидеть папку с именем project.

Используйте cd, что означает change directory — «сменить каталог», чтобы перейти в подготовленный проект Rust. Путь начинается с /, поэтому это абсолютный путь: он задаёт расположение от корня файловой системы, а не от текущего каталога.

cd /home/labex/project/hello-rust

При успешном выполнении cd терминал обычно ничего не выводит. Выведите содержимое проекта:

ls

Вы должны увидеть Cargo.toml и src. Cargo читает Cargo.toml, чтобы узнать имя пакета, его версию, редакцию Rust и зависимости. В каталоге src находятся исходные файлы Rust; эта программа начинается с файла src/main.rs.

Откройте исходный файл в nano — простом текстовом редакторе для терминала:

nano src/main.rs

src/main.rs — это относительный путь. Поскольку он не начинается с /, терминал ищет этот файл внутри текущего каталога /home/labex/project/hello-rust. Поэтому перед открытием файла важно сначала перейти в проект с помощью cd.

Файл появится в терминале. Перемещайте курсор клавишами со стрелками. Измените только пять символов подчёркивания, чтобы строка выглядела так:

    println!("Hello from LabEx!");

В нижней части окна nano символ ^ означает клавишу Ctrl. Сохраните файл с помощью Ctrl+O (удерживайте Ctrl и нажмите O), затем нажмите Enter, чтобы подтвердить имя файла. Выйдите из редактора с помощью Ctrl+X.

Снова откройте тот же файл, чтобы убедиться, что изменение сохранилось на диске:

nano src/main.rs

Убедитесь, что строка содержит Hello from LabEx!. Редактировать файл повторно не нужно, поэтому выйдите с помощью Ctrl+X. Повторное открытие сохранённого файла — полезная проверка, если вы не уверены, что изменение в редакторе сохранилось.

Выведите сохранённый файл, не открывая редактор повторно:

cat src/main.rs

cat выводит содержимое файла в терминале. В отличие от nano, эта команда только показывает файл и не открывает экран редактирования. Убедитесь, что вы видите Hello from LabEx! и что внутри сообщения нет символов подчёркивания.

Добавьте сообщение и проверьте код

На этом шаге вы разберётесь в небольшой программе, добавите одну строку и попросите Cargo проверить код на ошибки.

Терминал по-прежнему должен находиться в /home/labex/project/hello-rust. Если вы не уверены, команда pwd покажет текущий каталог. Снова откройте исходный файл:

nano src/main.rs

В программе используются несколько важных конструкций Rust:

  • fn main() определяет главную функцию, с которой начинается выполнение этой программы.
  • Открывающая и закрывающая фигурные скобки { и } ограничивают инструкции функции.
  • println! выводит строку текста. Символ ! показывает, что println! — это макрос Rust.
  • Текст между двойными кавычками — это строковый литерал.
  • Точка с запятой ; завершает эту инструкцию.

Переместите курсор в конец существующей строки println!, нажмите Enter и добавьте перед закрывающей фигурной скобкой вторую инструкцию:

    println!("I am learning Rust with Cargo.");

Теперь весь файл должен выглядеть так:

fn main() {
    println!("Hello from LabEx!");
    println!("I am learning Rust with Cargo.");
}

Сохраните файл с помощью Ctrl+O, нажмите Enter и выйдите с помощью Ctrl+X.

Теперь попросите Cargo проверить, может ли пакет скомпилироваться:

cargo check

cargo check анализирует код и сообщает об ошибках, не создавая итоговую исполняемую программу. Первая проверка может занять некоторое время. При успешном выполнении вывод заканчивается строкой, содержащей Finished.

Если Cargo сообщает об ошибке, сравните содержимое файла с полным примером. Обратите особое внимание на кавычки, круглые скобки, точки с запятой и фигурные скобки. Выполните nano src/main.rs, исправьте файл, сохраните его и снова запустите cargo check.

Запустите программу с помощью Cargo

На этом шаге вы соберёте и запустите проверенную программу на Rust.

Выполните следующую команду из каталога /home/labex/project/hello-rust:

cargo run

cargo run выполняет две связанные задачи: компилирует пакет в исполняемую программу, а затем запускает эту программу. Перед выводом самой программы Cargo может показать несколько строк о состоянии сборки.

Ближе к концу вывода вы должны увидеть две строки:

Hello from LabEx!
I am learning Rust with Cargo.

Запустите программу ещё раз, скрыв сообщения Cargo о состоянии:

cargo run --quiet

Параметр --quiet уменьшает объём собственного вывода Cargo, поэтому должны отображаться только две строки вашей программы. Теперь вы завершили основной рабочий процесс Cargo: редактирование, проверку и запуск.

Итоги

Вы перемещались по терминалу Linux, редактировали и сохраняли код Rust с помощью nano, познакомились с главной функцией и макросом println!, проверили пакет Cargo и запустили его. Освоенный цикл «редактирование — проверка — запуск» служит основой для дальнейших проектов на Rust.