Skip to content

Commit fe1911e

Browse files
committed
Non-ASCII input will be caught anyway, because it's never a valid character
1 parent 705ed1f commit fe1911e

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

src/duration/mod.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ mod serde_impl;
2929
#[derive(Debug, Snafu, PartialEq)]
3030
#[snafu(module)]
3131
pub enum DurationParseError {
32-
#[snafu(display("invalid input, either empty or contains non-ascii characters"))]
33-
InvalidInput,
32+
#[snafu(display("empty input"))]
33+
EmptyInput,
3434

3535
#[snafu(display("unexpected character {chr:?}"))]
3636
UnexpectedCharacter { chr: char },
@@ -55,9 +55,8 @@ impl FromStr for Duration {
5555
use duration_parse_error::*;
5656
let input = s.trim();
5757

58-
// An empty or non-ascii input is invalid
59-
if input.is_empty() || !input.is_ascii() {
60-
return Err(DurationParseError::InvalidInput);
58+
if input.is_empty() {
59+
return EmptyInputSnafu.fail();
6160
}
6261

6362
let mut chars = input.char_indices().peekable();
@@ -247,8 +246,8 @@ mod test {
247246
#[rstest]
248247
#[case("1D", DurationParseError::ParseUnitError{unit: "D".into()})]
249248
#[case("2d2", DurationParseError::NoUnit{value: 2})]
250-
#[case("1ä", DurationParseError::InvalidInput)]
251-
#[case(" ", DurationParseError::InvalidInput)]
249+
#[case("1ä", DurationParseError::EmptyInput)]
250+
#[case(" ", DurationParseError::EmptyInput)]
252251
fn parse_invalid(#[case] input: &str, #[case] expected_err: DurationParseError) {
253252
let err = Duration::from_str(input).unwrap_err();
254253
assert_eq!(err, expected_err)

0 commit comments

Comments
 (0)