Atuin中的Clap实现

本文探讨了Atuin中如何使用Clap库来实现命令行参数的复杂分层结构。通过分析Atuin的配置,我们可以看到Clap的`Command`、`Arg`和`SubCommand`等特性如何构建命令树。`SubCommand`用于提升子命令层级,而`Arg`则用于处理具体参数选项。此外,文章还提到了` clap::Parser`和`clap::ArgParser`特质的作用,前者解析命令行参数到用户定义的结构体,后者用于解析子命令到枚举。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前学习了Rust中的Clap crate, 前几天又接触了Rust实现的一个命令行记录工具Atuin, 他的命令行参数就是使用Clap实现, 并且参数众多, 做了不同的分层. 今天就扒一扒Atuin的实现方式, 加深一下对Clap的理解.

下图是整理的Atuin部分命令配置:

Atuin_Clap.png
首先观察紫色的这条线部分, 并结合前部在AtuinCmdclient::Cmd添加的subcommandflatten可以知道, history应该是最上层的命令, 这从帮助信息中可以看到. 再观察紫色框中的内容, 可以知道history会有 start, end, list, last这些命令, 同时需要输入的参数是, command, id, cwd, session等.

image.png
image.png

再观察酒红色这一部分, 这里使用的是Parser派生. 同时命令参数的类型是enum, 没有附加数据.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值