之前学习了Rust
中的Clap crate
, 前几天又接触了Rust
实现的一个命令行记录工具Atuin
, 他的命令行参数就是使用Clap
实现, 并且参数众多, 做了不同的分层. 今天就扒一扒Atuin
的实现方式, 加深一下对Clap
的理解.
下图是整理的Atuin部分命令配置:
首先观察紫色的这条线部分, 并结合前部在AtuinCmd
和client::Cmd
添加的subcommand
和flatten
可以知道, history
应该是最上层的命令, 这从帮助信息中可以看到. 再观察紫色框中的内容, 可以知道history
会有 start
, end
, list
, last
这些命令, 同时需要输入的参数是, command, id, cwd, session等.
再观察酒红色这一部分, 这里使用的是Parser
派生. 同时命令参数的类型是enum
, 没有附加数据.