diff --git a/src/libdelimit.rs b/src/libdelimit.rs index 9957eb6..0717c49 100644 --- a/src/libdelimit.rs +++ b/src/libdelimit.rs @@ -1,5 +1,6 @@ /* * Copyright (c) 2025 Emma Tebibyte + * Copyright (c) 2025 silty silt * SPDX-License-Identifier: AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify it @@ -18,7 +19,7 @@ use std::{ io::{ Read, Result }, - mem::self, + mem, }; const BUFFER_SIZE: usize = 4096; @@ -72,21 +73,11 @@ impl Iterator for Delimited where T: Read { } fn find_subslice(stack: &[u8], key: &[u8]) -> Option { - if key.len() == 1 { - return stack.iter().position(|&b| b == key[0]); + match key.len() { + /* TODO: is this optimization necessary? */ + 1 => stack.iter().position(|&b| b == key[0]), + _ => stack.windows(key.len()).position(|w| w == key), } - - if key.len() > stack.len() { - return None; - } - - for i in 0..=stack.len() - key.len() { - if &stack[i..i + key.len()] == key { - return Some(i); - } - } - - None } #[cfg(test)]