title: How to destructure tuple struct with reference
body: <p>I'm trying to use the hyper library to make some requests. The <a href="http://hyper.rs/hyper/v0.9.12/hyper/header/struct.Headers.html#method.get" rel="nofollow noreferrer"><code>Headers::get()</code></a> method returns <code>Option&lt;&amp;H&gt;</code>, where <code>H</code> is a tuple struct with one field. I can use <code>if let Some()</code> to destructure the <code>Option</code>. But how do we destructure the <code>&amp;H</code>? Sure I could always access the field with <code>.0</code>, but I'm curious if Rust has a syntax to do this.</p>
  
  <pre><code>struct s(String);
  
  fn f(input: &amp;s) -&gt; &amp;s {
      input
  }
  
  fn main() {
      let my_struct1 = s("a".to_owned());
      let s(foo) = my_struct1;
      let my_struct2 = s("b".to_owned());
      let &amp;s(bar) = f(&amp;my_struct2); // this does not work
      let baz = &amp;my_struct2.0; // this works
  }
  </code></pre>