主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ
書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。
2022/03/15
clap crate で排他的なコマンドオプションを実装するときのメモ。
なんか直感的ではなくて悩んでしまったので。
例えば、 --is-interactive
と --name
, --description
の片方のペアのみを受け入れたい場合は下のようにします。
use clap::{ArgGroup, Parser};
#[derive(Parser)]
#[clap(group(ArgGroup::new("non-interactive")
.args(&["name", "description"])
.requires_all(&["name", "description"])
.multiple(true)
.conflicts_with("is-interactive"))
)]
pub struct Args {
#[clap(long)]
name: Option<String>,
#[clap(long)]
description: Option<String>,
#[clap(long = "is-interactive")]
is_interactive: bool,
}
こんな感じでする。
ということで、メモでしたー。