rust
clap

Rustのコマンドライン解析ライブラリ『Clap』 〜一覧編〜

Clapとは

コマンドラインの引数解析を行うRust用のライブラリです。
位置引数、フラグ、オプション、サブコマンドなどの解析が可能で、それぞれ細かい設定も指定することができる多機能さが特徴です。

この記事について

Clapについてざっと確認したので個人的な備忘的意味合いも含め、各種設定についてまとめてあります。
ここでは各設定の一覧のみ記載しています。導入方法や簡単な使い方については別記事で導入編をアップしていますのでこちらを参考にして下さい。

確認した環境やバージョンは以下の通りです。

  • MacOSX 10.11.6 (El Capitan)
  • rust 1.5.1
  • clap 2.20.3

コマンドライン定義メソッド一覧

App

コマンドラインApplicationを作成するstruct。

new

Appインスタンスを生成するメソッド。引数は作成するApp名(バイナリと同名でなくてもよい)。

version

アプリケーションのバージョン番号を定義するメソッド。引数はバージョン番号。

Tips: crate_versionマクロでCargo.tomlの値を参照して設定させることもできる。

author

作者名を定義するメソッド。引数は作者名。

Tips: crate_authorsマクロでCargo.tomlの値を参照して設定させることもできる。

about

アプリケーションの説明文を定義するメソッド。引数は説明文。

Tips: crate_descriptionマクロでCargo.tomlの値を参照して設定させることもできる。

usage

USAGEを定義するメソッド。引数はUSAGE。

Note: USAGEは通常は自動的に生成される。これを使用するとそのUSAGEを上書きすることになる。

help

ヘルプ全文を定義するメソッド。引数はヘルプ全文。

Note: ヘルプ文言は通常は自動的に生成される。これを使用するとその文言を上書きすることになる。

set_term_width

ヘルプ情報を折り返す端末幅を定義するメソッド。引数は端末幅。デフォルトは120(0は折り返しなし)。
この設定はグローバルに影響する。

Note: サブコマンド定義より前に定義される必要がある。

max_term_width

ヘルプ情報を折り返す最大端末幅を定義するメソッド。引数は最大端末幅。0は折り返しなし。
この設定はグローバルに影響する。

Note: サブコマンド定義より前に定義される必要がある。

template

ヘルプ情報の出力テンプレートを定義するメソッド。引数はテンプレート構文。
テンプレート構文には以下のタグを利用することができる(タグは{}で囲う)。

Tag Description
bin newメソッドまたはbin_nameメソッドで定義した名称
version バージョン情報
author 作成者情報
about aboutメソッドで定義した文言
usage USAGE文言
before-help before_helpで定義した文言
after-help after_helpで定義した文言
flags 値を持たないオプション引数群
options 値を持つオプション引数群
positionals 位置引数群
subcommands サブコマンド群
all-args flags、options、positionals、subcommandsを全てヘッダ付きで表示する
unified オプション引数群(flagsとoptionsを統合して出力)

before_help

自動生成されるヘルプ情報より前に表示する文言を定義するメソッド。引数は文言。

after_help

自動生成されるヘルプ情報より後に表示する文言を定義するメソッド。引数は文言。

help_short

自動で設定されるヘルプのショートコマンド-hhを任意の文字に置き換えるメソッド。引数は置き換える文字。

version_short

自動で設定されるバージョンのショートコマンド-VVを任意の文字に置き換えるメソッド。引数は置き換える文字。

setting

有効にするAppSettingsを設定するメソッド。引数は有効にしたいAppSettings

settings

有効にするAppSettingsを複数設定できるメソッド。引数は有効にしたいAppSettingsの配列。
これはsettingを複数回定義することと同義。

unset_setting

無効にするAppSettingsを設定するメソッド。引数は無効にしたいAppSettings

unset_settings

無効にするAppSettingsを複数設定できるメソッド。引数は無効にしたいAppSettingsの配列。
これはunset_settingを複数回定義することと同義。

global_setting

グローバルに有効にするAppSettingsを設定するメソッド。引数は有効にしたいAppSettings
子サブコマンドにも設定が適用される。

Note: 親方向へは適用されない。

global_settings

グローバルに有効にするAppSettingsを複数設定できるメソッド。引数は有効にしたいAppSettingsの配列。
これはglobal_settingを複数回定義することと同義。

arg

Argを定義するメソッド。引数はArgインスタンス。

args

Argを複数定義できるメソッド。引数はArgインスタンスの配列。
これはargを複数回定義することと同義。

arg_from_usage

Arg::from_usageのシンタックスで引数を定義するメソッド。引数はシンタックス文字列。

Note: シンタックスで定義できる設定しか定義できない。

args_from_usage

Arg::from_usageのシンタックスで引数を複数定義できるメソッド。引数はシンタックス文字列(1行に1引数)。
これはarg_from_usageを複数回定義することと同義。

group

ArgGroupを定義するメソッド。引数はArgGroupインスタンス。

groups

ArgGroupを複数定義できるメソッド。引数はArgGroupインスタンスの配列。
これはgroupを複数回定義することと同義。

subcommand

SubCommandを定義するメソッド。引数はSubCommandインスタンス。

subcommands

SubCommandを複数定義できるメソッド。引数はSubCommandインスタンスの配列。
これはsubcommandsを複数回定義することと同義。

alias

サブコマンドに別名を定義するメソッド。引数は別名。
この別名はヘルプに表示されない。

aliases

サブコマンドに別名を複数定義できるメソッド。引数は別名の配列。
これはaliasを複数回定義することと同義。

visible_alias

サブコマンドに別名を定義するメソッド。引数は別名。
この別名はヘルプに表示される。

visible_aliases

サブコマンドに別名を複数定義できるメソッド。引数は別名の配列。
これはvisible_aliasを複数回定義することと同義。

display_order

ヘルプに表示されるサブコマンドの表示順を定義するメソッド。引数は優先度を表す正の整数(0に近いほど上位に表示される)。デフォルトは999。

Arg

コマンドラインの引数を表現するstruct。

with_name

Argインスタンスを生成するメソッド。引数は引数名。

Note: 引数名は全てのArgに対してユニークでなければならない。

from_usage

シンタックス文字列からArgインスタンスを生成するメソッド。引数はシンタックス文字列。
構文は以下。

[explicit name] [short] [long] [value names] [help string]
  • explicit name

明示的に名称を定義する。
[]で囲った場合はオプション、<>で囲った場合は必須を意味する。定義の後に...を付けた場合multipleであることを意味する。

Note: 省略された場合はlong->short->valuesの順を優先順として、指定された名称を引数の名称とする。

  • short

ショートコマンドを定義する。
定義の後に...を付けた場合multipleであることを意味する。

  • long

ロングコマンドを定義する。
定義の後に...を付けた場合multipleであることを意味する。

  • values

引数の値を定義する。
explicit name、short、longいずれかの後にスペースまたは=を付けて定義する。[]または<>で囲わなければならない。[]で囲った場合はオプション、<>で囲った場合は必須を意味する(ただし、explicit nameが定義されている場合はそちらの定義優先する)。定義の後に...を付けた場合multipleであることを意味する。

  • help string

ヘルプ情報を定義する。
''で囲って記述する。

short

ショートコマンドを定義するメソッド。引数はショートコマンド名(単文字)。

Note: 文字列を渡してもエラーにはならず、最初の1文字が適用される)。

long

ロングコマンドを定義するメソッド。引数はロングコマンド名。

alias

ロングコマンドの別名を定義するメソッド。引数は別名。
この別名はヘルプに表示されない。

Note: longを定義していない場合は無効。

aliases

ロングコマンドの別名を複数定義できるメソッド。引数は別名の配列。
これはaliasを複数回定義することと同義。

visible_alias

ロングコマンドの別名を定義するメソッド。引数は別名。
この別名はヘルプに表示される。

Note: longを定義していない場合は無効。

visible_aliases

ロングコマンドの別名を複数定義できるメソッド。引数は別名の配列。
これはvisible_aliasを複数回定義することと同義。

help

ヘルプ文言を定義するメソッド。引数はヘルプ文言。

hidden

ヘルプへの出力可否を定義するメソッド。引数はboolean。
true: 出力しない、fales:出力する(デフォルト)

next_line_help

ヘルプ文言を引数表示の次の行に表示させるメソッド。引数はboolean。
true: 次行に出力、fales:横に出力(デフォルト)

display_order

ヘルプに表示される引数の表示順を定義するメソッド。引数は優先度を表す正の整数。
優先度は0に近いほど上位に表示される。デフォルトは999。

takes_value

引数が値を取ることを定義するメソッド。引数はboolean。
true: 値あり(位置引数の場合のデフォルト)、false: 値なし(オプション引数の場合のデフォルト)

value_name

ヘルプに表示する引数の値の名称を定義するメソッド。引数は値の名称。

Note: 暗黙的にtakes_valueにtrueが定義される。

value_names

ヘルプに表示する引数の値の名称を複数定義できるメソッド。引数は値の名称の配列。
これはvalue_nameを複数回定義することと同義。

Note: 暗黙的にtakes_valueにtrueが定義される。また、複数定義した場合は暗黙的にnumber_of_valuesに定義数が定義される。

default_value

デフォルトの値を定義するメソッド。引数はデフォルト値。

Note: 暗黙的にtakes_valueにtrueが定義される。

default_value_if

デフォルトの値を設定するための別の引数の条件を定義するメソッド。第1引数は別の引数名、第2引数は第1引数が取る値のオプショナル(第1引数が値を持たない場合はNone)、第3引数はデフォルト値。
定義した別の引数が指定され、その値が定義した値だったならば(定義した値がNoneなら値の判定は無視される)、デフォルト値が使用される。

Note: 暗黙的にtakes_valueにtrueが定義される。

default_value_ifs

デフォルトの値を設定するための別の引数の条件を複数定義できるメソッド。引数はdefault_value_ifと同じ要素を持つタプルの配列。
定義した全ての条件が満たされたならば、最初に定義されたデフォルト値が使用される。
これはdefault_value_ifを複数回定義することと同義。

empty_values

値として空文字(""'')を許可するメソッド。引数はbooleanを。
true: 空文字使用可能(デフォルト)、false: 使用不可。

Note: 暗黙的にtakes_valueにtrueが定義される。

possible_value

指定可能な値を定義するメソッド。引数は指定可能な値。

possible_values

指定可能な値を複数定義できるメソッド。引数は指定可能な値の配列。
これはpossible_valueを複数回定義することと同義。

hide_possible_values

possible_valueで定義された指定可能値をヘルプに出力させないメソッド。引数はboolean。
true: 非表示、false: 表示(デフォルト)

allow_hyphen_values

値が-から始まることを許可するメソッド。引数はboolean。
true: 許可、false: 拒否(デフォルト)

index

位置引数の順序を定義するメソッド。引数はインデックス番号。
全ての位置引数に定義されなかった場合、定義順になる。

Note: 定義された場合、shortやlongは無視され、位置引数となる。また、インデックスが連番になっていない場合や定義されていないArgが混在している場合はパニックを起こす。

required

この引数を必須に定義するメソッド。引数はboolean。
true: 必須、fales:任意(デフォルト)

required_if

この引数が必須となる別の引数の条件を定義するメソッド。第1引数は別の引数名、第2引数はその引数が取る値。
定義した別の引数が指定され、さらにその値が定義した値であるならば、この引数は必須となる。

required_ifs

この引数が必須となる別の引数の条件を複数定義できるメソッド。引数はタプル(別の引数名、その引数が取る値)の配列。
これはrequired_ifを複数回定義することと同義。

required_unless

この引数が必須でなくなる別の引数を定義するメソッド。引数は別の引数名。
定義した別の引数が指定されいるならば、この引数は必須ではなくなる。

required_unless_one

この引数が必須でなくなる別の引数を複数定義できるメソッド。引数は別の引数名の配列。
定義した別の引数群のうちどれか1つでも指定されているならば、この引数は必須ではなくなる。
これはrequired_unlessを複数回定義することと同義。

required_unless_all

この引数が必須でなくなる別の引数を複数定義できるメソッド。引数は別の引数名の配列。
定義した別の引数群が全て指定されているならば、この引数は必須ではなくなる。

requires

この引数を指定した場合に必須となる別の引数を定義するメソッド。引数は別の引数名。
この引数が指定されているならば、定義した別の引数は必須となる。

requires_all

この引数を指定した場合に必須となる別の引数を複数定義できるメソッド。引数は引数名の配列。
この引数が指定されているならば、定義した別の引数群は全て必須となる。
これはrequiresを複数回定義することと同義。

requires_if

この引数の値に応じて必須となる別の引数を定義するメソッド。第1引数は条件となる値、第2引数は別の引数名。
この引数の値が定義した値であるならば、定義した別の引数は必須となる。

requires_ifs

この引数の値に応じて必須となる別の引数を複数定義できるメソッド。引数はタプル(条件となる値、別の引数名)の配列。
これはrequires_ifを複数回定義することと同義。

conflicts_with

この引数と競合する別の引数を定義するメソッド。引数は別の引数名。
この引数が指定されているならば、定義した別の引数は指定できない(逆も同様)。

Note: 競合ルールは必須ルールよりも優先される。
Tips: 2つの引数を競合関係にする場合、片方のみconflicts_withを定義するだけでよい。

conflicts_with_all

この引数と競合する別の引数を複数定義できるメソッド。引数は引数名の配列。
これはconflicts_withを複数回定義することと同義。

overrides_with

この引数と互いにオーバーライドできる別の引数を定義するメソッド。引数は別の引数名。
この引数と定義した別の引数が共に指定されているならば、後に指定した引数が有効となり、前に指定した引数は無効化される。

Note: オーバーライドルールは競合ルールと必須ルールよりも優先される。
Tips: 2つの引数を競合関係にする場合、片方のみoverrides_withを定義するだけでよい。

overrides_with_all

この引数と互いにオーバーライドできる別の引数を複数定義するメソッド。引数は別の引数名の配列。
これはoverrides_withを複数回定義することと同義。

multiple

この引数が複数回指定することを許可するメソッド。引数はboolean。
true: 許可、false: 拒否(デフォルト)
-ddd-d -d -d-d val1 val2-d val1 -d val2といった指定が可能になる。

Note: 値を持つオプションの場合は指定方法の違いによって、ArgMatchesoccurrences_ofの結果が異なる。-d val1 -d val2occurrences_ofの結果は2になるが、-d val1 val21になる。

number_of_values

値の数を定義するメソッド。引数は値の数。
引数に指定した値の数が定義数に満たないならば、エラーとなる。

Note: 暗黙的にmultipleにtrueが定義される。

max_values

値の最大数を定義するメソッド。引数は最大数。
引数に指定した値の数が定義数を超えたならば、エラーとなる。

Note: オプション引数の場合、multipleは暗黙的にtrueを定義しない。それは-o val1 val2と指定するならばmultipleの設定が必要ない為であり、-o val1 -o val2と指定することも可能にしたい場合は明示的にmultipleにtrueを定義しなければならない。位置引数の場合は暗黙的にmultipleにtrueが定義される。

min_values

値の最小数を定義するメソッド。引数は最小数。
引数に指定した値の数が定義数以上指定されないならば、エラーとなる。

Note: max_valuesと同じ理由により、オプション引数の場合はmultipleは暗黙的にtrueを定義しない。位置引数の場合は暗黙的にmultipleにtrueが定義される。

use_delimiter

値に区切り文字の使用を許可するメソッド。引数はboolean。
true: 使用可能、false: 使用不可(デフォルト)
-d val1,val2,val3のように指定することが可能になる。これは-d val1 val2 val3と同じ意味。

require_delimiter

値に区切り文字の使用を強制するメソッド。引数はboolean。
true: 強制、false: 任意(デフォルト)
複数の値を指定する場合、区切り文字を使用しなければならない。-d val1 val2 val3のような指定はできなくなる。

value_delimiter

値の区切り文字を定義するメソッド。引数は区切り文字。デフォルトは,

Note: 暗黙的にuse_delimiterにtrue、takes_valueにtrueが定義される。

value_terminator

値の解析停止文字を定義するメソッド。引数は解析停止文字。
;を定義したならば、-o val1 val2 ;とすることで-oオプションの値を明示的に示すことができる。

group

引数が属するArgGroupを定義するメソッド。引数はグループ名。
同じグループ名で関連付けられた引数同士は同時に指定できなくなる。

groups

引数が属するArgGroupを複数定義できるメソッド。引数はグループ名の配列。
これはgroupを複数回定義することと同義。

global

この引数の定義を全ての子サブコマンドに適用させるメソッド。引数はboolean。
true: サブコマンドに適用する、false: 適用しない(デフォルト)

Note: 親方向へは適用されない。

validator

カスタムバリデーションを定義するメソッド。引数はバリデートする関数(Fn(String) -> Result<(), String> + 'static)。

set

有効にするArgSettingsを設定するメソッド。引数は有効にしたいArgSettings
.set(ArgSettings::Grobal).global(true)は同義。

unset

無効にするArgSettingsを設定するメソッド。引数は無効にしたいArgSettings.set(ArgSettings::Grobal).global(false)は同義。

ArgGroup

引数グループを表現するstruct。

with_name

ArgGroupインスタンスを生成するメソッド。引数はグループ名。

Note: グループ名は全てのグループに対してユニークでなければならない。

arg

引数グループに属する引数を定義するメソッド。引数は引数名。

args

引数グループに属する引数を複数定義できるメソッド。引数は引数名の配列。
これはargを複数回定義することと同義。

multiple

引数グループに属する引数を複数指定可能にするメソッド。引数はboolean。
true: 複数指定可能、false: 複数指定不可(デフォルト)

required

この引数グループのうち、1つ以上の設定を必須にするメソッド。引数はboolean。
true: 必須、false: 任意(デフォルト)

requires

この引数グループに属する引数を指定した場合に必須となる別の引数を定義するメソッド。引数は別の引数名。
この引数グループに属する引数が指定されているならば、定義した別の引数は必須となる。

requires_all

この引数グループに属する引数を指定した場合に必須となる別の引数を複数定義できるメソッド。引数は別の引数名の配列。
この引数グループに属する引数が指定されているならば、定義した別の引数群は全て必須となる。
これはrequiresを複数回定義することと同義。

conflicts_with

この引数グループと競合する別の引数を定義するメソッド。引数は別の引数名。
この引数グループに属する引数が指定されているならば、定義した別の引数は指定できない(逆も同様)。

conflicts_with_all

この引数グループと競合する別の引数を複数定義できるメソッド。引数は引数名の配列。
これはconflicts_withを複数回定義することと同義。

SubCommand

サブコマンドを表現するstruct。
生成されるインスタンスはAppインスタンスになる。

with_name

Appインスタンスを生成するメソッド。引数はサブコマンド名。

AppSettings

アプリケーションレベルの設定要素を持つEnum。

AllowInvalidUtf8

無効なUTF-8コードポイントをエラーにしない設定。デフォルトは有効。

StrictUtf8

無効なUTF-8コードポイントが使用された場合にエラーにする設定。デフォルトは無効。

Note: windows以外で動作する。

AllowLeadingHyphen

位置引数やオプション引数の値に-で始まる文字列の指定を許可する設定。デフォルトは無効。

AllowNegativeNumbers

位置引数やオプション引数の値に負の数値の指定を許可する設定。デフォルトは無効。
AllowLeadingHyphenと異なり、-始まりを許可する文字列は数値のみに限定。

AllowMissingPositional

最後から2番目の位置引数がオプショナルで、最後の位置引数が必須のコマンド体系を許可する設定。デフォルトは無効。
最後に指定された引数を必須の位置引数として処理され、その前のオプショナルな引数が省略可能になる。

AllowExternalSubcommands

予期しない位置引数をサブコマンドとして解釈することを許可する設定。デフォルトは無効。

Note: サブコマンドの定義自体がなくてもエラーにならなくなる。

ArgsNegateSubcommands

サブコマンドの前に有効な引数の使用を拒否する設定。デフォルトは無効。

ArgRequiredElseHelp

引数を1つも指定されなかった場合にヘルプを表示する設定。デフォルトは無効。

Note: Arg::default_valueが設定されている場合、この設定は無効になる。

SubcommandRequiredElseHelp

サブコマンドが指定されない場合、常にヘルプを表示する設定。デフォルトは無効。

Note: 親コマンドが存在し、それを指定されたとしても無視してヘルプを表示するようになる。

ColoredHelp

色付けされたヘルプを表示する設定。デフォルトは無効。

Note: この設定はUnix、Linux、OSXでのみ設定可能。

ColorAuto

コンソールまたはTTY接続の場合のみ出力を色付けする設定。デフォルトは有効。

ColorAlways

コンソール/TTY接続に関わらず出力を色付けする設定。デフォルトは無効。

ColorNever

コンソール/TTY接続に関わらず出力を色付けしない設定。デフォルトは無効。

DontCollapseArgsInUsage

USAGEにおける位置引数をARGSに自動的にまとめさせない設定。デフォルトは無効。

TrailingVarArg

最後の位置引数がmultipleの場合、それより後に別の引数を定義させない(位置引数のmultipleな値として扱われる)設定。デフォルトは無効。

DontDelimitTrailingValues

TrailingVarArgを設定している場合、最後の位置引数に区切り文字を使用させない設定。デフォルトは無効。

DisableHelpSubcommand

通常自動的に作られるhelpサブコマンドを作成させない設定。デフォルトは無効(自動生成される)。

DisableVersion

通常自動的に作られる-V,--versionオプションを作成させない設定。デフォルトは無効(自動生成される)。

DeriveDisplayOrder

ヘルプに表示される引数やサブコマンドの順序を定義順にする設定。デフォルトは無効(アルファベット順)。

GlobalVersion

全ての子サブコマンドに対してトップレベルのバージョンを使用させる設定。デフォルトは無効。

Hidden

サブコマンドをヘルプに表示しない設定。デフォルトは無効。
これはサブコマンドで設定する。

HidePossibleValuesInHelp

Arg::possible_valueで定義された使用可能値をヘルプに表示しない設定。デフォルトは無効。

NoBinaryName

最初の引数がバイナリ名でないようする設定。デフォルトは無効。

NextLineHelp

ヘルプを引数表示の次の行に表示させる設定。デフォルトは無効。

PropagateGlobalValuesDown

グローバルな引数をサブコマンドにも伝搬させる設定。デフォルトは無効。
Arg::globalが定義された引数が指定されており、さらに子サブコマンドが指定されているならば、そのサブコマンドにもグローバル引数の指定を伝搬させる設定。デフォルトは無効。

SubcommandsNegateReqs

サブコマンドを使用した場合、親コマンドの全ての条件を無効にする設定。デフォルトは無効。

SubcommandRequired

サブコマンドの指定を必須にする設定。デフォルトは無効。

UnifiedHelpMessage

ヘルプのFLAGSOPTIONSに統一して表示させる設定。デフォルトは無効(FLAGSOPTIONSは分かれて表示させる)。

VersionlessSubcommands

全てのサブコマンドでバージョンを表示するコマンドを無効にする設定。デフォルトは無効。
これを設定した場合にサブコマンドで-V--versionを使用するとエラーとなる。

WaitOnError

エラーが起きた時、Press [ENTER]/[RETURN] to continue...と表示し、終了前にユーザ操作を待つ設定。デフォルトは無効。

ArgSettings

引数レベルの設定要素を持つEnum。
Arg::setArg::unsetで指定可能な要素で構成される。
以下の要素を持つ。

  • Required
  • Multiple
  • EmptyValues
  • Global
  • Hidden
  • TakesValue
  • UseValueDelimiter
  • NextLineHelp
  • RequireDelimiter
  • HidePossibleValues
  • AllowLeadingHyphen

Macros

crate_name

コンパイル時にCargo.tomlのnameを参照して自動でセットするマクロ。

App::new(crate_name!())

crate_version

コンパイル時にCargo.tomlのversionを参照して自動でセットするマクロ。

App::new("myapp")
    .version(crate_version!())

crate_authors

コンパイル時にCargo.tomlのauthorsを参照して自動でセットするマクロ。引数にセパレータパターンを指定できる。デフォルトのパターンは:

App::new("myapp")
    .author(crate_authors!(",\n"))

crate_description

コンパイル時にCargo.tomlのdescriptionを参照して自動でセットするマクロ。

App::new("myapp")
    .about(crate_description!())

app_from_crate

コンパイル時にname、version、author、descriptionをCargo.tomlから参照して自動セットしたAppインスタンスを作成するマクロ。

let m = app_from_crate!()
    ...(各設定)
    .get_matches();

コマンドライン解析メソッド一覧

App

get_matches

コマンドラインの解析を開始するメソッド。ArgMatchesを返す。

Note: 解析エラーがある場合は標準出力にエラーメッセージを表示し、メインプロセスは終了コード1で停止させる。

get_matches_safe

コマンドラインの解析を開始するメソッド。ArgMatchesclap::Errorを持ったclap::Resultを返す。
解析エラーはclap::Errorに格納されて返される。メインプロセスは終了させない。

get_matches_from

コマンドラインの解析を開始するメソッド。引数はIntoIteratorトレイトを実装したもの(Vecなど)。ArgMatchesを返す。
引数に任意のコマンドを表現することで、そのコマンドを実行させることができる。

Note: 解析エラーがある場合は標準出力にエラーメッセージを表示し、メインプロセスは終了コード1で停止させる。
Note: 引数に渡すコマンドの最初の1つは、AppSettings::NoBinaryNameが適用されていない限り、バイナリ名を指定する必要がある。

get_matches_from_safe

コマンドラインの解析を開始するメソッド。引数はIntoIteratorトレイトを実装したもの(Vecなど)。ArgMatchesclap::Errorを持ったclap::Resultを返す。
解析エラーはclap::Errorに格納されて返される。メインプロセスは終了させない。

ArgMatches

コマンドラインの解析結果が格納されたstruct。

value_of

引数の値を取得するメソッド。引数は取得したい引数名。

Note: 値を取らない引数を指定した場合、Noneが返る。
Note: 値に無効なUTF-8コードポイントが含まれている場合、panicを起こす。
Tips: 複数の値を取る引数を指定した場合、最初の値のみ取得できる。全ての値を取得したい場合はArgMatches::values_ofを使用する。

value_of_lossy

引数の値を取得するメソッド。引数は取得したい引数名。
値に無効なUTF-8コードポイントが含まれている場合、\u{FFFD}に置き換えられる。

Note: 値を取らない引数を指定した場合、Noneが返る。
Tips: 複数の値を取る引数を指定した場合、最初の値のみ取得できる。全ての値を取得したい場合はArgMatches::values_of_lossyを使用する。

value_of_os

引数の値を取得するメソッド。引数は取得したい引数名。
値に含まれるUTF-8コードポイントの有効/無効に関わらず、Option<&OsStr>を取得する。

Note: 値を取らない引数を指定した場合、Noneが返る。
Tips: 複数の値を取る引数を指定した場合、最初の値のみ取得できる。全ての値を取得したい場合はArgMatches::values_of_osを使用する。

values_of

引数の値を複数取得できるメソッド。引数は取得したい引数名。
Option<Values>を取得する。ValuesstrIteratorトレイトを実装したstruct。

Note: 値を取らない引数を指定した場合、Noneが返る。
Note: 値に無効なUTF-8コードポイントが含まれている場合、panicを起こす。

values_of_lossy

引数の値を複数取得できるメソッド。引数は取得したい引数名。
Option<Vec<String>>を取得する
値に無効なUTF-8コードポイントが含まれている場合、\u{FFFD}に置き換えられる。

Note: 値を取らない引数を指定した場合、Noneが返る。

values_of_os

引数の値を複数取得できるメソッド。引数は取得したい引数名。
値に含まれるUTF-8コードポイントの有効/無効に関わらず、Option<OsValues>を取得する。OsValuesOsStrIteratorトレイトを実装したstruct。

Note: 値を取らない引数を指定した場合、Noneが返る。

is_present

引数が指定されたかどうかを判断するメソッド。引数は取得したい引数名。booleanが返る。
true: 指定されている、false: 指定されていない

occurrences_of

オプションの出現回数を取得するメソッド。引数は取得したいオプション名。
例えば、-o val1 val2なら1、-o val1 -o val2なら2が返る。

subcommand_matches

サブコマンドのArgMatchesを取得するメソッド。引数は取得したいサブコマンド名。

subcommand_name

この解析結果で指定されたサブコマンドの名称を取得するメソッド。

subcommand

この解析結果で指定されたサブコマンドの名称とArgMatchesを取得するメソッド。
名称とArgMatchesのタプルが返る。

usage

この解析結果が保持するUSAGE文字列を取得する。

その他メソッド一覧

App

get_name

App名を取得するメソッド。

get_bin_name

バイナリ名を取得するメソッド。

print_help

Appに定義されたヘルプを標準出力に出力するメソッド。

write_help

Appに定義されたヘルプを引数に与えたWriter(IO::Writeトレイとを実装したもの)に書き込むメソッド。

write_version

Appに定義されたバージョンを引数に与えたWriter(IO::Writeトレイとを実装したもの)に書き込むメソッド。

gen_completions

Appから補完ファイルを生成するメソッド。第1引数はバイナリ名、第2引数はShellEnumの要素、第3引数は出力先。