#[derive(DarkwingArgs)]
{
// Attributes available to this derive:
#[darkwing_args]
}
Expand description
Derives the DarkwingArgs trait for a struct, enabling conversion of struct
fields into command-line arguments.
This derive macro generates an implementation of the stringify method that
converts struct fields into a vector of (argument_name, value) pairs.
§Attributes
#[darkwing_args(internal)]: Skip this field when generating arguments#[darkwing_args(name = "custom-name")]: Use a custom name for the argument instead of the field name
§Examples
use darkwing_derive::DarkwingArgs;
#[derive(DarkwingArgs)]
struct BrowserArgs {
#[darkwing_args(name = "user-data-dir")]
data_dir: String,
profile_name: String,
#[darkwing_args(internal)]
internal_field: String,
}
let args = BrowserArgs {
data_dir: "/path/to/data".to_string(),
profile_name: "default".to_string(),
internal_field: "hidden".to_string(),
};
// Will produce:
// vec![
// ("--user-data-dir".to_string(), "/path/to/data".to_string()),
// ("--profile_name".to_string(), "default".to_string())
// ]
// Note: internal_field is skipped
let stringified = args.stringify();Empty strings are automatically skipped:
use darkwing_derive::DarkwingArgs;
#[derive(DarkwingArgs)]
struct BrowserArgs {
#[darkwing_args(name = "user-data-dir")]
data_dir: String,
profile_name: String,
#[darkwing_args(internal)]
internal_field: String,
}
let args = BrowserArgs {
data_dir: "/path/to/data".to_string(),
profile_name: "".to_string(), // This will be skipped
internal_field: "hidden".to_string(),
};
// Will produce:
// vec![
// ("--user-data-dir".to_string(), "/path/to/data".to_string())
// ]
let stringified = args.stringify();