mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 16:24:46 +00:00
91535ad026
we don't track them when canonicalizing or when freshening, resulting in instable caching in the old solver, and issues when instantiating query responses in the new one.
24 lines
514 B
Rust
24 lines
514 B
Rust
fn t7p<A, B, C>(f: impl Fn(B) -> C, g: impl Fn(A) -> B) -> impl Fn(A) -> C {
|
|
move |a: A| -> C { f(g(a)) }
|
|
}
|
|
|
|
fn t8n<A, B, C>(f: impl Fn(A) -> B, g: impl Fn(A) -> C) -> impl Fn(A) -> (B, C)
|
|
where
|
|
A: Copy,
|
|
{
|
|
move |a: A| -> (B, C) {
|
|
let b = a;
|
|
let fa = f(a);
|
|
let ga = g(b);
|
|
(fa, ga)
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let f = |(_, _)| {};
|
|
let g = |(a, _)| a;
|
|
let t7 = |env| |a| |b| t7p(f, g)(((env, a), b));
|
|
//~^ ERROR mismatched types
|
|
let t8 = t8n(t7, t7p(f, g));
|
|
}
|