title: Why choosing `unwrap_or_else` over `unwrap_or`?
body: <pre class="lang-rust prettyprint-override"><code>fn main() {
      let _one = None.unwrap_or("one".to_string());
      let _two = None.unwrap_or_else(|| "two".to_string());
  }
  </code></pre>
  
  <p>Any particular reason why people should prefer <code>unwrap_or_else</code> over <code>unwrap_or</code>?</p>
  
  <p>I have seen comments that <code>unwrap_or</code> is eager (<a href="https://github.com/rust-lang/rust/pull/55014" rel="noreferrer">this</a> as an example). Does that mean the values in <code>unwrap_or</code> are always evaluated before program execution? And the <code>FnOnce</code> values in <code>unwrap_or_else</code> is called only when the program execute up to that line?</p>