From fb4ccc97519b3e35e79ea6516c839864762c5395 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Wed, 18 Feb 2026 20:34:06 +0100 Subject: [PATCH] Fix 'unused lifetime parameter' on lifetimes in with<> Without it, code like this: ``` my_lender.flat_map(lender::covar_mut!( #![with<'g, G: SplitLabeling>] for<'lend> move |(src, succ): (usize, <::SplitLender<'g> as NodeLabelsLender<'lend>>::IntoIterator)| -> lender::FromIter> { ``` errors with: ``` error[E0392]: lifetime parameter `'g` is never used --> src/compress/transform.rs:79:41 | 79 | ... #![with<'g, G: SplitLabeling>] | ^^ unused lifetime parameter | = help: consider removing `'g`, referring to it in a field, or using a marker such as `std::marker::PhantomData` ``` Fixes regression in 8b3c7cd2be493845e79a65fa3df998fd8919fbe2. --- lender/src/higher_order.rs | 11 ++++++++++- lender/tests/fail/try_collect.stderr | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lender/src/higher_order.rs b/lender/src/higher_order.rs index aa48ac0..9892786 100644 --- a/lender/src/higher_order.rs +++ b/lender/src/higher_order.rs @@ -339,7 +339,16 @@ macro_rules! __covar__ { )? $hr >( - ::core::marker::PhantomData ($Ret, &$hr ())> + ::core::marker::PhantomData< + ( + fn() -> ($Ret, &$hr ()), + $( + $($( + &$lt (), + )+)? + )? + ) + > ); // This function only compiles if __CovarCheck (and thus $Ret) diff --git a/lender/tests/fail/try_collect.stderr b/lender/tests/fail/try_collect.stderr index b20183f..b865b43 100644 --- a/lender/tests/fail/try_collect.stderr +++ b/lender/tests/fail/try_collect.stderr @@ -25,5 +25,5 @@ error: implementation of `lender::FromLender` is not general enough 40 | let wrapper: ChangeOutputType, _> = lender.try_collect::>>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `lender::FromLender` is not general enough | - = note: `Wrapper>>` must implement `lender::FromLender>>`, for any lifetime `'1`... - = note: ...but it actually implements `lender::FromLender>>`, for some specific lifetime `'2` + = note: `Wrapper>>` must implement `lender::FromLender>>`, for any lifetime `'1`... + = note: ...but it actually implements `lender::FromLender>>`, for some specific lifetime `'2`