Mercurial > public > mercurial-scm > hg-stable
diff rust/hg-core/src/dirstate_tree/status.rs @ 48230:15dedc0c5c35
status: Extract TruncatedTimestamp from fs::Metadata without SystemTime
On Unix, the Rust standard library exposes `mtime` and `mtime_nsec` methods
for `std::fs::Metada` whih is exactly what we need to construct a
`TruncatedTimestamp`. This skips the computation in the conversion through
`SystemTime` and `Result<Duration, Duration>`.
Differential Revision: https://phab.mercurial-scm.org/D11654
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Wed, 13 Oct 2021 16:21:39 +0200 |
parents | 320de901896a |
children | f45d35950db6 |
line wrap: on
line diff
--- a/rust/hg-core/src/dirstate_tree/status.rs Fri Sep 17 15:07:30 2021 -0400 +++ b/rust/hg-core/src/dirstate_tree/status.rs Wed Oct 13 16:21:39 2021 +0200 @@ -199,15 +199,14 @@ // by a previous run of the `status` algorithm which found this // directory eligible for `read_dir` caching. if let Some(meta) = directory_metadata { - if let Ok(current_mtime) = meta.modified() { - let truncated = - TruncatedTimestamp::from(current_mtime); - if truncated.very_likely_equal(&cached_mtime) { - // The mtime of that directory has not changed - // since then, which means that the results of - // `read_dir` should also be unchanged. - return true; - } + if cached_mtime + .very_likely_equal_to_mtime_of(meta) + .unwrap_or(false) + { + // The mtime of that directory has not changed + // since then, which means that the results of + // `read_dir` should also be unchanged. + return true; } } } @@ -472,7 +471,7 @@ let is_up_to_date = if let Some(cached) = dirstate_node.cached_directory_mtime()? { - cached.very_likely_equal(&truncated) + cached.very_likely_equal(truncated) } else { false };