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)); | |
} |