0264-CLAP-注解验证参数

news/2025/10/23 10:24:46/文章来源:https://www.cnblogs.com/jiangbo4444/p/19159766

环境

  • 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.mzph.cn/news/944027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

0263-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…

2025必看!平台型ITSM取代传统套装,成为企业ITSM选型新标杆

2025年市场多变,企业对ITSM产品的需求从流程固化转向敏捷响应。文章对比平台型与功能型ITSM平台的本质差异,前者以低代码引擎为核心,具高灵活性与开放性;后者功能固化,扩展性有限。同时给出战略性选型建议,强调匹…

2025 年车床生产厂家最新推荐榜,聚焦技术实力与市场口碑深度解析,助力企业精准选购优质设备斜轨 / 6140/6150/6180 数控车床厂家推荐

引言 在制造业转型升级的关键阶段,车床作为核心加工设备,其性能、精度与可靠性直接影响企业生产效率与产品质量。当前市场上,车床生产厂家数量众多,但技术水平、产品品质与服务能力参差不齐,部分企业面临技术研发…

0260-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" v…

实用指南:GelSight Modulus 视触觉3D轮廓仪助力航空航天精密检测

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

CSDN博客文章批量导出与文件名规范化实战

在日常技术积累中,将CSDN博客的技术文章批量导出并规范化管理,能有效构建个人知识库。本文将详细介绍如何通过Python脚本实现CSDN博客文章批量抓取与Markdown格式转换,再结合Shell命令完成文件名规范化,全程提供可…

2025 年加工中心厂家最新推荐榜,技术实力与市场口碑深度解析,助力企业精准选型160/1260/四轴/五轴/数控加工中心厂家推荐

引言 当前加工中心市场竞争激烈,厂商数量繁杂且产品质量、技术水平差异显著,汽车摩托车、工程机械、军工等行业企业在采购时,常面临不知如何筛选符合自身需求设备的困境。部分厂商技术研发薄弱,难以满足个性化加工…

0261-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 = &quo…

详细介绍:微算法科技(NASDAQ MLGO)使用基于深度学习的物理信息神经网络(PINN),增强区块链IoT网络交易中的入侵检测

详细介绍:微算法科技(NASDAQ MLGO)使用基于深度学习的物理信息神经网络(PINN),增强区块链IoT网络交易中的入侵检测2025-10-23 10:15 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important;…

2025 年新材料 / 机械 / 医药 / 化工 / 无效专利律师推荐,冯燕青团队:双证资质与全产业链知识产权服务解析

行业背景 在新材料、机械、医药、化工等技术密集型行业,知识产权已成为企业创新发展的核心保障。随着技术迭代加速与市场竞争加剧,专利确权纠纷、侵权诉讼、技术秘密保护等问题日益凸显,尤其医药领域专利纠纷因技术…

0257-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…

dls

dlsdef create_coefficient_csv_with_ratios(base_models, feature_cols, output_path, df, base_recipe_to_group, base_high_overlap ):"""生成包含系数、分组统计、共现组合和特征依赖的CSV新增参数…

0256-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 = &quo…

2025年10月空气净化器产品推荐:全价位段性能榜横向对比

入秋后,北方陆续进入供暖倒计时,南方也迎来装修季叠加雾霾反复,不少家庭把“换一台真正管用的空气净化器”提上日程。京东商智数据显示,2025年9月空气净化器搜索量环比上升42%,其中“甲醛CADR≥700”“母婴认证”…

NEBS / GR-63-CORE

NEBS / GR-63-CORENEBSA report https://cannontech.co.uk/wp-content/uploads/2019/06/Seismic-Cabinet-Download.pdfHOFFMAN-WPCS-Earthquake Environments-UKEN-2109.pdf https://www.nvent.com/sites/default/fi…

【验证码逆向专栏】某 SDN 验证码逆向分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁…

高压电缆生产厂家口碑榜:基于技术实力、客户服务及市场反馈的专业评估

高压电缆作为电力传输的核心组件,其质量直接关系到电网安全、能效和长期稳定性。随着基础设施建设和新能源项目的快速发展,市场对高压电缆的需求持续增长,厂家之间的竞争也日益激烈。本文基于行业调研、客户反馈及产…

oracle long转日期 和日期转long时间戳

oracle long转日期 和日期转long时间戳SELECT TO_DATE(1970-01-01 08:00:00, YYYY-MM-DD HH24:mi:ss) + (TO_NUMBER(1761015597082) / (24 * 60 * 60 * 1000)) AS converted_date FROM dual; --date转long示例 select…

国产DevSecOps工具崛起:安全与效率的双重革命

国产DevSecOps工具崛起:安全与效率的双重革命 在数字化转型浪潮席卷各行各业的今天,软件开发的安全性问题日益凸显。随着《网络安全法》《数据安全法》等法规的密集出台,中国企业正面临前所未有的安全合规压力。这一…

2025 年最新外墙涂料厂家推荐排行榜:聚焦优质产品与实力企业,助力建筑涂装高效选品

引言 当前建筑涂料市场中,外墙涂料作为建筑外观装饰与防护的核心材料,需求持续攀升,但行业乱象也让选购者倍感困扰。部分产品耐候性差、易褪色开裂,环保不达标含高甲醛与 VOC,且市场信息不对称,缺乏权威指引,导…