当前位置: 首页 > news >正文

0264-CLAP-注解验证参数

环境

  • Time 2022-12-03
  • WSL-Ubuntu 22.04
  • CLAP 4.0.29

前言

说明

参考:https://docs.rs/clap/latest/clap/index.html

目标

使用注解来验证参数的值。

Cargo.toml

[package]
edition = "2021"
name = "game"
version = "1.0.0"[dependencies]
clap = {version = "4", features = ["derive"]}

main.rs

use std::ops::RangeInclusive;use clap::{Parser, ValueEnum};/// 命令行参数
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
struct Args {/// 编号#[arg(value_parser = clap::value_parser!(u8).range(0..=200))]number: u8,/// 性别#[arg(value_enum)]sex: Sex,/// 年龄#[arg(value_parser = age_in_range)]age: u8,
}#[derive(Clone, Debug, ValueEnum)]
enum Sex {Man,Woman,
}const AGE_RANGE: RangeInclusive<usize> = 0..=200;fn age_in_range(age: &str) -> Result<u8, String> {let age: usize = age.parse().map_err(|_| format!("`{}` isn't a number", age))?;if AGE_RANGE.contains(&age) {Ok(age as u8)} else {Err(format!("Age not in range {}-{}",AGE_RANGE.start(),AGE_RANGE.end()))}
}fn main() {let args = Args::parse();println!("编号是:{:?}", args.number);println!("性别是:{:?}", args.sex);println!("年龄是:{:?}", args.age);
}

查看帮助

root@jiangbo12490:~/git/game# cargo run -- -hCompiling game v1.0.0 (/root/git/game)Finished dev [unoptimized + debuginfo] target(s) in 0.54sRunning `target/debug/game -h`
命令行参数Usage: game <NUMBER> <SEX> <AGE>Arguments:<NUMBER>  编号<SEX>     性别 [possible values: man, woman]<AGE>     年龄Options:-h, --help     Print help information-V, --version  Print version information

使用

root@jiangbo12490:~/git/game# cargo run -- 1 man 44Finished dev [unoptimized + debuginfo] target(s) in 0.01sRunning `target/debug/game 1 man 44`
编号是:1
性别是:Man
年龄是:44

总结

使用注解来验证了参数的范围,自定义验证以及枚举类型的验证。

附录

http://www.rkmt.cn/news/28057.html

相关文章:

  • 0260-CLAP-编写测试函数
  • CSDN博客文章批量导出与文件名规范化实战
  • 0257-CLAP-校验参数范围
  • dls
  • 高压电缆生产厂家口碑榜:基于技术实力、客户服务及市场反馈的专业评估
  • 基于TMS320F28034的全桥LLC电源控制
  • 2025年10月ai优化推荐:主流榜单对比与避坑指南
  • QOJ#12181. abc
  • 行业配置策略
  • Kubernetes 主流网络插件的关键差异对比 - 详解
  • dokuwiki制作侧边栏
  • 广义串并联图学习笔记
  • windows启动zookeeper报错Unable to create data directory ..datalversion-2
  • 资源分享--豪氏象棋教程
  • 第08周 预习、实验及作业:Java GUI编程
  • redis-Sentinel
  • 【A】Sakura Tears
  • Datawhale 春训营新能源预测(数据处理)
  • AI股票预测分析报告 - 2025年10月23日
  • 2025年10月deepseek排名优化推荐:主流机构对比排行榜
  • 异常值检测算法学习
  • 取方案
  • Maven的使用(Leo)
  • 数字化实战:医疗器械行业售后工程师如何借CRM实现高效运维​
  • 2025年10月geo优化服务商推荐:知名机构评测列表
  • 卫星遥感技术在河湖监管中的应用
  • 基于Java+Springboot+Vue开发的民宿酒店客房预订管理系统源码+运行步骤
  • 推动教育质量,布谷鸟网络科技定制K12在线教育在线教育网校软件服务
  • 2025年10月geo优化公司推荐:主流口碑排行榜全解析
  • 2025年10月geo优化公司推荐:知名机构评测列表