fix mistakes

This commit is contained in:
anonymous 2018-06-04 18:38:01 +03:00
parent 1b1b731227
commit acd5015d66

View file

@ -439,11 +439,11 @@ fn parse_numeric_range_opts(
min_value: u8, min_value: u8,
max_value: u8, max_value: u8,
) -> Result<HashSet<u8>, String> { ) -> Result<HashSet<u8>, String> {
let error_message = "Not a valid input"; const ERROR_MESSAGE: &str = "Not a valid input";
let mut items = HashSet::new(); let mut items = HashSet::new();
// one value // one value
if let Some(one_value) = input.parse::<u8>().ok() { if let Ok(one_value) = input.parse::<u8>() {
if (min_value <= one_value) && (one_value <= max_value) { if (min_value <= one_value) && (one_value <= max_value) {
items.insert(one_value); items.insert(one_value);
return Ok(items); return Ok(items);
@ -453,9 +453,9 @@ fn parse_numeric_range_opts(
// a range ("A-B") // a range ("A-B")
let range_values = input.split('-').collect::<Vec<&str>>(); let range_values = input.split('-').collect::<Vec<&str>>();
if range_values.len() == 2 { if range_values.len() == 2 {
let first_opt = range_values[0].parse::<u8>().ok(); let first_opt = range_values[0].parse::<u8>();
let second_opt = range_values[1].parse::<u8>().ok(); let second_opt = range_values[1].parse::<u8>();
if let (Some(first), Some(second)) = (first_opt, second_opt) { if let (Ok(first), Ok(second)) = (first_opt, second_opt) {
if min_value <= first && first < second && second <= max_value { if min_value <= first && first < second && second <= max_value {
for i in first..second + 1 { for i in first..second + 1 {
items.insert(i); items.insert(i);
@ -463,17 +463,23 @@ fn parse_numeric_range_opts(
return Ok(items); return Ok(items);
} }
} }
return Err(ERROR_MESSAGE.to_owned());
} }
// a list ("A,B[,…]") // a list ("A,B[,…]")
for value in input.split(',') { let list_items = input.split(',').collect::<Vec<&str>>();;
if let Some(value_int) = value.parse::<u8>().ok() { if list_items.len() > 1 {
if (min_value <= value_int) && (value_int <= max_value) && !items.contains(&value_int) { for value in list_items {
items.insert(value_int); if let Ok(value_int) = value.parse::<u8>() {
continue; if (min_value <= value_int) && (value_int <= max_value) && !items.contains(&value_int) {
items.insert(value_int);
continue;
}
} }
return Err(ERROR_MESSAGE.to_owned());
} }
return Err(error_message.to_owned()); return Ok(items);
} }
return Ok(items);
return Err(ERROR_MESSAGE.to_owned());
} }