Merge pull request #2286 from jder/non-structopt-usage

docs: add back example of using non-structopt arguments
This commit is contained in:
Pavan Kumar Sunkara 2021-01-03 22:04:03 +00:00 committed by GitHub
commit 50fb4ca63d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -205,7 +205,7 @@ fn main() {
This second method shows a method using the 'Builder Pattern' which allows more advanced configuration options (not shown in this small example), or even dynamically generating arguments when desired. The downside is it's more verbose.
```rust,no_run
// (Full example with detailed comments in examples/01a_quick_example.rs)
// (Full example with detailed comments in examples/01b_quick_example.rs)
//
// This example demonstrates clap's "builder pattern" method of creating arguments
// which the most flexible, but also most verbose.
@ -239,7 +239,37 @@ fn main() {
.about("print debug information verbosely")))
.get_matches();
// Same as above examples...
// You can check the value provided by positional arguments, or option arguments
if let Some(i) = matches.value_of("input") {
println!("Value for input: {}", i);
}
if let Some(c) = matches.value_of("config") {
println!("Value for config: {}", c);
}
// You can see how many times a particular flag or argument occurred
// Note, only flags can have multiple occurrences
match matches.occurrences_of("v") {
0 => println!("Verbose mode is off"),
1 => println!("Verbose mode is kind of on"),
2 => println!("Verbose mode is on"),
3 | _ => println!("Don't be crazy"),
}
// You can check for the existence of subcommands, and if found use their
// matches just as you would the top level app
if let Some(ref matches) = matches.subcommand_matches("test") {
// "$ myapp test" was run
if matches.is_present("debug") {
// "$ myapp test -d" was run
println!("Printing debug info...");
} else {
println!("Printing normally...");
}
}
// Continued program logic goes here...
}
```