Skip to content

Commit 2d3d32c

Browse files
committed
Revert "Non-ASCII input will be caught anyway, because it's never a valid character"
This reverts commit fe1911e.
1 parent e7e4718 commit 2d3d32c

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

src/duration/mod.rs

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

3636
#[snafu(display("unexpected character {chr:?}"))]
3737
UnexpectedCharacter { chr: char },
@@ -65,8 +65,9 @@ impl FromStr for Duration {
6565
use duration_parse_error::*;
6666
let input = s.trim();
6767

68-
if input.is_empty() {
69-
return EmptyInputSnafu.fail();
68+
// An empty or non-ascii input is invalid
69+
if input.is_empty() || !input.is_ascii() {
70+
return Err(DurationParseError::InvalidInput);
7071
}
7172

7273
let mut chars = input.char_indices().peekable();
@@ -284,8 +285,8 @@ mod test {
284285
#[rstest]
285286
#[case("1D", DurationParseError::ParseUnitError{unit: "D".into()})]
286287
#[case("2d2", DurationParseError::NoUnit{value: 2})]
287-
#[case("1ä", DurationParseError::EmptyInput)]
288-
#[case(" ", DurationParseError::EmptyInput)]
288+
#[case("1ä", DurationParseError::InvalidInput)]
289+
#[case(" ", DurationParseError::InvalidInput)]
289290
fn parse_invalid(#[case] input: &str, #[case] expected_err: DurationParseError) {
290291
let err = Duration::from_str(input).unwrap_err();
291292
assert_eq!(err, expected_err)

0 commit comments

Comments
 (0)