尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

0264-CLAP-注解验证参数

0264-CLAP-注解验证参数
📅 发布时间:2026/6/19 21:25:15

环境

  • 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

总结

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

附录

相关新闻

  • 0260-CLAP-编写测试函数
  • CSDN博客文章批量导出与文件名规范化实战
  • 0257-CLAP-校验参数范围

最新新闻

  • PostgreSQL 数据迁移实战手册:高效备份与恢复的进阶技巧
  • 掀起波澜: Elastic 被评为 Forrester Wave™ 《2026 年第二季度扩展检测与响应平台》中的强劲表现者
  • ArcGIS模型构建器批量处理NetCDF多维气象数据的实战指南
  • OBS直播教程 :OBS美颜从安装到使用完整教程
  • 3分钟掌握DLSS Swapper:一键智能切换DLSS版本,免费提升游戏性能30%
  • 2026年众智商学院SCMP在职人员备考笔记怎么做?复习方法和记忆技巧分享 - 众智商学院职业教育

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号