title: Why does initialising a vector of vectors (Vec<Vec<T>>) expect a T instead of a Vec<T>?
body: <p>I missed something with the initialization of a vector of vectors.
  In a first approach, I tried this code:</p>
  
  <pre><code>let mut landFirst: Vec&lt;Vec&lt;char&gt;&gt; = Vec::with_capacity(width);
  for v in landFirst {
      v.push(Vec::with_capacity(height));
  }
  </code></pre>
  
  <p>But it failed:</p>
  
  <pre class="lang-none prettyprint-override"><code>v.push(Vec::with_capacity(height));
         ^^^^^^^^^^^^^^^^^^^^^^^^^ expected char, found struct `std::vec::Vec`
  </code></pre>
  
  <p>Why? <code>v</code> is composed of <code>Vec&lt;char&gt;</code>, not of <code>char</code>.</p>
  
  <p>It works with this code:</p>
  
  <pre><code>let mut landFirst: Vec&lt;Vec&lt;char&gt;&gt; = Vec::with_capacity(width);
  for cpt in 0..width {
      landFirst.insert(cpt, Vec::with_capacity(height));
  }
  </code></pre>
  
  <p>Can you enlighten me please?</p>