e try to call <code>push</code>,
it then sees us try to make an <code>&amp;&#39;c mut data</code>. Rust knows that <code>&#39;c</code> is contained
within <code>&#39;b</code>, and rejects our program because the <code>&amp;&#39;b data</code> must still be live!</p>

<p>Here we see that the lifetime system is much more coarse than the reference
semantics we&#39;re actually interested in preserving. For the most part, <em>that&#39;s
totally ok</em>, because it keeps us from spending all day explaining our pro