aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2020-01-07 12:02:56 +0000
committerDaniel Mueller <deso@posteo.net>2020-01-08 09:20:34 -0800
commit30e7ed5ff70766ea4a7de6761d29e012a15f02c9 (patch)
tree065cab14a14817db142bf63ece222b99ef946549
parentb1725639a21a8661c8e8dfe30811b650abf028b0 (diff)
downloadnitrocli-30e7ed5ff70766ea4a7de6761d29e012a15f02c9.tar.gz
nitrocli-30e7ed5ff70766ea4a7de6761d29e012a15f02c9.tar.bz2
arg_util: Change Err type in FromStr implementation
structopt requires that FromStr::Err implements std::fmt::Display. Therefore we now return a String that contains a list of allowed values.
-rw-r--r--nitrocli/src/arg_util.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/nitrocli/src/arg_util.rs b/nitrocli/src/arg_util.rs
index 3e4ba85..5980f48 100644
--- a/nitrocli/src/arg_util.rs
+++ b/nitrocli/src/arg_util.rs
@@ -107,14 +107,23 @@ macro_rules! enum_int {
}
impl ::std::str::FromStr for $name {
- type Err = ();
+ type Err = ::std::string::String;
fn from_str(s: &str) -> ::std::result::Result<Self, Self::Err> {
match s {
$(
$str => Ok($name::$var),
)*
- _ => Err(()),
+ _ => Err(
+ format!(
+ "expected one of {}",
+ $name::all_variants()
+ .iter()
+ .map(::std::convert::AsRef::as_ref)
+ .collect::<::std::vec::Vec<_>>()
+ .join(", "),
+ )
+ )
}
}
}