struargs 0.4.0

A macro that converts a structure into a Command parameter list
Documentation
#[test]
fn test() {
    use struargs::Args;

    #[derive(Debug, Args)]
    struct StructArg {
        size: Option<i32>,
        name: Option<String>,
        #[args(rename = "type")]
        ty: Option<String>,
        #[args(no_value)]
        one: Option<()>,
        num: f32,
        #[args(short = "e")]
        enable: bool,
        a_b: bool,
    }

    let s = StructArg {
        size: None,
        name: Some("Ykong".to_string()),
        ty: Some("Arg".to_string()),
        one: Some(()),
        num: 100.1,
        enable: true,
        a_b: false,
    };

    let args = s.args().join(" ");

    assert_eq!(
        args,
        "--name Ykong --type Arg --one --num 100.1 -e true --a_b false"
    );

    let mut env_args = s
        .env_args()
        .into_iter()
        .map(|(k, v)| format!("{}={}", k, v))
        .collect::<Vec<_>>();

    env_args.sort();

    assert_eq!(
        env_args,
        vec![
            "A_B=false",
            "ENABLE=true",
            "NAME=Ykong",
            "NUM=100.1",
            "TYPE=Arg",
        ],
    );
}