&gt; You&#x27;d like for this to optimize down to a function call, without saving any state from the outer scope. Don&#x27;t know if Rust does this yet.<p>It does. Rust closures translate to a stack struct containing the capture and a method call on that struct. In this case, the struct is zero-sized, so it doesn&#x27;t exist, so it&#x27;s just a function call. Additionally, unwrap_or_else will probably be monomorphised and then inlined, so there will be no call at all.<p>&quot;closure&quot; is just the term for the syntax.<p>&gt; You can&#x27;t pass a pointer to a function.<p>Sure you can.<p><pre><code>    fn main() {
        Ok(1).unwrap_or_else(inc);
    }
    
    fn inc(x: u8) -&gt; u8 {
        x+1
    }
</code></pre>
Both functions and closures implement the Fn* traits