我有这个有效的功能:
\nfn compose<A, B, C>(f: impl Fn(A) -> B, g: impl Fn(B) -> C) -> impl Fn(A) -> C {\n move |x: A| g(f(x))\n}\nRun Code Online (Sandbox Code Playgroud)\n我想在这种情况下使用柯里化,这样我就可以这样做:
\n/* THIS */\ncompose(f)(g)(x)\n\n/* Instead of this */\ncompose(f, g)(x)\nRun Code Online (Sandbox Code Playgroud)\n考虑制作一个宏来实现这一点是否合理?
\ncompose(f)(g)(h)\xc2\xb7\xc2\xb7\xc2\xb7(x)\nRun Code Online (Sandbox Code Playgroud)\n我已经设法得到与我想要的有点相似的东西:
\nfn compose<A, B, C, F: \'static, G: \'static>(f: F) -> impl Fn(G) -> Box<dyn Fn(A) -> C>\nwhere\n F: Fn(A) -> B + Copy,\n G: Fn(B) -> C + Copy,\n{\n move |g: G| Box::new(move |x: A| g(f(x)))\n}\n\nlet inc …Run Code Online (Sandbox Code Playgroud)