title: In Rust, what's the difference between "{}" and "{:?}" inside a println!?
body: <p>This code works:</p>
  
  <pre><code>let x = Some(2);
  println!("{:?}", x);
  </code></pre>
  
  <p>But this does not:</p>
  
  <pre><code>let x = Some(2);
  println!("{}", x);
  </code></pre>
  
  <pre>
  5 | println!("{}", x);
    |                ^ trait `std::option::Option: std::fmt::Display` not satisfied
    |
    = note: `std::option::Option` cannot be formatted with the default formatter; try using `:?` instead if you are using a format string
    = note: required by `std::fmt::Display::fmt`
  </pre>
  
  <p>Why? What's <code>:?</code> in that context?</p>