title: When does a closure implement Fn, FnMut and FnOnce?
body: <p>What are the <strong>specific conditions</strong> for a closure to implement the <code>Fn</code>, <code>FnMut</code> and <code>FnOnce</code> traits?</p>
  
  <p>That is:</p>
  
  <ul>
  <li>When does a closure <em>not</em> implement the <code>FnOnce</code> trait?</li>
  <li>When does a closure <em>not</em> implement the <code>FnMut</code> trait?</li>
  <li>When does a closure <em>not</em> implement the <code>Fn</code> trait?</li>
  </ul>
  
  <p>For instance, mutating the state of the closure on it's body makes the compiler not implement <code>Fn</code> on it.</p>