# HG changeset patch # User Tuomo Valkonen # Date 1747103801 18000 # Node ID 087c60877100369c2f8c819d9d69fc23a899b8b8 # Parent d65377920b005b840ec6ebd9b28547f9a06b27e0 fubar diff -r d65377920b00 -r 087c60877100 src/direct_product.rs --- a/src/direct_product.rs Mon May 12 21:26:04 2025 -0500 +++ b/src/direct_product.rs Mon May 12 21:36:41 2025 -0500 @@ -385,21 +385,23 @@ U: Instance, V: Instance, { - fn eval_decompose<'b, R>( + fn eval_decompose<'c, R>( self, - f: impl FnOnce(Pair, Q::Decomposition<'b>>) -> R, + f: impl FnOnce(Pair, Q::Decomposition<'c>>) -> R, ) -> R where - Pair: 'b, - Self: 'b, + Pair: 'c, { self.0 .eval_decompose(|a| self.1.eval_decompose(|b| f(Pair(a, b)))) } - fn eval_ref_decompose(&self, f: F) -> R + fn eval_ref_decompose<'c, R>( + &self, + f: impl FnOnce(Pair, Q::Reference<'c>>) -> R, + ) -> R where - F: for<'c> FnOnce(Pair, Q::Reference<'c>>) -> R, + Pair: 'c, { self.0 .eval_ref_decompose(|a| self.1.eval_ref_decompose(|b| f(Pair(a, b)))) @@ -430,14 +432,12 @@ &'a U: Instance, &'a V: Instance, { - fn eval_decompose<'b, R>( + fn eval_decompose<'c, R>( self, - f: impl FnOnce(Pair, Q::Decomposition<'b>>) -> R, + f: impl FnOnce(Pair, Q::Decomposition<'c>>) -> R, ) -> R where - R: 'b, - Pair: 'b, - Self: 'b, + Pair: 'c, { self.0.eval_ref_decompose(|a| { self.1 @@ -445,11 +445,12 @@ }) } - fn eval_ref_decompose<'b, 'c, R, F>(&'b self, f: F) -> R + fn eval_ref_decompose<'c, R>( + &self, + f: impl FnOnce(Pair, Q::Reference<'c>>) -> R, + ) -> R where Pair: 'c, - Self: 'b, - F: FnOnce(Pair, Q::Reference<'c>>) -> R, { self.0 .eval_ref_decompose(|a| self.1.eval_ref_decompose(|b| f(Pair(a, b)))) diff -r d65377920b00 -r 087c60877100 src/instance.rs --- a/src/instance.rs Mon May 12 21:26:04 2025 -0500 +++ b/src/instance.rs Mon May 12 21:36:41 2025 -0500 @@ -110,20 +110,15 @@ { /// Decomposes self according to `decomposer`, and evaluate `f` on the result. /// Consumes self. - fn eval_decompose<'b, R>(self, f: impl FnOnce(D::Decomposition<'b>) -> R) -> R + fn eval_decompose<'c, R>(self, f: impl FnOnce(D::Decomposition<'c>) -> R) -> R where - R: 'b, - X: 'b, - Self: 'b; + X: 'c; /// Does a light decomposition of self `decomposer`, and evaluates `f` on the result. /// Does not consume self. - fn eval_ref_decompose<'b, 'c, R, F>(&'b self, f: F) -> R + fn eval_ref_decompose<'c, R>(&self, f: impl FnOnce(D::Reference<'c>) -> R) -> R where - X: 'c, - Self: 'b, - R: 'b, - F: FnOnce(D::Reference<'c>) -> R; + X: 'c; /// Returns an owned instance of `X`, cloning or converting non-true instances when necessary. fn own(self) -> X; @@ -178,9 +173,10 @@ } #[inline] - fn eval_ref_decompose(&self, f: F) -> R + fn eval_ref_decompose<'b, R>(&self, f: impl FnOnce(&'b X) -> R) -> R where - F: for<'a> FnOnce(&'a X) -> R, + X: 'b, + Self: 'b, { f(self) }