oxc_css_parser/tokenizer/convert.rs
1use super::token;
2use crate::error::ErrorKind;
3
4impl TryFrom<token::Number<'_>> for i32 {
5 type Error = ErrorKind;
6
7 fn try_from(token::Number { raw, .. }: token::Number) -> Result<Self, ErrorKind> {
8 let value = raw.parse::<f32>().map_err(|_| ErrorKind::InvalidNumber)?;
9 if value.fract() == 0.0 {
10 // SAFETY: f32 parsed from source text will never be NaN or infinity.
11 unsafe { Ok(value.to_int_unchecked()) }
12 } else {
13 Err(ErrorKind::ExpectInteger)
14 }
15 }
16}