src/direct_product.rs

branch
dev
changeset 135
087c60877100
parent 134
d65377920b00
--- 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<A, D>,
     V: Instance<B, Q>,
 {
-    fn eval_decompose<'b, R>(
+    fn eval_decompose<'c, R>(
         self,
-        f: impl FnOnce(Pair<D::Decomposition<'b>, Q::Decomposition<'b>>) -> R,
+        f: impl FnOnce(Pair<D::Decomposition<'c>, Q::Decomposition<'c>>) -> R,
     ) -> R
     where
-        Pair<A, B>: 'b,
-        Self: 'b,
+        Pair<A, B>: 'c,
     {
         self.0
             .eval_decompose(|a| self.1.eval_decompose(|b| f(Pair(a, b))))
     }
 
-    fn eval_ref_decompose<R, F>(&self, f: F) -> R
+    fn eval_ref_decompose<'c, R>(
+        &self,
+        f: impl FnOnce(Pair<D::Reference<'c>, Q::Reference<'c>>) -> R,
+    ) -> R
     where
-        F: for<'c> FnOnce(Pair<D::Reference<'c>, Q::Reference<'c>>) -> R,
+        Pair<A, B>: '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, D>,
     &'a V: Instance<B, Q>,
 {
-    fn eval_decompose<'b, R>(
+    fn eval_decompose<'c, R>(
         self,
-        f: impl FnOnce(Pair<D::Decomposition<'b>, Q::Decomposition<'b>>) -> R,
+        f: impl FnOnce(Pair<D::Decomposition<'c>, Q::Decomposition<'c>>) -> R,
     ) -> R
     where
-        R: 'b,
-        Pair<A, B>: 'b,
-        Self: 'b,
+        Pair<A, B>: '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<D::Reference<'c>, Q::Reference<'c>>) -> R,
+    ) -> R
     where
         Pair<A, B>: 'c,
-        Self: 'b,
-        F: FnOnce(Pair<D::Reference<'c>, Q::Reference<'c>>) -> R,
     {
         self.0
             .eval_ref_decompose(|a| self.1.eval_ref_decompose(|b| f(Pair(a, b))))

mercurial