diff --git a/crates/vfs/src/tree/builder.rs b/crates/vfs/src/tree/builder.rs index aa742948c..3e77aaf97 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)); @@ -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, 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; }