diff --git a/src/arg_util.rs b/src/arg_util.rs index 06a6ee65..d54dd949 100644 --- a/src/arg_util.rs +++ b/src/arg_util.rs @@ -76,6 +76,8 @@ macro_rules! Command { } } } + + impl_default!($name => $( $name::$var(::std::default::Default::default()) , )*); }; ( $name:ident, [ $( $var:ident => ($str:expr, $exec:expr), ) *] ) => { #[derive(Debug, PartialEq)] @@ -128,6 +130,8 @@ macro_rules! Command { } } } + + impl_default!($name => $( $name::$var , )*); }; } @@ -204,6 +208,19 @@ macro_rules! enum_int { } } } + + impl_default!($name => $( $name::$var , )*); + + }; +} + +macro_rules! impl_default { + ( $name:ident => $def:expr , $( $other:expr , ) *) => { + impl ::std::default::Default for $name { + fn default() -> Self { + $def + } + } }; }