/
germanubis
/
clap
Обзор
Документация
Войти
/
germanubis
/
clap
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/tutorial_builder/04_02_validate.rs
36 строк
951 B
Yuri Astrakhan
chore: Inline simple non-mixed format args
04 май 2023, 22:58
04 май 2023, 22:58
d0302c5
Код
Авторство
О чём код?
use std::ops::RangeInclusive; use clap::{arg, command}; fn main() { let matches = command!() // requires `cargo` feature .arg( arg!(<PORT>) .help("Network port to use") .value_parser(port_in_range), ) .get_matches(); // Note, it's safe to call unwrap() because the arg is required let port: u16 = *matches .get_one::<u16>("PORT") .expect("'PORT' is required and parsing will fail if its missing"); println!("PORT = {port}"); } const PORT_RANGE: RangeInclusive<usize> = 1..=65535; fn port_in_range(s: &str) -> Result<u16, String> { let port: usize = s .parse() .map_err(|_| format!("`{s}` isn't a port number"))?; if PORT_RANGE.contains(&port) { Ok(port as u16) } else { Err(format!( "port not in range {}-{}", PORT_RANGE.start(), PORT_RANGE.end() )) } }