From 3879dbe24e1dae477a38ffb1fff9a11d4b9f2661 Mon Sep 17 00:00:00 2001 From: Evan Martin Date: Tue, 28 Oct 2025 10:00:19 -0700 Subject: [PATCH 1/2] fix some warnings from newer rust --- src/eval.rs | 14 +++++++------- src/load.rs | 2 +- src/smallmap.rs | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/eval.rs b/src/eval.rs index d737bfe..221ee63 100644 --- a/src/eval.rs +++ b/src/eval.rs @@ -11,7 +11,7 @@ use std::borrow::Cow; /// This represents one "frame" of evaluation context, a given EvalString may /// need multiple environments in order to be fully expanded. pub trait Env { - fn get_var(&self, var: &str) -> Option>>; + fn get_var(&self, var: &str) -> Option>>; } /// One token within an EvalString, either literal text or a variable reference. @@ -93,7 +93,7 @@ impl EvalString<&str> { } impl EvalString { - pub fn as_cow(&self) -> EvalString> { + pub fn as_cow(&self) -> EvalString> { EvalString( self.0 .iter() @@ -107,7 +107,7 @@ impl EvalString { } impl EvalString<&str> { - pub fn as_cow(&self) -> EvalString> { + pub fn as_cow(&self) -> EvalString> { EvalString( self.0 .iter() @@ -133,7 +133,7 @@ impl<'text> Vars<'text> { } } impl<'a> Env for Vars<'a> { - fn get_var(&self, var: &str) -> Option>> { + fn get_var(&self, var: &str) -> Option>> { Some(EvalString::new(vec![EvalPart::Literal( std::borrow::Cow::Borrowed(self.get(var)?), )])) @@ -141,19 +141,19 @@ impl<'a> Env for Vars<'a> { } impl + PartialEq> Env for SmallMap> { - fn get_var(&self, var: &str) -> Option>> { + fn get_var(&self, var: &str) -> Option>> { Some(self.get(var)?.as_cow()) } } impl + PartialEq> Env for SmallMap> { - fn get_var(&self, var: &str) -> Option>> { + fn get_var(&self, var: &str) -> Option>> { Some(self.get(var)?.as_cow()) } } impl Env for SmallMap<&str, String> { - fn get_var(&self, var: &str) -> Option>> { + fn get_var(&self, var: &str) -> Option>> { Some(EvalString::new(vec![EvalPart::Literal( std::borrow::Cow::Borrowed(self.get(var)?), )])) diff --git a/src/load.rs b/src/load.rs index 4624c51..4fc3845 100644 --- a/src/load.rs +++ b/src/load.rs @@ -33,7 +33,7 @@ impl<'a> BuildImplicitVars<'a> { } } impl<'a> eval::Env for BuildImplicitVars<'a> { - fn get_var(&self, var: &str) -> Option>> { + fn get_var(&self, var: &str) -> Option>> { let string_to_evalstring = |s: String| Some(EvalString::new(vec![EvalPart::Literal(Cow::Owned(s))])); match var { diff --git a/src/smallmap.rs b/src/smallmap.rs index da8298c..0fe00a8 100644 --- a/src/smallmap.rs +++ b/src/smallmap.rs @@ -38,11 +38,11 @@ impl SmallMap { None } - pub fn iter(&self) -> std::slice::Iter<(K, V)> { + pub fn iter(&self) -> std::slice::Iter<'_, (K, V)> { self.0.iter() } - pub fn iter_mut(&mut self) -> std::slice::IterMut<(K, V)> { + pub fn iter_mut(&mut self) -> std::slice::IterMut<'_, (K, V)> { self.0.iter_mut() } From 15679211c866ec1676debc4a2066ea3a4830b225 Mon Sep 17 00:00:00 2001 From: Evan Martin Date: Tue, 28 Oct 2025 10:03:53 -0700 Subject: [PATCH 2/2] fix 'explain' test on windows Without this change, the file appears unmodified after the second write. Perhaps it's racing because it's too fast? But it appears the underlying operation is using Windows FILETIME which has 100ns resolution. It's not clear why, but changing the content of the file in this manner fixes the test, at least as evidenced by a few runs on GitHub CI. --- tests/e2e/basic.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/basic.rs b/tests/e2e/basic.rs index f652ab6..3c4ae0f 100644 --- a/tests/e2e/basic.rs +++ b/tests/e2e/basic.rs @@ -194,7 +194,7 @@ fn explain() -> anyhow::Result<()> { let out = space.run_expect(&mut n2_command(vec!["out"]))?; assert_output_contains(&out, "up to date"); - space.write("in", "")?; + space.write("in", "x")?; let out = space.run_expect(&mut n2_command(vec!["-d", "explain", "out"]))?; // The main "explain" log line: assert_output_contains(&out, "explain: build.ninja:6: manifest changed");