diff --git a/Cargo.lock b/Cargo.lock index 4c686dbfce2..2568054a4ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3468,6 +3468,7 @@ dependencies = [ "codspeed-divan-compat", "fluent", "glob", + "rustc-hash", "tempfile", "thiserror 2.0.18", "uucore", diff --git a/src/uu/du/Cargo.toml b/src/uu/du/Cargo.toml index 192ec9dea15..99bb5a5def2 100644 --- a/src/uu/du/Cargo.toml +++ b/src/uu/du/Cargo.toml @@ -28,6 +28,7 @@ uucore = { workspace = true, features = [ "parser-glob", "time", ] } +rustc-hash = { workspace = true } thiserror = { workspace = true } fluent = { workspace = true } diff --git a/src/uu/du/src/du.rs b/src/uu/du/src/du.rs index d8bfd4446a1..83092ccaf38 100644 --- a/src/uu/du/src/du.rs +++ b/src/uu/du/src/du.rs @@ -7,7 +7,7 @@ use clap::{Arg, ArgAction, ArgMatches, Command, builder::PossibleValue}; use glob::Pattern; -use std::collections::HashSet; +use rustc_hash::FxHashSet as HashSet; use std::env; use std::ffi::{OsStr, OsString}; use std::fs::{self, DirEntry, File, Metadata}; @@ -578,7 +578,7 @@ fn du_regular( ancestors: Option<&mut HashSet>, symlink_depth: Option, ) -> Result>>> { - let mut default_ancestors = HashSet::new(); + let mut default_ancestors = HashSet::default(); let ancestors = ancestors.unwrap_or(&mut default_ancestors); let symlink_depth = symlink_depth.unwrap_or(0); // Maximum symlink depth to prevent infinite loops @@ -995,7 +995,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { files.collect() } else { // Deduplicate while preserving order - let mut seen = HashSet::new(); + let mut seen = HashSet::default(); files .filter(|path| seen.insert(path.clone())) .collect::>() @@ -1088,7 +1088,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let printing_thread = thread::spawn(move || stat_printer.print_stats(&rx)); // Check existence of path provided in argument - let mut seen_inodes: HashSet = HashSet::new(); + let mut seen_inodes: HashSet = HashSet::default(); 'loop_file: for path in files { // Skip if we don't want to ignore anything