&gt; - Functions are not first class citizens - you can&#x27;t return function as result;<p>Of course you can: <a href="http:&#x2F;&#x2F;is.gd&#x2F;YASF8T" rel="nofollow">http:&#x2F;&#x2F;is.gd&#x2F;YASF8T</a><p>One issue is that closures don&#x27;t really have their own types, so to return closures you need to use trait objects, which means dynamically-sized types, which means you have to box them<p>- Rust book on the subject: <a href="https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;book&#x2F;closures.html#returning-closures" rel="nofollow">https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;book&#x2F;closures.html#returning-closu...</a><p>- Example of returning a boxed closure: <a href="http:&#x2F;&#x2F;is.gd&#x2F;pJIqiu" rel="nofollow">http:&#x2F;&#x2F;is.gd&#x2F;pJIqiu</a><p>&gt; Violation of &quot;explicit over implicit&quot; rule in methods declarations: argument self&#x2F;&amp;self is implicitly omitted in call, but exist in signature.<p>That&#x27;s a debatable assertion, in a method call, the self&#x2F;&amp;self is the subject, the part before the dot.<p>&gt; Because of this, for example, you can&#x27;t use method of class as request handler in Iron, you need closure wrapper with same order and count of arguments.<p>By &quot;class&quot; what do you mean? Because AFAIK it works on struct methods <a href="http:&#x2F;&#x2F;is.gd&#x2F;xu6HRc" rel="nofollow">http:&#x2F;&#x2F;is.gd&#x2F;xu6HRc</a><p>&gt; Rust has exceptions (panic), and you can&#x27;t catch them<p>That&#x27;s because Rust doesn&#x27;t have exceptions, it has panics, they&#x27;re not a general-purpose error-reporting or control-flow mechanism.<p>&gt; lack of predefined values in structures<p><a href="http:&#x2F;&#x2F;doc.rust-lang.org&#x2F;std&#x2F;default&#x2F;trait.Default.html" rel="nofollow">http:&#x2F;&#x2F;doc.rust-lang.org&#x2F;std&#x2F;default&#x2F;trait.Default.html</a><p>&gt; Usage of safe code can lead to out-of-bounds errors, with thread panic (hello to vec macros).<p>Safe rust doesn&#x27;t mean no panics. `panic!` is safe rust.