Slice and iter() simultaneously
<p>I am trying to figure out why this does not work (<a href="https://play.rust-lang.org/?gist=15f67014fa6badd1a99183b620d82b36&amp;version=stable&amp;backtrace=0" rel="noreferrer">Playground</a>):</p>

<pre><code>fn main() {
    let a = vec![1, 2, 3, 4];
    let b = a.clone();
    // slice and iter (wrong way)
    let s: i32 = &amp;a[1..a.len()].iter()
        .zip(&amp;b[1..b.len()].iter())
        .map(|(x, y)| x * y)
        .sum();
    println!("{}", s);
}
</code></pre>

<p>Error:</p>

<pre class="lang-none prettyprint-override"><code>rustc 1.13.0 (2c6933acc 2016-11-07)
error[E0277]: the trait bound `&amp;std::slice::Iter&lt;'_, {integer}&gt;: std::iter::Iterator` is not satisfied
 --&gt; &lt;anon&gt;:6:10
  |
6 |         .zip(&amp;b[1..b.len()].iter())
  |          ^^^ trait `&amp;std::slice::Iter&lt;'_, {integer}&gt;: std::iter::Iterator` not satisfied
  |
  = note: `&amp;std::slice::Iter&lt;'_, {integer}&gt;` is not an iterator; maybe try calling `.iter()` or a similar method
  = note: required because of the requirements on the impl of `std::iter::IntoIterator` for `&amp;std::slice::Iter&lt;'_, {integer}&gt;`

error: no method named `map` found for type `std::iter::Zip&lt;std::slice::Iter&lt;'_, {integer}&gt;, &amp;std::slice::Iter&lt;'_, {integer}&gt;&gt;` in the current scope
 --&gt; &lt;anon&gt;:7:10
  |
7 |         .map(|(x, y)| x * y)
  |          ^^^
  |
  = note: the method `map` exists but the following trait bounds were not satisfied: `&amp;std::slice::Iter&lt;'_, {integer}&gt; : std::iter::Iterator`, `std::iter::Zip&lt;std::slice::Iter&lt;'_, {integer}&gt;, &amp;std::slice::Iter&lt;'_, {integer}&gt;&gt; : std::iter::Iterator`
</code></pre>

<p>But this does work:</p>

<pre><code>fn main() {
    let a = vec![1, 2, 3, 4];
    let b = a.clone();
    // slice and iter (correct way)
    let s: i32 = a[1..a.len()].iter()
        .zip(b[1..b.len()].iter())
        .map(|(x, y)| x * y)
        .sum();
    println!("{}", s);
}
</code></pre>

<p>Please explain how vectors work in Rust and the difference above when I <code>iter()</code>.</p>