title: Can not move out of type which defines the `Drop` trait [E0509]
body: <p>I have the following Rust code using <a href="https://github.com/sfackler/rust-postgres" rel="nofollow">rust-postgres</a> with the intention of committing a transaction after my struct goes out of scope</p>
  
  <pre><code>struct SqlTransaction&lt;'a&gt; {
      connection: &amp;'a Connection,
      transaction: Transaction&lt;'a&gt;,
  }
  
  impl&lt;'a&gt; Drop for SqlTransaction&lt;'a&gt; {
      fn drop(&amp;mut self) {
          let result = self.transaction.commit();
          match result {
              Ok(_) =&gt; print!("herp"),
              Error =&gt; print!("lol"),
  
          }
      }
  }
  </code></pre>
  
  <p>The compiler complains about the <code>commit()</code> line with the following message</p>
  
  <pre><code>cannot move out of type `SqlTransaction&lt;'a&gt;`, which defines the `Drop` trait [E0509]at line 12 col 22
  </code></pre>
  
  <p>What is happening and how can I fix that?</p>