--- a/src/direct_product.rs Mon May 12 20:40:14 2025 -0500 +++ b/src/direct_product.rs Mon May 12 21:56:42 2025 -0500 @@ -365,15 +365,6 @@ = Pair<D::Decomposition<'b>, Q::Decomposition<'b>> where Pair<A, B>: 'b; - type Reference<'b> - = Pair<D::Reference<'b>, Q::Reference<'b>> - where - Pair<A, B>: 'b; - - #[inline] - fn lift<'b>(Pair(u, v): Self::Reference<'b>) -> Self::Decomposition<'b> { - Pair(D::lift(u), Q::lift(v)) - } } impl<A, B, U, V, D, Q> Instance<Pair<A, B>, PairDecomposition<D, Q>> for Pair<U, V> @@ -399,7 +390,7 @@ fn eval_ref_decompose<'b, R>( &'b self, - f: impl FnOnce(Pair<D::Reference<'b>, Q::Reference<'b>>) -> R, + f: impl FnOnce(Pair<D::Decomposition<'b>, Q::Decomposition<'b>>) -> R, ) -> R where Pair<A, B>: 'b, @@ -442,15 +433,13 @@ Pair<A, B>: 'b, Self: 'b, { - self.0.eval_ref_decompose(|a| { - self.1 - .eval_ref_decompose(|b| f(Pair(D::lift(a), Q::lift(b)))) - }) + self.0 + .eval_ref_decompose(|a| self.1.eval_ref_decompose(|b| f(Pair(a, b)))) } fn eval_ref_decompose<'b, R>( &'b self, - f: impl FnOnce(Pair<D::Reference<'b>, Q::Reference<'b>>) -> R, + f: impl FnOnce(Pair<D::Decomposition<'b>, Q::Decomposition<'b>>) -> R, ) -> R where Pair<A, B>: 'b,