Clap — мощный CLI фреймворк для Rust

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое Clap и зачем он нужен?

Clap (Command Line Argument Parser) — это один из самых популярных и мощных фреймворков для создания интерфейсов командной строки (CLI) на языке Rust. Он позволяет разработчикам быстро и удобно описывать аргументы, флаги, подкоманды и автоматически генерировать справку. Clap используется в таких известных проектах, как ripgrep, fd и bat. Благодаря строгой типизации Rust и макросам, Clap обеспечивает безопасность на этапе компиляции и избавляет от ручного парсинга строк.

Установка

Добавьте зависимость в Cargo.toml:

[dependencies]
clap = { version = "4.5", features = ["derive"] }

Флаг derive включает поддержку процедурных макросов — это самый удобный способ использования.

Основные функции

  • Декларативный парсинг — описание аргументов через структуры и атрибуты.
  • Автоматическая генерация справки (--help).
  • Поддержка подкоманд (например, git clone, git push).
  • Валидация типов — числа, строки, флаги, перечисления.
  • Bash/Zsh/Fish автодополнение.
  • Цветной вывод ошибок.

Пример кода на Rust

Создадим простой калькулятор с двумя режимами: сложение и вычитание.

use clap::Parser;

#[derive(Parser)]
#[command(name = "calc", version = "1.0", about = "Простой калькулятор")]
struct Cli {
    #[command(subcommand)]
    command: Commands,
}

#[derive(clap::Subcommand)]
enum Commands {
    /// Сложить два числа
    Add { a: f64, b: f64 },
    /// Вычесть b из a
    Sub { a: f64, b: f64 },
}

fn main() {
    let cli = Cli::parse();
    match cli.command {
        Commands::Add { a, b } => println!("Результат: {}", a + b),
        Commands::Sub { a, b } => println!("Результат: {}", a - b),
    }
}

Запуск: cargo run -- add 10 5 выведет Результат: 15.

Когда использовать

Clap идеально подходит для любых CLI-инструментов на Rust — от простых утилит до сложных многоуровневых приложений. Используйте его, если вам нужен надежный, документированный и быстрый парсер аргументов с минимальным количеством кода. Благодаря derive-макросам, вы получаете строгую типизацию и автогенерацию справки без boilerplate.

Если ваш проект требует высокой производительности (например, обработка логов в реальном времени) или сложной иерархии команд, Clap — лучший выбор. Он также поддерживает кастомные валидаторы и парсинг переменных окружения.

Заключение

Clap — это стандарт де-факто для CLI в экосистеме Rust. Он сочетает удобство Python-библиотек (argparse, click) с производительностью и безопасностью Rust. Начните с cargo add clap --features derive и создайте свой первый CLI за 5 минут.

Рекомендаций