diff --git a/crates/vfs/src/lib.rs b/crates/vfs/src/lib.rs index 7828e51be9..8404f1635f 100644 --- a/crates/vfs/src/lib.rs +++ b/crates/vfs/src/lib.rs @@ -139,13 +139,12 @@ impl Vfs { /// /// This will skip deleted files. pub fn iter(&self) -> impl Iterator + '_ { - (0..self.data.len()) - .map(|it| FileId(it as u32)) - .filter(move |&file_id| self.get(file_id).is_some()) - .map(move |file_id| { - let path = self.interner.lookup(file_id); - (file_id, path) - }) + (0..self.data.len()).filter_map(move |it| { + let file_id = FileId(it as u32); + let _ = self.get(file_id).as_ref()?; + let path = self.interner.lookup(file_id); + Some((file_id, path)) + }) } /// Update the `path` with the given `contents`. `None` means the file was deleted.