付録Aclapの新しいAPI
中山 光樹
本付録は日本語版オリジナルの記事です。本書ではclap
のバージョン2系を使ってきましたが、バージョン3系からはDerive APIと呼ばれる新しいAPIを利用できるようになりました。そこで、本稿ではclap
のDerive APIについて簡単に紹介します。
A.1 Builder APIとDerive API
本書でコマンドライン引数の解析のために書いてきたclap
の書き方は、Builder APIと呼ばれています。それに対して、clap
の新しいバージョンではDerive APIと呼ばれる書き方をできるようになりました。次のコードは、「3章 catコマンド」のコマンドライン引数を解析するコードとそれをDerive APIで書き直したものです。
Builder APIによるコードは次に示すとおりです。
use
clap
::{
App
,
Arg
};
#[derive(Debug)]
pub
struct
Config
{
files
:Vec
<
String
>
,
number_lines
:bool
,
number_nonblank_lines
:bool
,
}
pub
fn
get_args
()
->
MyResult
<
Config
>
{
let
matches
=
App
::new
(
"catr"
)
.
version
(
"0.1.0"
)
.
author
(
"Ken Youens-Clark <kyclark@gmail.com>"
)
.
about
(
"Rust cat"
)
.
arg
(
Arg
::with_name
(
"files"
)
.
value_name
(
"FILE"
)
.
help
(
"Input file(s)"
)
.
multiple ...
Get Rustの練習帳 ―コマンドラインツールの作成を通してRustを学ぶ now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.