Consider this C++ code:
#include <iostream>
#include <functional>
using namespace std;
std::function<int(int, int)> foo(int c) {
auto add = [] (int a, int b) { return a + b; };
auto sub = [] (int a, int b) { return a - b; };
if (c > 42) {
return add;
} else {
return sub;
}
}
int main() {
cout << foo(100)(10, 20) << '\n';
}
Both lambdas (add and sub) are type erased via std::function and that function is then called in main.
I am wondering how can I replicate this pattern in rust?