&gt; My test for the power of a language&#x27;s type manipulation is how easy is it to write an implementation of apply(Function f, Tuple t) which will call f with the values of t. I would be most interested to see how Rust will implement this kind of metaprogramming.<p>That&#x27;s kind of a weird litmus test of the power of the language&#x27;s type manipulation: it only applies to languages where functions take multiple arguments, it&#x27;s a pretty niche use case (since the workaround in Rust is straightforward), and there&#x27;s nothing particularly sophisticated about variadic generics (what you need to solve the problem). I could equally say that my litmus test of a language&#x27;s generics system is whether the compiler prevents errors during template expansion.<p>Anyway, to answer your question: that&#x27;s really easy in Rust, as long as you&#x27;re on nightly. The FnMut trait (and friends) allow you to call functions with tuples as arguments. <a href="https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;std&#x2F;ops&#x2F;trait.FnMut.html" rel="nofollow">https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;std&#x2F;ops&#x2F;trait.FnMut.html</a>