| 133:2b13f8a0c8ba | 136:22fd33834ab7 |
|---|---|
| 363 { | 363 { |
| 364 type Decomposition<'b> | 364 type Decomposition<'b> |
| 365 = Pair<D::Decomposition<'b>, Q::Decomposition<'b>> | 365 = Pair<D::Decomposition<'b>, Q::Decomposition<'b>> |
| 366 where | 366 where |
| 367 Pair<A, B>: 'b; | 367 Pair<A, B>: 'b; |
| 368 type Reference<'b> | |
| 369 = Pair<D::Reference<'b>, Q::Reference<'b>> | |
| 370 where | |
| 371 Pair<A, B>: 'b; | |
| 372 | |
| 373 #[inline] | |
| 374 fn lift<'b>(Pair(u, v): Self::Reference<'b>) -> Self::Decomposition<'b> { | |
| 375 Pair(D::lift(u), Q::lift(v)) | |
| 376 } | |
| 377 } | 368 } |
| 378 | 369 |
| 379 impl<A, B, U, V, D, Q> Instance<Pair<A, B>, PairDecomposition<D, Q>> for Pair<U, V> | 370 impl<A, B, U, V, D, Q> Instance<Pair<A, B>, PairDecomposition<D, Q>> for Pair<U, V> |
| 380 where | 371 where |
| 381 A: Space, | 372 A: Space, |
| 397 .eval_decompose(|a| self.1.eval_decompose(|b| f(Pair(a, b)))) | 388 .eval_decompose(|a| self.1.eval_decompose(|b| f(Pair(a, b)))) |
| 398 } | 389 } |
| 399 | 390 |
| 400 fn eval_ref_decompose<'b, R>( | 391 fn eval_ref_decompose<'b, R>( |
| 401 &'b self, | 392 &'b self, |
| 402 f: impl FnOnce(Pair<D::Reference<'b>, Q::Reference<'b>>) -> R, | 393 f: impl FnOnce(Pair<D::Decomposition<'b>, Q::Decomposition<'b>>) -> R, |
| 403 ) -> R | 394 ) -> R |
| 404 where | 395 where |
| 405 Pair<A, B>: 'b, | 396 Pair<A, B>: 'b, |
| 406 Self: 'b, | 397 Self: 'b, |
| 407 { | 398 { |
| 440 ) -> R | 431 ) -> R |
| 441 where | 432 where |
| 442 Pair<A, B>: 'b, | 433 Pair<A, B>: 'b, |
| 443 Self: 'b, | 434 Self: 'b, |
| 444 { | 435 { |
| 445 self.0.eval_ref_decompose(|a| { | 436 self.0 |
| 446 self.1 | 437 .eval_ref_decompose(|a| self.1.eval_ref_decompose(|b| f(Pair(a, b)))) |
| 447 .eval_ref_decompose(|b| f(Pair(D::lift(a), Q::lift(b)))) | |
| 448 }) | |
| 449 } | 438 } |
| 450 | 439 |
| 451 fn eval_ref_decompose<'b, R>( | 440 fn eval_ref_decompose<'b, R>( |
| 452 &'b self, | 441 &'b self, |
| 453 f: impl FnOnce(Pair<D::Reference<'b>, Q::Reference<'b>>) -> R, | 442 f: impl FnOnce(Pair<D::Decomposition<'b>, Q::Decomposition<'b>>) -> R, |
| 454 ) -> R | 443 ) -> R |
| 455 where | 444 where |
| 456 Pair<A, B>: 'b, | 445 Pair<A, B>: 'b, |
| 457 Self: 'b, | 446 Self: 'b, |
| 458 { | 447 { |