title: Why is in Rust the expression in Option.and evaluated, if option is None?
body: <p>I don't understand, why Option.and() is evaluated, if option is None. The documentation says ....</p>
  <p><em>Returns None if the option is None, otherwise it returns optb (the argument of and()).</em></p>
  <p>So I would expect, that and() is only (and only then) taken into account, if option is not None. But obviously this is not the case. Let's look the following code ....</p>
  <pre><code>let n: Option&lt;i32&gt; = None;
  let m = n.and(Some(n.unwrap()));
  </code></pre>
  <p>I know this is a stupid sample, but it's just to make hopefully my point clearer.</p>
  <ul>
  <li>So n is None</li>
  <li>Therefore I would expect, that in the second line just None is assigned to m.</li>
  <li>But when running the code I get a panic, because it's tried to unwrap n which is None. Of course this panics, but why is n.unwrap() executed, if n is None? I would have assumed, that the expression of and() is only evaluated, if the option is not None, which is obviously not the case. What have I missed?</li>
  </ul>