From 96b98b08b9397b4ae368866d93aa1902dd792ae8 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Fri, 2 Jan 2026 16:19:25 +0100 Subject: [PATCH 1/2] vfs: Add Kind::is_directory --- crates/vfs/src/tree/builder.rs | 4 ++-- crates/vfs/src/tree/mod.rs | 24 +++++++++++++++--------- moss/src/cli/info.rs | 2 +- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/crates/vfs/src/tree/builder.rs b/crates/vfs/src/tree/builder.rs index aa742948c..1d22bde03 100644 --- a/crates/vfs/src/tree/builder.rs +++ b/crates/vfs/src/tree/builder.rs @@ -83,7 +83,7 @@ impl TreeBuilder { let all_dirs = self .explicit .iter() - .filter(|f| matches!(f.kind, Kind::Directory)) + .filter(|f| f.kind.is_directory()) .chain(self.implicit_dirs.values()) .map(|d| (&d.path, d)) .collect::>(); @@ -111,7 +111,7 @@ impl TreeBuilder { // Insert everything WITHOUT redirects, directory first. let mut full_set = all_dirs .into_values() - .chain(self.explicit.iter().filter(|m| !matches!(m.kind, Kind::Directory))) + .chain(self.explicit.iter().filter(|m| !m.kind.is_directory())) .collect::>(); full_set.sort_by(|a, b| sorted_paths(a, b)); diff --git a/crates/vfs/src/tree/mod.rs b/crates/vfs/src/tree/mod.rs index 01e824ab1..c4fa3bca8 100644 --- a/crates/vfs/src/tree/mod.rs +++ b/crates/vfs/src/tree/mod.rs @@ -29,6 +29,13 @@ pub enum Kind { Symlink(AStr), } +impl Kind { + #[must_use] + pub fn is_directory(&self) -> bool { + matches!(self, Self::Directory) + } +} + /// Simple generic interface for blittable files while retaining details. /// /// All implementations should return a directory typed blitfile for a PathBuf. @@ -213,15 +220,14 @@ impl Tree { let item = node.get(); let partial = item.file_name.as_deref().unwrap_or_default(); - match item.kind { - Kind::Directory => { - let children = start - .children(&self.arena) - .map(|c| self.structured_children(&c)) - .collect::>(); - Element::Directory(partial, &item.inner, children) - } - _ => Element::Child(partial, &item.inner), + if item.kind.is_directory() { + let children = start + .children(&self.arena) + .map(|c| self.structured_children(&c)) + .collect::>(); + Element::Directory(partial, &item.inner, children) + } else { + Element::Child(partial, &item.inner) } } } diff --git a/moss/src/cli/info.rs b/moss/src/cli/info.rs index b0c63db41..dcca29fd5 100644 --- a/moss/src/cli/info.rs +++ b/moss/src/cli/info.rs @@ -173,7 +173,7 @@ fn print_files(vfs: vfs::Tree) { let files = vfs .iter() .filter_map(|file| { - if matches!(file.kind(), vfs::tree::Kind::Directory) { + if file.kind().is_directory() { return None; } From aba82f9f1e75156c0f7c081674269b31ea79d3e5 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Fri, 2 Jan 2026 16:19:52 +0100 Subject: [PATCH 2/2] Remove unused derives in test code --- crates/vfs/src/tree/builder.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/vfs/src/tree/builder.rs b/crates/vfs/src/tree/builder.rs index 1d22bde03..3e77aaf97 100644 --- a/crates/vfs/src/tree/builder.rs +++ b/crates/vfs/src/tree/builder.rs @@ -144,7 +144,7 @@ mod tests { use super::{BlitFile, TreeBuilder}; - #[derive(Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord)] + #[derive(Clone, Debug)] struct CustomFile { path: AStr, kind: Kind,