&gt; - Rust lets you catch panics at thread boundaries (one of the most controversial decisions in Rust; I think it was the right one, but I definitely acknowledge that it&#x27;s a big tradeoff).<p>(Unstable) Rust lets you catch panics <i>anywhere</i>.  You have to be able to do that for sane FFI - as you know (but perhaps other readers don&#x27;t), a panic that unwinds across the Rust&#x2F;C FFI boundary causes undefined behavior, so AIUI extern functions in Rust should all look like:<p><pre><code>    pub extern &quot;C&quot; fn foo_the_quuxes(x: i32) -&gt; i32 {
        std::catch_panic(|| do_stuff_in_rust_land_that_may_panic(x))
          .unwrap_or(-1)
    }
</code></pre>
(Actually, checking several libraries off the top of my head that expose C APIs, most don&#x27;t do this -- probably because std::catch_panic is relatively new.)<p>Let&#x27;s hope developers don&#x27;t abuse std::catch_panic for regular Rust code.  Maybe a lint that warns about uses outside of an extern fn is worth having.