title: Additional `'static` requirement in traits associated types?
body: <p>Consider next function for example:</p>
  <pre class="lang-rust prettyprint-override"><code>fn print(input: &amp;dyn Display) {
      println!(&quot;{}&quot;, input);
  }
  </code></pre>
  <p>It works fine, as intended.</p>
  <p>Now consider a little bit more complex example using trait with the same function inside:</p>
  <pre class="lang-rust prettyprint-override"><code>trait Print {
      type Input: ?Sized;
  
      fn print(input: &amp;Self::Input);
  }
  
  impl Print for f64 {
      type Input = dyn Display;
      
      // actually the same function as before
      fn print(input: &amp;dyn Display) {
          println!(&quot;{}&quot;, input);
      }
  }
  </code></pre>
  <p>Now if I modify first function like this:</p>
  <pre class="lang-rust prettyprint-override"><code>fn print(input: &amp;dyn Display) {
      f64::print(input);
  }
  </code></pre>
  <p>I got compile error:</p>
  <pre><code>error[E0759]: `input` has an anonymous lifetime `'_` but it needs to satisfy a `'static` lifetime requirement
  </code></pre>
  <p>Why is this happening? I see no reason for <code>'static</code> lifetime requirement in trait's associated type.</p>
  <p>Worked example <a href="https://play.rust-lang.org/?version=stable&amp;mode=debug&amp;edition=2021&amp;gist=406c5a3fa86713ab3f9ae6c1d5208313" rel="nofollow noreferrer">here</a>.</p>