Optimize the notify event handler

This commit is contained in:
mo8it
2024-04-25 14:44:12 +02:00
parent 88f27a5377
commit 14fe248b4b
3 changed files with 22 additions and 13 deletions
+15 -6
View File
@@ -5,7 +5,7 @@ use super::WatchEvent;
pub struct DebounceEventHandler {
pub tx: Sender<WatchEvent>,
pub exercise_paths: &'static [&'static str],
pub exercise_names: &'static [&'static [u8]],
}
impl notify_debouncer_mini::DebounceEventHandler for DebounceEventHandler {
@@ -15,15 +15,24 @@ impl notify_debouncer_mini::DebounceEventHandler for DebounceEventHandler {
let Some(exercise_ind) = event
.iter()
.filter_map(|event| {
if event.kind != DebouncedEventKind::Any
|| !event.path.extension().is_some_and(|ext| ext == "rs")
{
if event.kind != DebouncedEventKind::Any {
return None;
}
self.exercise_paths
let file_name = event.path.file_name()?.to_str()?.as_bytes();
if file_name.len() < 4 {
return None;
}
let (file_name_without_ext, ext) = file_name.split_at(file_name.len() - 3);
if ext != b".rs" {
return None;
}
self.exercise_names
.iter()
.position(|path| event.path.ends_with(path))
.position(|exercise_name| *exercise_name == file_name_without_ext)
})
.min()
else {