From 591e9d8880a2f699c4fde0bdc294ca88afd32570 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 6 Jan 2021 00:26:48 -0800 Subject: [PATCH] Simplify `up_to_date` to call `metadata` once. This also eliminates a use of a `Path` convenience function, in support of #80741, refactoring `std::path` to focus on pure data structures and algorithms. --- src/build_helper/lib.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/build_helper/lib.rs b/src/build_helper/lib.rs index 80f804174ed08..92f7fbc9f37bc 100644 --- a/src/build_helper/lib.rs +++ b/src/build_helper/lib.rs @@ -172,10 +172,11 @@ pub fn mtime(path: &Path) -> SystemTime { /// /// Uses last-modified time checks to verify this. pub fn up_to_date(src: &Path, dst: &Path) -> bool { - if !dst.exists() { - return false; - } - let threshold = mtime(dst); + let dst_meta = match fs::metadata(dst) { + Ok(meta) => meta, + Err(_) => return false, + }; + let threshold = dst_meta.modified().unwrap_or(UNIX_EPOCH); let meta = match fs::metadata(src) { Ok(meta) => meta, Err(e) => panic!("source {:?} failed to get metadata: {}", src, e),