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)