其中-F表示,我们只需要clap中的derive特性 。
文章插图
图片
上述流程中,我们使用的clap的版本是最新版,有些和大家用过的语法有区别的话,需要大家甄别 。
这里多说一嘴,如果对前端开发熟悉的同学是不是感觉到上述流程很熟悉 。当我们创建一个前端项目时,是不是会遇到下面的步骤 。
npm init yarn add xx
项目实现和前端开发类似,当我们把包下载到本地后,我们就需要在对应的入口文件中引入并执行 。在前端开发中我们一般挑选的是项目根目录下的index.js 。而对于Rust项目来讲,它的入口文件是src/mAIn.rs 。(作为二进制项目(Binary Projects)而言)use clap::Parser;#[derive(Parser)]#[command(version, about)]struct Cli {name: String}fn main() {let cli = Cli::parse();println!("Hello, {}!", cli.name);}
我们来简单解释一下上面的代码 。在前端开发中我们一般使用import/require进行第三方库的引入 , 而在Rust中我们使用use来导入第三方库clap中的Parser trait 。也就是说,通过use xx我们就可以使用clap中的特定功能 。也就是把对应的功能引入到该作用域内 。
定义了一个结构体 , 它使用 clap::Parser 的 derive 宏和command宏 , 并且只接受一个参数,即 name 。
#[derive(Parser)]/#[command(version, about)]不是Rust内置的宏,它们是由clap库自定义的过程宏(procedural macros) 。
Rust有两种类型的宏:
- 声明式宏(Declarative Macros):
它们主要用于元编程(metaprogramming),在编译期执行代码生成 。
- 过程宏(Procedural Macros):
- 这些是由外部crate定义的,在编译期间像函数一样被调用 。
- 它们可以用来实现自定义的代码生成、lint检查、trait派生,解析、操作和生成 AST等操作 。
文章插图
图片
#[command(version, about)]用于配置命令行应用程序的元数据 。
- version: 设置应用程序的版本信息 。
- about: 设置应用程序的简短描述 。这里的信息就是我们在Cargo.toml中配置的description的信息 。
文章插图
图片
总的来说,这段代码使用 clap 库定义了一个命令行应用程序,它接受一个名为 name 的字符串参数 。当运行这个应用程序时,它会打印出 "Hello, {name}" 。#[derive(Parser)] 和 #[command(...)] 这两个属性分别用于自动实现 Parser trait 和配置应用程序的元数据 。
当我们加载程序并使用 Cli::parse() 时,它将从 std::env::args 中获取参数(这个概念我们之前在环境变量:熟悉的陌生人有过介绍) 。
- 如果你尝试运行 cargo run front789,它应该会打印出 Hello, front789!
- 但如果尝试不添加任何额外值运行它,它将打印出帮助菜单 。Clap 在默认特性中包含了一个帮助功能,当输入的命令无效时会自动显示帮助菜单 。
#[derive(Parser,Debug)]#[command(version, about)]struct Cli {#[arg(default_value = https://www.isolves.com/it/cxkf/yy/Rust/2024-03-11/"front789")]name: String}
现在,尝试仅使用 cargo run 而不添加其他任何东西,它应该会打印出 Hello, front789! 。文章插图
图片
当然,我们也可以像在f_cli中一样为参数添加更多的配置,来增强我们的Cli 。
推荐阅读
- GitHub顶流"Web OS"——运行于浏览器的桌面操作系统、用户超100万、原生jQuery和JS编写
- 前端开始“锈化”?Vue团队开源JS打包工具:基于Rust、速度极快、尤雨溪主导
- 两年前端经验还不会手写Promise?
- Rust中的数据可视化指南
- 秦岚和迪丽热巴都在海边拍写真,一个苗条惊艳!一个丰腴成熟迷人
- 长得丑演技还烂,满脸写着“关系户”的演员们,谁的审美有问题?
- 线段比例尺怎么画,线段比例尺怎么改写成数值比例尺
- 端午节粽子发朋友圈文案 端午节粽子朋友圈文案怎么写
- 《青春环游记》制片人李佳临患癌,常熬夜到凌晨3点,已写好遗书!
- 读书:有没有和我一样,年初计划都写上减肥,而年底却增肥几斤