(&mut self)
| 174 | } |
| 175 | |
| 176 | pub fn parse_number<T: FromStr>(&mut self) -> eyre::Result<T> { |
| 177 | let mut len = 0; |
| 178 | for c in self.input.chars() { |
| 179 | match c { |
| 180 | '0'..='9' | '-' | '.' => {} |
| 181 | _ => { |
| 182 | break; |
| 183 | } |
| 184 | } |
| 185 | len += 1; |
| 186 | } |
| 187 | eyre::ensure!(len > 0, "`{}` is not number`", self.input); |
| 188 | let token = &self.input[..len]; |
| 189 | self.input = self.input[len..].trim_start(); |
| 190 | match token.parse() { |
| 191 | Ok(v) => Ok(v), |
| 192 | Err(_) => Err(eyre::eyre!("fail to parse `{}` as number", token)), |
| 193 | } |
| 194 | } |
| 195 | |
| 196 | pub fn parse_vec<T: Deserialize>(&mut self) -> Result<Vec<T>> { |
| 197 | let mut v = Vec::new(); |
no outgoing calls
no test coverage detected