如何让 clap 忽略结构中的特定字段?

How to make clap ignore a specific field in a struct?

我正在用 clap 构建我的 Rust CLI。

我有一个 struct,其中包含所有命令行选项。这个结构被传递给很多函数。

现在我想向该结构添加一个字段,但不将该字段显示为命令行参数。我不想只为单个字段传递额外的结构。

是否有一些 clap 语法允许 clap 忽略结构中的字段,并将其设置为默认值?

这是一个示例结构:

#[derive(Parser, Debug)]
pub struct AlignPairwiseParams {
  #[clap(long)]
  #[clap(default_value_t = AlignPairwiseParams::default().min_length)]
  pub min_length: usize,

  // I would like this field to be not surface through the CLI. How to do this?
  pub internal_use_only: bool,
}

是否存在类似 #[clap(ignore)] 的内容?

来自the derive reference

Arg Attributes

  • ...
  • skip [= <expr>]: Ignore this field, filling in with <expr>
    • Without <expr>: fills the field with Default::default()

所以#[clap(skip)].