title: how to properly distinguish borrow and move?
body: <p>Recently, I started to learn a new programming language, rust.
  It has an interesting feature called move and borrow, but it is really
  hard to understand in some situations.</p>
  <p>To my opinion, if a variable prefixed with a <code>&amp;</code>, it's borrow, but the
  following code confused me.</p>
  <pre class="lang-rust prettyprint-override"><code>fn iter(lst: &amp;[String]) {
      //item variable is prefix with '&amp;', so i think it's borrow, but the compiler tells me it's move.
      //the compiler suggests to remove '&amp;', completely contrary to what I thought.
      for &amp;item in lst {
          println!(&quot;item is: {}&quot;, item)
      }
  }
  </code></pre>
  <p>Is there a intuitive way to distinguish the move and borrow.</p>