Validar argumentos en Rust
clap puede exigir rangos, enumeraciones y combinaciones requeridas antes de que main corra.
use clap::{Parser, ValueEnum};
#[derive(Copy, Clone, Debug, ValueEnum)]
enum Theme {
Default,
Monokai,
Dracula,
}
#[derive(Parser, Debug)]
struct Cli {
#[arg(long, value_parser = 1..=3)]
stars: i64,
#[arg(long, value_enum, default_value_t = Theme::Default)]
theme: Theme,
#[arg(long, requires = "output")]
export: bool,
#[arg(long)]
output: Option<String>,
}
fn main() {
let cli = Cli::parse();
println!("{:?}", cli);
}
Cómo funciona
value_parsercon un rango rechaza los números fuera de límite.- Un
ValueEnumrestringe un flag a valores conocidos. requiresyconflicts_withexpresan los emparejamientos.
Palabras clave y builtins usados aquí
DefaultOptionStringboolenumfni64letstructuse
El intento, en números
- Líneas
- 28
- Caracteres a escribir
- 425
- Tokens
- 89
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 53 segundos.
Paso 5 de 5 en Argumentos; paso 5 de 12 en Herramientas CLI y clientes HTTP.