&gt; know how to capture arguments when needed<p>Not to take away from your other criticisms, but in most languages <i>how</i> the arguments are captured has no relevance (in Javascript — and most every other managed language — the environment is always captured by reference and the GC handles lifetimes of &quot;whatever&quot;), whereas it is very relevant and important for C++. So I think that part of the criticism is unwarranted.<p>Though Rust didn&#x27;t go to the same lengths[0] you still have to specify whether the environment is captured by reference (the default) or by value (`move` lambdas), because that can have a large and semantic impact on the system.<p>[0] see <a href="https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;rust&#x2F;comments&#x2F;46w4g4&#x2F;what_is_rusts_lambda_syntax_and_design_rationale&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;rust&#x2F;comments&#x2F;46w4g4&#x2F;what_is_rusts_...</a> for the impressions of a C++ developers wrt what it sees as corners cut, and replies by rust devs showing these corners turned out to be mostly unnecessary in rust