O que é Clap?
Clap (Command Line Argument Parser) é um framework popular e poderoso para criar interfaces de linha de comando (CLI) em Rust. Ele permite que desenvolvedores definam facilmente argumentos, flags, subcomandos e gerem ajuda automaticamente.
Por que usar Clap?
Escrever um parser de argumentos manualmente é uma tarefa trabalhosa e propensa a erros. Clap cuida de toda a rotina: validação de tipos, verificação de parâmetros obrigatórios, geração de dicas e saída de help colorida. Graças aos derive-macros, o código se torna declarativo e conciso.
Instalação
Adicione ao Cargo.toml:
[dependencies]clap = { version = "4.5", features = ["derive"] }Funcionalidades principais
- Parsing automático de argumentos e flags
- Suporte a subcomandos aninhados (estilo git)
- Geração de ajuda e versão
- Validação de valores (intervalos, lista de valores possíveis)
- Autocompletar para bash/zsh/fish/powershell
- Saída de erros colorida
Exemplo de código
use clap::Parser;
#[derive(Parser)]#[command(name = "greet")]#[command(about = "Saudação ao usuário")]struct Cli { /// Nome do usuário name: String,
/// Número de repetições #[arg(short, long, default_value_t = 1)] count: u32,
/// Exibir em maiúsculas #[arg(short, long)] uppercase: bool,}
fn main() { let cli = Cli::parse(); for _ in 0..cli.count { let msg = format!("Olá, {}!", cli.name); if cli.uppercase { println!("{}", msg.to_uppercase()); } else { println!("{}", msg); } }}Quando usar Clap?
Use Clap se você estiver desenvolvendo:
- Utilitários de linha de comando (ex.: grep, sed, curl)
- Ferramentas para DevOps e CI/CD
- CLIs complexos com muitos subcomandos (como git ou cargo)
- Qualquer projeto em Rust que exija entrada do usuário via terminal
Clap é o padrão de facto para CLI em Rust. Ele combina máxima performance com facilidade de desenvolvimento.
Também na biblioteca
Frameworks CLI para TypeScript: visão geral completa e exemplos de uso
Tokens JWT em TypeScript: guia completo para trabalhar com JSON Web Tokens
Autorização e Autenticação em Java: Spring Security e JWT
tsx para TypeScript: guia completo com exemplos práticos