Good Morning,
First of all I'm really newby and, perhaps, I started a personal project bigger of my capability.
Also, apologize for my bad english.
I'm working on a project that implement AWS SDK and I chose clap to rationalize the command line arguments, options and subcommands.
The start code should be simple:
#[macro_use]
extern crate ini;
use clap::{Parser, Subcommand};
#[derive(Debug, Parser)]
#[clap(name = "zaw", version)]
pub struct AppArguments {
#[clap(flatten)]
options: AppOptions,
#[clap(subcommand)]
subcommand: AppSubCommand
}
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct AppOptions {
#[arg(long = "account", short = 'a')]
accountid: String,
#[arg(long = "region", short = 'r', default_value_t = ("null").to_string())]
region: String,
}
#[derive(Debug, Subcommand, Clone)]
enum AppSubCommand {
Discovery {
#[arg(long = "service", short = 's', default_value_t = ("null").to_string())]
service: String,
},
Getmetric {
#[arg(long = "service", short = 's', default_value_t = ("null").to_string())]
service: String,
#[arg(long = "metric", short = 'm', default_value_t = ("null").to_string())]
metric: String,
}
}
fn main() {
let application_arguments = AppArguments::parse();
println!("AppArguments.....: {:?}", &application_arguments);
println!("Options..........: {:?}", &application_arguments.options);
println!("AccountID........: {:?}", &application_arguments.options.accountid);
println!("AccountRegion....: {:?}", &application_arguments.options.region);
println!("SubCommand.......: {:?}", &application_arguments.subcommand);
}
So far no problem but i'm not able to retrive service in inside Discovery or GetMetric into AppSubCommand enum
with compiler error:
error[E0609]: no field `service` on type `AppSubCommand`
--> src/main.rs:63:75
|
63 | println!("Service..........: {:?}", &application_arguments.subcommand.service);
| ^^^^^^^ unknown field
Can some help me to understand this problem or pointing me to the specific part in manual to understand where i'm failing?
Thanks in advance.
Matteo

