From 97cffd52958d34536a3ee1d3e84fe4ae50b0d0aa Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Sun, 5 Mar 2023 05:30:56 -0600 Subject: [PATCH] Reuse allocations between files --- src/tools/tidy/src/walk.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/tools/tidy/src/walk.rs b/src/tools/tidy/src/walk.rs index f7f2c647eb49..94152e75168f 100644 --- a/src/tools/tidy/src/walk.rs +++ b/src/tools/tidy/src/walk.rs @@ -1,6 +1,6 @@ use ignore::DirEntry; -use std::{fs, path::Path}; +use std::{fs::File, io::Read, path::Path}; /// The default directory filter. pub fn filter_dirs(path: &Path) -> bool { @@ -48,9 +48,12 @@ pub fn walk( skip: impl Send + Sync + 'static + Fn(&Path) -> bool, f: &mut dyn FnMut(&DirEntry, &str), ) { + let mut contents = Vec::new(); walk_no_read(path, skip, &mut |entry| { - let contents = t!(fs::read(entry.path()), entry.path()); - let contents_str = match String::from_utf8(contents) { + contents.clear(); + let mut file = t!(File::open(entry.path()), entry.path()); + t!(file.read_to_end(&mut contents), entry.path()); + let contents_str = match std::str::from_utf8(&contents) { Ok(s) => s, Err(_) => return, // skip this file };