Lambdas in C++ are almost identical to Rust ones (each closure is a unique unnameable struct containing the captures, with an overloaded operator()), in fact, the current Rust scheme was explicitly inspired by C++11 closures. Historically (C++98), it's true that not much code used closures, because they didn't exist at a language level, but the modern language uses them much more aggressively, even pushing hard on making them more and more flexible (e.g. auto/generic closures in C++14). For instance, sort[1] can take a closure which is more efficient that way than a function pointer, and easier to use than a manually implemented custom type.
Also, closures are just structs with functions that take them as arguments, so if the compiler can handle those, it can handle closures.
Also, closures are just structs with functions that take them as arguments, so if the compiler can handle those, it can handle closures.
[1]: http://en.cppreference.com/w/cpp/algorithm/sort