getargs-derive 0.1.0

Clap-style #[derive] command-line argument parser for no_std and embedded Rust: zero allocation, compile-time help, subcommands. Built on getargs.
Documentation
use getargs_derive::GetArgs;

#[derive(GetArgs)]
struct CustomLong {
    #[arg(long = "my-flag")]
    my_flag: bool,
}

#[derive(GetArgs)]
struct MultipleFlags {
    #[arg(long)]
    verbose: bool,
    #[arg(long)]
    debug: bool,
}

#[derive(Debug, GetArgs)]
struct FlagWithDefault {
    #[arg(long, default_value_t = true)]
    color: bool,
}

#[test]
fn custom_long() {
    let args = ["--my-flag"];
    let mut options = getargs::Options::new(args.into_iter());
    let params = CustomLong::parse(&mut options).unwrap();
    assert!(params.my_flag);
}

#[test]
fn multiple_flags() {
    let args = ["--verbose", "--debug"];
    let mut options = getargs::Options::new(args.into_iter());
    let params = MultipleFlags::parse(&mut options).unwrap();
    assert!(params.verbose);
    assert!(params.debug);
}

#[test]
fn flags_default_to_false() {
    let args: [&str; 0] = [];
    let mut options = getargs::Options::new(args.into_iter());
    let params = MultipleFlags::parse(&mut options).unwrap();
    assert!(!params.verbose);
    assert!(!params.debug);
}

#[test]
fn flag_with_default() {
    let params = FlagWithDefault::from_args([].into_iter()).unwrap();
    assert!(params.color);
}