title: Mutex locking inside loop declaration
body: <p>In my understanding gaining a lock on a mutex and then immediately calling a function on the guarded structure without declaring a separate variable for the MutexGuard releases this guard once the function call is done.</p>
  <p>My question is whether this is also the case when getting a lock within a loop declaration like so:</p>
  <pre><code>for ele in mtx.lock().await.clone() {
      // do something requiring lock on mtx
  }
  </code></pre>
  <p>The expectation here would be that once the <code>clone</code> call completes, the lock on mtx is released and can be reacquired inside the loop. Is this the case? If not, why is this not the case?</p>