diff --git a/option_parser/src/lib.rs b/option_parser/src/lib.rs index e7d331cbf..3da99bbc6 100644 --- a/option_parser/src/lib.rs +++ b/option_parser/src/lib.rs @@ -305,8 +305,13 @@ impl FromStr for Tuple { fn from_str(s: &str) -> std::result::Result { let mut list: Vec<(S, T)> = Vec::new(); - let tuples_list = split_commas(s.trim().trim_matches(|c| c == '[' || c == ']')) - .map_err(TupleError::SplitOutsideBrackets)?; + let body = s + .trim() + .strip_prefix('[') + .and_then(|s| s.strip_suffix(']')) + .ok_or_else(|| TupleError::InvalidValue(s.to_string()))?; + + let tuples_list = split_commas(body).map_err(TupleError::SplitOutsideBrackets)?; for tuple in tuples_list.iter() { let items: Vec<&str> = tuple.split('@').collect();