title: Why do I get "unsatisfied trait bounds" for a Vec<&&str> when using join?
body: <p>I'm confused about this:</p>
  <pre class="lang-rust prettyprint-override"><code>use itertools::Itertools; // 0.10.0
  
  fn main() {
      let combos = [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;].iter().combinations(2).collect::&lt;Vec&lt;_&gt;&gt;();
      println!(&quot;{:#?}&quot;, combos[0].join(&quot;&quot;));
  }
  </code></pre>
  <pre class="lang-none prettyprint-override"><code>error[E0599]: the method `join` exists for struct `Vec&lt;&amp;&amp;str&gt;`, but its trait bounds were not satisfied
     --&gt; src/main.rs:5:33
      |
  5   |       println!(&quot;{:#?}&quot;, combos[0].join(&quot;&quot;));
      |                                   ^^^^ method cannot be called on `Vec&lt;&amp;&amp;str&gt;` due to unsatisfied trait bounds
      |
      = note: the following trait bounds were not satisfied:
              `Vec&lt;&amp;&amp;str&gt;: Iterator`
              which is required by `Vec&lt;&amp;&amp;str&gt;: Itertools`
              `&lt;[&amp;&amp;str] as Join&lt;_&gt;&gt;::Output = _`
              `[&amp;&amp;str]: Iterator`
              which is required by `[&amp;&amp;str]: Itertools`
  </code></pre>
  <ol>
  <li>Why is <code>combos[0]</code> a <code>Vec&lt;&amp;&amp;str&gt;</code>, rather than a <code>Vec&lt;&amp;str&gt;</code>?</li>
  <li>What are the unsatisfied trait bounds here?</li>
  <li>How do I resolve the error?</li>
  </ol>
  <p>I'm sure these answers are derivable from the <a href="https://doc.rust-lang.org/book/title-page.html" rel="nofollow noreferrer">book</a>, but I was hoping not to have to read the whole book to write this trivial program. Perhaps one can not merely dabble in Rust ...</p>