title: Why do I not get an error about a use of possibly-uninitialized value in one match, but not in another match that uses `panic`?
body: <pre><code>const FILE_NAME: &amp;str = "/tmp/main.rs";
  
  fn main() {
      println!("Hello, world!");
      let metadata;
      match std::fs::metadata(FILE_NAME) {
          Ok(meta_data) =&gt; {
              metadata = meta_data;
              println!("metadata: {:?}", metadata);
          }
          _ =&gt; {
              panic!("not meta enough!");
          }
      }
  
      let modified: std::time::SystemTime;
      match metadata.modified() {
          Ok(x) =&gt; {
              modified = x;
              println!("modified: {:?}", modified); // this works
          }
          _ =&gt; (),
      }
  
      // println!("modified: {:?}", modified); //-&gt; this does not work
      let len = metadata.len();
      println!("metadata: {:?}", metadata);
      println!("len: {}", len);
  }
  </code></pre>
  
  <p>I don't understand why it fails if I uncomment line 22:</p>
  
  <pre class="lang-none prettyprint-override"><code>error[E0381]: borrow of possibly-uninitialized variable: `modified`
    --&gt; src/main.rs:25:32
     |
  25 |     println!("modified: {:?}", modified); //-&gt; this does not work
     |                                ^^^^^^^^ use of possibly-uninitialized `modified`
  </code></pre>
  
  <p>The same code on line 18 works ok. What am I overlooking? </p>