use memrchr
This commit is contained in:
parent
c975a2ec14
commit
cd2f58c920
2 changed files with 2 additions and 11 deletions
|
@ -16,6 +16,7 @@ exclude = ["fuzz/**/*", ".vscode/**/*"]
|
|||
serde = ["serde_crate"]
|
||||
|
||||
[dependencies]
|
||||
memchr = "2"
|
||||
nom = { version = "6", default_features = false, features = ["std"] }
|
||||
serde_crate = { version = "1", package = "serde", optional = true }
|
||||
|
||||
|
|
|
@ -700,7 +700,7 @@ fn section_header(i: &[u8]) -> IResult<&[u8], ParsedSectionHeader> {
|
|||
if let Ok((i, _)) = char::<_, NomError<&[u8]>>(']')(i) {
|
||||
// Either section does not have a subsection or using deprecated
|
||||
// subsection syntax at this point.
|
||||
let header = match find_legacy_subsection_separator(name) {
|
||||
let header = match memchr::memrchr(b'.', name.as_bytes()) {
|
||||
Some(index) => ParsedSectionHeader {
|
||||
name: Cow::Borrowed(&name[..index]),
|
||||
separator: name.get(index..=index).map(|slice| Cow::Borrowed(slice)),
|
||||
|
@ -747,16 +747,6 @@ fn section_header(i: &[u8]) -> IResult<&[u8], ParsedSectionHeader> {
|
|||
))
|
||||
}
|
||||
|
||||
fn find_legacy_subsection_separator(input: &str) -> Option<usize> {
|
||||
let input = input.as_bytes();
|
||||
for i in (0..input.len()).into_iter().rev() {
|
||||
if input[i] == b'.' {
|
||||
return Some(i);
|
||||
}
|
||||
}
|
||||
None
|
||||
}
|
||||
|
||||
fn section_body<'a, 'b, 'c>(
|
||||
i: &'a [u8],
|
||||
node: &'b mut ParserNode,
|
||||
|
|
Reference in a new issue