title: What does the first explicit lifetime specifier on an impl mean?
body: <p>There are three different lifetime specifiers on an impl:</p>
  
  <pre><code>impl&lt;'a&gt; Type&lt;'a&gt; {
      fn my_function(&amp;self) -&gt; &amp;'a u32 {
          self.x
      }
  }
  </code></pre>
  
  <p><code>Type&lt;'a&gt;</code> states that <em>there is</em> a lifetime in this impl declaration. The one on the return type <code>-&gt; &amp;'a u32</code> states that the variable that receives the return value should not die before...before what? Before the object of type <code>Type</code> dies?</p>
  
  <p>What's the difference to this:</p>
  
  <pre><code>impl TextEditor {
      //Other methods omitted ...
  
      pub fn get_text&lt;'a&gt;(&amp;'a self) -&gt; &amp;'a String {
          return &amp;self.text;
      }
  }
  </code></pre>
  
  <p>Here it says for the return type to not die before the lifetime of <code>&amp;'a self</code> ends.</p>
  
  <p>Does the last one declare only a lifetime to this one method and the other one declares a lifetime to every method (and associate function?) in the impl declaration?</p>