Cargo представляет систему построения и управления пакетами в Rust. В большинстве случаев применение этой системы для компиляции программ более предпочтительно, чем использование одного компилятора rustc, поскольку Cargo выполняет кучу задач - выполняет построение программы, загружает и управляет внешними зависимостями - внешними библиотеками, от которых зависит работа приложения. Соответственно при написании более сложных программ на Rust, которые используют какие-то внешние библиотеки, использование Cargo позволит существенно упростить создание приложений.
При установке Rust вместе с ним устанавливается и Cargo. Чтобы проверить наличие cargo и его текущую версию, в командной строке/терминале необходимо выполнить команду:
cargo --version
Создадим простейший проект. Выберем для проектов какой-нибудь каталог на жестком диске. Например, в моем случае это каталог C:\rust.
И с помощью команды cd
перейдем в консоли/командной строке к этому каталогу:
cd c:\rust
Для создания нового проекта в cargo предназначена команда new. Допустим, наш проект будет называться hello. Так, для создания проекта выполним команду:
cargo new hello
После этого в папке c:\rust будет создан каталог hello, который будет содержать файлы проекта.
Перейдем в этот каталог командой cd:
cd hello
Что представляет проект Cargo, создаваемый по умолчанию:
Скрытая папка .git предназначена для работы с Git
Папка src предназначена для хранения файлов с исходным кодом. По умолчанию в ней уже есть один файл - main.rs со простейшим кодом:
fn main() { println!("Hello, world!"); }
Файл .gitignore также предназначен для работы с Git и устанавливает, какие папки и файлы не будут загружаться на git-репозиторий
Файл Cargo.toml представляет конфигурацию проекта Cargo. По умолчанию в моем случае он имеет следующий код:
[package] name = "hello" version = "0.1.0" authors = ["Eugene <metanit22@mail.ru>"] edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies]
По умолчанию он определяет ряд настроек. В каждом конкретном случае они могут отличаться. Так, секция [package] устанавливает данные пакета приложения. В частност, здесь определены следующие опции пакета:
name
— имя пакета
version
— версия пакета
authors
— авторы пакета
edition
— версия Rust
Также по умолчанию в файле определена секция [dependencies]. В данном случае он пуст. В этой секции определяются внешние библиотеки, используемые в проекте.
После того, как мы закончили работу с файлами проекта, его надо построить - создать исполняемый файл приложения. Для построения в Cargo определена команда build. Так, по умолчанию у нас уже есть файл main.rs, который содержит некоторый код. Выполним построение этого проекта:
cargo build
Эта команда создает исполняемый файл приложения в папке target/debug. То есть на Linux/MacOS это файл
target/debug/hello
, а на Windows - target\debug\hello.exe
. И после построения мы можем запустить этот файл.
На Linux/MacOS с помощью команды:
./target/debug/hello
На Windows с помощью команды:
.\target\debug\hello
Также Cargo предоставляет команду run, которая позволяет сразу построить проект и запустить созданный файл:
cargo run
Когда проект полностью готов, мы можем выполнить его построение с флагом --release
:
cargo build --release
В этом случае исполняемый файл приложения создается в папке target/release (target\release на Windows),
вместо target/debug
.