Rust отлично подходит для CLI-инструментов: высокая скорость, один бинарник без лишних зависимостей, строгая типизация и предсказуемое поведение. А библиотека clap стала фактическим стандартом для разбора аргументов командной строки.
Почему именно clap
- удобное описание команд, флагов и параметров
- автогенерация
--help - поддержка сабкоманд
- валидация аргументов «из коробки»
- derive-макросы, которые сильно сокращают код
Быстрый старт
Добавьте зависимость в Cargo.toml:
[dependencies]
clap = { version = "4", features = ["derive"] }
Простой пример
CLI, который принимает имя пользователя и число повторов:
use clap::Parser;
#[derive(Parser, Debug)]
#[command(name = "hello")]
#[command(about = "Простая CLI-утилита на Rust")]
struct Args {
#[arg(short, long)]
name: String,
#[arg(short, long, default_value_t = 1)]
count: u8,
}
fn main() {
let args = Args::parse();
for _ in 0..args.count {
println!("Привет, {}!", args.name);
}
}
Запуск:
cargo run -- --name Alice --count 3 cargo run -- -n Alice -c 3
Пример с флагом
Частый кейс — включение подробного режима:
use clap::Parser;
#[derive(Parser)]
struct Args {
#[arg(short, long)]
verbose: bool,
}
fn main() {
let args = Args::parse();
if args.verbose {
println!("Подробный режим включён");
}
}
Сабкоманды для реальных утилит
Так строят CLI наподобие git, docker, npm 📦
use clap::{Parser, Subcommand};
#[derive(Parser)]
struct Cli {
#[command(subcommand)]
command: Commands,
}
#[derive(Subcommand)]
enum Commands {
Add { name: String },
Remove { id: u32 },
}
fn main() {
let cli = Cli::parse();
match cli.command {
Commands::Add { name } => println!("Добавлен: {}", name),
Commands::Remove { id } => println!("Удалён ID: {}", id),
}
}
Практические советы
- Для простых утилит используйте
derive, а не ручную конфигурацию - Всегда добавляйте
aboutи понятные имена аргументов — это улучшает--help - Используйте
default_value_t, если нужен безопасный дефолт - Для сложных сценариев применяйте
subcommand - Проверяйте UX: короткие флаги, читаемые ошибки, логичные названия 🧩
Когда Rust + clap особенно хороши
- DevOps-скрипты и internal tools
- генераторы файлов и шаблонов
- обёртки над API
- CLI для автоматизации CI/CD 🚀
- утилиты, где важны скорость и надёжность
Итог: если нужен современный CLI с хорошим UX, clap закрывает почти всё — от простых флагов до многоуровневых команд. Для Rust-разработки это один из самых полезных инструментов в повседневной практике. ✅
Подборку полезных каналов про IT стоит сохранить в закладки — там часто публикуют практические материалы, разборы инструментов и кейсы из разработки.