#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
/// 就是这里的内容
#[arg(short, long)]
name: String,
}
1
共 2 条评论, 1 页
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
/// 就是这里的内容
#[arg(short, long)]
name: String,
}
评论区
写评论没用过Parser
话说皮卡丘真博学
--
👇
Pikachu: clap用的是过程宏。derive类型的过程宏,其工作方式是获取下面整个struct的token stream,然后输出新的token stream追加在原始内容后面。而注释也是作为token stream的一部分传进去的。
如果还不知道token stream是什么的话,可以先粗糙地把它理解成字符串。
以下是一些资源:
dtolnay的proc macro workshop可以帮你更好地入门proc macro。
https://github.com/dtolnay/proc-macro-workshop
另外,如果你将来要写proc macro的话,下面这个网站把rust代码解析成AST,这可以帮助你更容易地理解。(它还支持更多的语言,你可以自己尝试)
https://astexplorer.net/
clap用的是过程宏。derive类型的过程宏,其工作方式是获取下面整个struct的token stream,然后输出新的token stream追加在原始内容后面。而注释也是作为token stream的一部分传进去的。
如果还不知道token stream是什么的话,可以先粗糙地把它理解成字符串。
以下是一些资源:
dtolnay的proc macro workshop可以帮你更好地入门proc macro。
https://github.com/dtolnay/proc-macro-workshop
另外,如果你将来要写proc macro的话,下面这个网站把rust代码解析成AST,这可以帮助你更容易地理解。(它还支持更多的语言,你可以自己尝试)
https://astexplorer.net/