带有派生宏的Clap选项无法在rust Clap 3.0.0-beta.5中编译



我正在尝试;使用派生宏";clap:最新测试版的索引页面上的示例

// (Full example with detailed comments in examples/01d_quick_example.rs)
//
// This example demonstrates clap's full 'custom derive' style of creating arguments which is the
// simplest method of use, but sacrifices some flexibility.
use clap::{AppSettings, Parser};
/// This doc string acts as a help message when the user runs '--help'
/// as do all doc strings on fields
#[derive(Parser)]
#[clap(version = "1.0", author = "Kevin K. <kbknapp@gmail.com>")]
struct Opts {
/// Sets a custom config file. Could have been an Option<T> with no default too
#[clap(short, long, default_value = "default.conf")]
config: String,
/// Some input. Because this isn't an Option<T> it's required to be used
input: String,
/// A level of verbosity, and can be used multiple times
#[clap(short, long, parse(from_occurrences))]
verbose: i32,
#[clap(subcommand)]
subcmd: SubCommand,
}
...

不幸的是,它未能编译:

$ cargo build
Compiling ex v1.0.0-SNAPSHOT (/home/hwalters/git/home/ex)
error: cannot find derive macro `Parser` in this scope
--> src/main.rs:5:10
|
5 | #[derive(Parser)]
|          ^^^^^^
|
note: `Parser` is imported here, but it is only a trait, without a derive macro
--> src/main.rs:1:25
|
1 | use clap::{AppSettings, Parser};
|                         ^^^^^^
error: cannot find attribute `clap` in this scope
--> src/main.rs:6:3
|
6 | #[clap(version = "1.0", author = "Kevin K. <kbknapp@gmail.com>")]
|   ^^^^
|
= note: `clap` is in scope, but it is a crate, not an attribute
...

我试图找到完整的示例文件";examples/01d_quick_example.rs";在这个GitHub标记的tar文件中,但它似乎不存在。

我很感激这是一个测试版,但这个功能预计会起作用吗,还是我做错了什么?

谢谢!

在clap中,在Cargo.toml中使用features = [ "derive" ]来启用导出能力:(

更新

@下面的stein很好地扩展了答案:

收件人"使用";意思是:在[依赖项]部分中,用行类似于:clap={version="3.1.0",features=["derive&"]}-斯坦因2月19日13:00

请+1他们的评论:-(。

这意味着,在您的Cargo.toml

[dependencies]
# ...
clap = { version = "3", features = ["derive"]}

最新更新