title: The trait bound `String: From<&T>` is not satisfied when my T is bound with Into<String>
body: <p>I have the following code,</p>
  <pre class="lang-rust prettyprint-override"><code>impl&lt;T: Debug + Into&lt;String&gt; + Clone&gt; TryFrom&lt;Vec&lt;T&gt;&gt; for Positionals {
    type Error = &amp;'static str;
    fn try_from(mut vec: Vec&lt;T&gt;) -&gt; Result&lt;Self, Self::Error&gt; {
      let mystr: String = vec.get(0).unwrap().into();
  </code></pre>
  <p>And that code is producing this error,</p>
  <pre><code>error[E0277]: the trait bound `String: From&lt;&amp;T&gt;` is not satisfied
    --&gt; bin/seq.rs:21:43
     |
  21 |         let mystr: String = vec.get(0).unwrap().into();
     |                                                 ^^^^ the trait `From&lt;&amp;T&gt;` is not implemented for `String`
     |
     = note: required because of the requirements on the impl of `Into&lt;String&gt;` for `&amp;T`
  help: consider introducing a `where` bound, but there might be an alternative better way to express this requirement
  </code></pre>
  <p>I'm confused as to why this is generating an error because I have a trait bound on <code>Vec&lt;T&gt;</code> such that <code>T</code> must implement <code>Into&lt;String&gt;</code>, what else is required? I don't understand why this is, I remove the <code>into()</code>, I get</p>
  <pre><code>let mystr: String = vec.get(0).unwrap();
             ------   ^^^^^^^^^^^^^^^^^^^ expected struct `String`, found `&amp;T`
  </code></pre>
  <p>How can I get my <code>T</code> in <code>Vec&lt;T&gt;</code> to <code>String</code>? The reason why I'm doing <code>Vec&lt;T&gt;</code> and not <code>Vec&lt;String&gt;</code> is because I want to support <code>Vec&lt;&amp;str&gt;</code> too.</p>