title: .expect( format!() ): expected `&str`, found struct `String`
body: <p>I tried to create a macro that replaces,</p>
  <pre><code>first: Some(first.as_ref().parse::&lt;u64&gt;().expect(&quot;Could not parse 'first'&quot;))
  </code></pre>
  <p>I've seen this done in other modules like <a href="https://docs.rs/clap/2.33.0/clap/macro.values_t.html" rel="nofollow noreferrer">Clap with <code>values_t!</code></a>, my attempt to abstract this doesn't extend to types. I wrote this,</p>
  <pre class="lang-rust prettyprint-override"><code>macro_rules! parse_u64 {
    ($var:ident) =&gt; {
      Some(
        $var
        .as_ref()
        .parse::&lt;u64&gt;()
        .expect(  format!(&quot;Could not parse '{:?}'&quot;, stringify!($var))  )
      ) 
    };
  }
  </code></pre>
  <p>This produces the following error,</p>
  <pre class="lang-rust prettyprint-override"><code>first: parse_u64!(first),
         ^^^^^^^^^^^^^^^^^ expected `&amp;str`, found struct `String`
  </code></pre>
  <p>What am I doing wrong here: this is a simple macro with only three things in the chain? Why do I get this error and how can I fix it?</p>
  <hr />
  <p>You can see this in this <a href="https://play.rust-lang.org/?version=stable&amp;mode=debug&amp;edition=2018&amp;gist=ee6f0c8b3b3574d2bee4cda1fcbace5f" rel="nofollow noreferrer">Rust Playground example</a></p>