Первый проект с Cargo
Создаём проект, разбираем структуру папок, запускаем первый код. После этого урока вы поймёте базовый рабочий цикл Cargo.
cargo new — создание проекта
Откройте терминал. Перейдите в папку, где хотите хранить проекты (например, домашняя папка или Documents). Выполните:
cargo new my_project
Cargo выведет:
Created binary (application) `my_project` package
Всё. Проект создан. Cargo сделал за вас:
- Создал папку
my_project/ - Написал конфигурационный файл
Cargo.toml - Создал папку
src/и положил туда стартовый файлmain.rs - Инициализировал git-репозиторий с
.gitignore
Структура папки проекта
my_project/
├── Cargo.toml ← описание проекта и зависимости
├── Cargo.lock ← точные версии зависимостей (появится после первой сборки)
├── .gitignore ← игнорирует папку target/
└── src/
└── main.rs ← ваш код
Cargo.toml — манифест проектаГлавный файл конфигурации. Описывает: название проекта, версию, зависимости. Как package.json в Node.js или pyproject.toml в Python.
[package]
name = "my_project" # название проекта
version = "0.1.0" # версия
edition = "2021" # версия языка Rust
[dependencies]
# сюда добавляются библиотеки
Cargo.lock — фиксация версийСоздаётся Cargo автоматически после первой сборки. Хранит точные версии всех зависимостей. Это гарантирует, что проект соберётся одинаково на любой машине. Файл генерируется Cargo — вручную его не редактируют. Для приложений — коммитьте в git. Для библиотек — добавьте в .gitignore.
src/main.rs — точка входаCargo кладёт сюда стартовый код:
fn main() {
println!("Hello, world!");
}
target/ — папка с артефактами сборки (появится после cargo build)Cargo кладёт сюда скомпилированный бинарник и промежуточные файлы. Эта папка не коммитится в git — поэтому Cargo сразу добавляет target/ в .gitignore. Папка может весить несколько гигабайт — Cargo кэширует много промежуточного результата. Удаляется командой cargo clean.
Три основные команды
cd my_project
cargo run
Cargo скомпилирует проект и сразу запустит. Вывод:
Compiling my_project v0.1.0 (/home/user/my_project)
Finished dev [unoptimized + debuginfo] target(s) in 0.62s
Running `target/debug/my_project`
Hello, world!
Вторая — сборка завершена, профиль
dev (без оптимизаций).Третья — Cargo запускает бинарник из
target/debug/.Последняя — вывод вашей программы.
cargo build
Компилирует, но не запускает. Бинарник окажется в target/debug/my_project (на Windows: .exe). Используйте когда нужно просто собрать проект, например для CI.
cargo build --release → бинарник в target/release/cargo check
Проверяет код на ошибки без создания бинарника. Работает в 2–5 раз быстрее cargo build. Используйте во время разработки, когда хотите быстро проверить правильность кода. Не создаёт никаких файлов в target/.
cargo checkВо время написания кода — быстрая проверка ошибокcargo runХочу запустить и увидеть результатcargo buildХочу собрать бинарник, не запускаяcargo build --releaseФинальная сборка для продакшенаcargo clean — очистка артефактов
cargo clean
Удаляет всю папку target/. Помогает когда: хотите освободить место на диске, нужна чистая сборка с нуля, возникли странные ошибки компиляции. После clean следующий cargo build займёт больше времени — всё пересобирается заново.
Задача
Условие
Выполните следующую последовательность действий. После каждого шага запишите что именно Cargo вывел в терминале.
- Создайте новый проект командой
cargo new cargo_practice - Перейдите в папку проекта:
cd cargo_practice - Выполните
cargo check— убедитесь, что ошибок нет - Выполните
cargo run— убедитесь, что выводитсяHello, world! - Откройте
Cargo.toml— найдите строкуnameи убедитесь, что там"cargo_practice" - Выполните
cargo build --release— найдите созданный бинарник вtarget/release/ - Выполните
cargo clean— убедитесь, что папкаtarget/удалилась
Решение
cargo new cargo_practice
cd cargo_practice
cargo check
cargo run
cat Cargo.toml # или открыть в редакторе
cargo build --release
ls target/release/ # на Windows: dir target\release\
cargo clean
ls # папки target/ больше нет
Ключевые наблюдения: после cargo run появилась папка target/debug/. После cargo build --release появилась target/release/. После cargo clean обе исчезли. cargo check — самый быстрый, не создаёт бинарников.
cargo new имя создаёт готовую структуру: Cargo.toml, src/main.rs, .gitignorecargo run = скомпилировать + запустить; cargo build = только скомпилироватьcargo check — самый быстрый способ найти ошибки, без создания бинарникаcargo build --release — для продакшена, с оптимизациямиcargo clean удаляет target/ и освобождает место