Rust 在没有提供命令的情况下,Clap是否有直接的方式显示帮助?
我正在使用解析命令行参数。我已经定义了一个子命令Rust 在没有提供命令的情况下,Clap是否有直接的方式显示帮助?,rust,clap,Rust,Clap,我正在使用解析命令行参数。我已经定义了一个子命令ls,它应该列出文件。Clap还定义了一个help子命令,用于显示有关应用程序及其用法的信息 如果没有提供任何命令,则不会显示任何内容,但我希望应用程序在这种情况下显示帮助 我尝试过这段代码,它看起来非常简单,但不起作用: extern crate clap; use clap::{App, SubCommand}; fn main() { let mut app = App::new("myapp") .version
ls
,它应该列出文件。Clap还定义了一个help
子命令,用于显示有关应用程序及其用法的信息
如果没有提供任何命令,则不会显示任何内容,但我希望应用程序在这种情况下显示帮助
我尝试过这段代码,它看起来非常简单,但不起作用:
extern crate clap;
use clap::{App, SubCommand};
fn main() {
let mut app = App::new("myapp")
.version("0.0.1")
.about("My first CLI APP")
.subcommand(SubCommand::with_name("ls").about("List anything"));
let matches = app.get_matches();
if let Some(cmd) = matches.subcommand_name() {
match cmd {
"ls" => println!("List something here"),
_ => eprintln!("unknown command"),
}
} else {
app.print_long_help();
}
}
我收到一个错误,移动后使用了app
:
错误[E0382]:使用移动值:`app`
-->src/main.rs:18:9
|
10 | let matches=app.get_matches();
|---值移到了这里
...
18 | app.print_long_help();
|^^^移动后此处使用的值
|
=注意:发生移动是因为'app'的类型为'clap::app',而该类型不实现'Copy'特性
通过阅读Clap的文档,我发现在get_matches()
中返回的Clap::ArgMatches
有一个返回字符串以供使用的方法,但不幸的是,只有这一部分而没有其他内容。使用:
另见:
设置Arg::default_value
有效地禁用了此选项,因为它将确保某些参数始终存在。”子命令requiredelsehelp
对于某些应用程序可能是更好的选项。
App::new("myprog")
.setting(AppSettings::ArgRequiredElseHelp)