Skip to content

Commit

Permalink
use extract_if and filter existing invalidator
Browse files Browse the repository at this point in the history
  • Loading branch information
sokra committed Feb 14, 2025
1 parent 94c8c79 commit fa61c93
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions turbopack/crates/turbo-tasks-fs/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -266,15 +266,22 @@ impl DiskFileSystemInner {
) -> Result<Vec<(Invalidator, Option<WriteContent>)>> {
let mut invalidator_map = self.invalidator_map.lock().unwrap();
let invalidators = invalidator_map.entry(path_to_key(path)).or_default();
let mut old_invalidators = take(invalidators);
old_invalidators.remove(&invalidator);
let old_invalidators = invalidators
.extract_if(|i, old_write_content| {
i == &invalidator
|| old_write_content
.as_ref()
.is_none_or(|old| old != &write_content)
})
.filter(|(i, _)| i != &invalidator)
.collect::<Vec<_>>();
invalidators.insert(invalidator, Some(write_content));
drop(invalidator_map);
#[cfg(not(any(target_os = "macos", target_os = "windows")))]
if let Some(dir) = path.parent() {
self.watcher.ensure_watching(dir, self.root_path())?;
}
Ok(old_invalidators.into_iter().collect())
Ok(old_invalidators)
}

/// registers the path as an invalidator for the current task,
Expand Down

0 comments on commit fa61c93

Please sign in to comment.