diff --git a/components/style/attr.rs b/components/style/attr.rs index bcd14d9851d..9678c519d5a 100644 --- a/components/style/attr.rs +++ b/components/style/attr.rs @@ -35,13 +35,13 @@ pub enum AttrValue { /// Shared implementation to parse an integer according to /// or /// -fn do_parse_integer>(input: T) -> Option { +fn do_parse_integer>(input: T) -> Result { let mut input = input.skip_while(|c| { HTML_SPACE_CHARACTERS.iter().any(|s| s == c) }).peekable(); let sign = match input.peek() { - None => return None, + None => return Err(()), Some(&'-') => { input.next(); -1 @@ -55,23 +55,23 @@ fn do_parse_integer>(input: T) -> Option { let (value, _) = read_numbers(input); - value.and_then(|value| value.checked_mul(sign)) + value.and_then(|value| value.checked_mul(sign)).ok_or(()) } /// Parse an integer according to /// . pub fn parse_integer>(input: T) -> Result { do_parse_integer(input).and_then(|result| { - result.to_i32() - }).ok_or(()) + result.to_i32().ok_or(()) + }) } /// Parse an integer according to /// pub fn parse_unsigned_integer>(input: T) -> Result { do_parse_integer(input).and_then(|result| { - result.to_u32() - }).ok_or(()) + result.to_u32().ok_or(()) + }) } /// Parse a floating-point number according to