Only `proc` closures were <i>boxed</i>, `|...| -&gt; ...` closures were pointers into the stack. However, it is true that all closures were type erased, and were hence equivalent to certain trait object types (`Box&lt;FnOnce(...) -&gt; ...&gt;` for `proc`, and `&amp;mut FnMut(...) -&gt; ...` for the pipes).<p>Also, functions could coerce to either of the closure types, and hence be passed straight to functions expecting them.