difftreelog
perf memchr in string block lexing/parsing
in: master
1 file changed
crates/jrsonnet-lexer/src/string_block.rsdiffbeforeafterboth228 debug_assert_ne!(num_whitespace, 0, "Unexpected value for num_whitespace");228 debug_assert_ne!(num_whitespace, 0, "Unexpected value for num_whitespace");229 ctx.skip(num_whitespace);229 ctx.skip(num_whitespace);230230231 let line_start = ctx.index;231 let rest = ctx.rest();232 let mut line_size = 0;233 loop {234 match ctx.next() {232 match rest.find('\n') {235 None => {233 None => {234 ctx.index = ctx.source.len();236 lex.eat_error(&ctx);235 lex.eat_error(&ctx);237 return Err(UnexpectedEnd);236 return Err(UnexpectedEnd);238 }237 }239 Some('\n') => {238 Some(nl_pos) => {240 lex.mark_line(&ctx.source[line_start..line_start + line_size]);239 lex.mark_line(&rest[..nl_pos]);241 break;240 ctx.index += nl_pos + 1;242 }241 }243 Some(c) => {244 line_size += c.len_utf8();245 }246 }242 }247 }248243249 // Skip any blank lines244 // Skip any blank lines250 while ctx.peek() == Some('\n') {245 while ctx.peek() == Some('\n') {