{
  "description": "Browse aymeric's, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.",
  "feed_url": "https://aggr.aymericbeaumet.com/sources/yossarian.net/feed.json",
  "home_page_url": "https://aggr.aymericbeaumet.com/sources/yossarian.net/",
  "items": [
    {
      "authors": [
        {
          "name": "yossarian.net by yossarian"
        }
      ],
      "content_html": "<p>In Rust, one of the most common ways to implement core traits (like <code>Debug</code>, <code>Display</code>, and <code>Clone</code>) is to <code>#[derive(...)]</code> them, e.g.:</p>\n<pre><code class=\"language-rust\"><span class=\"code-snippet\" data-language=\"Rust\"><span class=\"syntax-source syntax-rust\"><span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">derive</span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span></span></span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\">Debug</span></span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span></span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n<span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-storage syntax-type syntax-struct syntax-rust\">struct</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-entity syntax-name syntax-struct syntax-rust\">Widgets</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n  <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">foo</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-storage syntax-type syntax-rust\">u32</span>,\n  <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">bar</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-storage syntax-type syntax-rust\">usize</span>,\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n</span></span></code></pre>\n<p>What I <em>didn't</em> know until recently is that Rust currently emits <code>#[inline]</code> as part of these derivations. This is seemingly not guaranteed, but is <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://doc.rust-lang.org/reference/attributes/derive.html\">implied by example in the reference</a> and can also be seen if one expands the macros.</p>\n<p>Using the example above, this is what you get when you expand the <code>#[derive(Debug)]</code> <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://play.rust-lang.org/?version=stable&amp;mode=debug&amp;edition=2024&amp;gist=bf60dea24f7278ad716ebc2a43f99a5e\">in the playground</a>:</p>\n<pre><code class=\"language-rust\"><span class=\"code-snippet\" data-language=\"Rust\"><span class=\"syntax-source syntax-rust\"><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-storage syntax-type syntax-struct syntax-rust\">struct</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-entity syntax-name syntax-struct syntax-rust\">Widgets</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n    <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">foo</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-storage syntax-type syntax-rust\">u32</span>,\n    <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">bar</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-storage syntax-type syntax-rust\">usize</span>,\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n<span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">automatically_derived</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n<span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-storage syntax-type syntax-impl syntax-rust\">impl</span> </span><span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Debug <span class=\"syntax-keyword syntax-other syntax-rust\">for</span></span><span class=\"syntax-meta syntax-impl syntax-rust\"> <span class=\"syntax-entity syntax-name syntax-impl syntax-rust\">Widgets</span> </span><span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n    <span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">inline</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n    <span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-storage syntax-type syntax-function syntax-rust\">fn</span> </span><span class=\"syntax-entity syntax-name syntax-function syntax-rust\">fmt</span></span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-parameters syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-begin syntax-rust\">(</span><span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-parameter syntax-rust\">self</span>, <span class=\"syntax-variable syntax-parameter syntax-rust\">f</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-storage syntax-modifier syntax-rust\">mut</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Formatter</span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-parameters syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-end syntax-rust\">)</span></span></span></span><span class=\"syntax-meta syntax-function syntax-rust\"> <span class=\"syntax-meta syntax-function syntax-return-type syntax-rust\"><span class=\"syntax-punctuation syntax-separator syntax-rust\">-&gt;</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Result</span> </span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n        <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Formatter<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>debug_struct_field2_finish<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>f<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>Widgets<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n            <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>foo<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-language syntax-rust\">self</span>.foo<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>bar<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-language syntax-rust\">self</span>.bar</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span>\n    </span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n</span></span></code></pre>\n<p>This is <em>almost</em> always what we want: <code>#[inline]</code> is just a hint, and typical derived <code>Debug</code>, <code>Clone</code>, etc. implementations benefit from being inlined (since they're often trivial).</p>\n<p>But not always! Imagine an error hierarchy like this<sup class=\"footnote-ref\"><a href=\"#fn-1\" id=\"fnref-1\" data-footnote-ref>1</a></sup>:</p>\n<pre><code class=\"language-rust\"><span class=\"code-snippet\" data-language=\"Rust\"><span class=\"syntax-source syntax-rust\"><span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">derive</span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span></span></span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\">Debug</span></span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span></span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n<span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-storage syntax-type syntax-struct syntax-rust\">struct</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-entity syntax-name syntax-struct syntax-rust\">ErrorA</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n  <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">lots</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n  <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">of</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n  <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">chunky</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n  <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">fields</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n  <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">within</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n  <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">this</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n  r#<span class=\"syntax-variable syntax-other syntax-member syntax-rust\">type</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n\n<span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">derive</span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span></span></span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\">Debug</span></span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span></span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n<span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-storage syntax-type syntax-struct syntax-rust\">struct</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-entity syntax-name syntax-struct syntax-rust\">ErrorB</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n  <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">inner</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> ErrorA,\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n\n<span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">derive</span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span></span></span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\">Debug</span></span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span></span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n<span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-storage syntax-type syntax-struct syntax-rust\">struct</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-entity syntax-name syntax-struct syntax-rust\">ErrorC</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n  <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">inner</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> ErrorB,\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n\n<span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">derive</span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span></span></span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\">Debug</span></span><span class=\"syntax-meta syntax-annotation syntax-parameters syntax-rust\"><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span></span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n<span class=\"syntax-meta syntax-enum syntax-rust\"><span class=\"syntax-storage syntax-type syntax-enum syntax-rust\">enum</span> <span class=\"syntax-entity syntax-name syntax-enum syntax-rust\">Errors</span> <span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n    A<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>ErrorA</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n    B<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>ErrorB</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n    C<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>ErrorC</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n</span></span></code></pre>\n<p>produces:</p>\n<pre><code class=\"language-rust\"><span class=\"code-snippet\" data-language=\"Rust\"><span class=\"syntax-source syntax-rust\"><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-storage syntax-type syntax-struct syntax-rust\">struct</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-entity syntax-name syntax-struct syntax-rust\">ErrorA</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n    <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">lots</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n    <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">of</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n    <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">chunky</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n    <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">fields</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n    <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">within</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n    <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">this</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n    r#<span class=\"syntax-variable syntax-other syntax-member syntax-rust\">type</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> String,\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n<span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">automatically_derived</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n<span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-storage syntax-type syntax-impl syntax-rust\">impl</span> </span><span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Debug <span class=\"syntax-keyword syntax-other syntax-rust\">for</span></span><span class=\"syntax-meta syntax-impl syntax-rust\"> <span class=\"syntax-entity syntax-name syntax-impl syntax-rust\">ErrorA</span> </span><span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n    <span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">inline</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n    <span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-storage syntax-type syntax-function syntax-rust\">fn</span> </span><span class=\"syntax-entity syntax-name syntax-function syntax-rust\">fmt</span></span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-parameters syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-begin syntax-rust\">(</span><span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-parameter syntax-rust\">self</span>, <span class=\"syntax-variable syntax-parameter syntax-rust\">f</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-storage syntax-modifier syntax-rust\">mut</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Formatter</span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-parameters syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-end syntax-rust\">)</span></span></span></span><span class=\"syntax-meta syntax-function syntax-rust\"> <span class=\"syntax-meta syntax-function syntax-return-type syntax-rust\"><span class=\"syntax-punctuation syntax-separator syntax-rust\">-&gt;</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Result</span> </span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n        <span class=\"syntax-storage syntax-type syntax-rust\">let</span> names<span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-storage syntax-modifier syntax-lifetime syntax-rust\">&#39;static</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">_</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">=</span>\n            <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>lots<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>of<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>chunky<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>fields<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>within<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>this<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>type<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span><span class=\"syntax-punctuation syntax-terminator syntax-rust\">;</span>\n        <span class=\"syntax-storage syntax-type syntax-rust\">let</span> values<span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span>dyn <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Debug<span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span> <span class=\"syntax-keyword syntax-operator syntax-rust\">=</span>\n            <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-language syntax-rust\">self</span>.lots<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-language syntax-rust\">self</span>.of<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-language syntax-rust\">self</span>.chunky<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-language syntax-rust\">self</span>.fields<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-language syntax-rust\">self</span>.within<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n                        <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-language syntax-rust\">self</span>.this<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-language syntax-rust\">self</span>.r<span class=\"syntax-keyword syntax-operator syntax-rust\">#</span><span class=\"syntax-storage syntax-type syntax-type syntax-rust\">type</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span><span class=\"syntax-punctuation syntax-terminator syntax-rust\">;</span>\n        <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Formatter<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>debug_struct_fields_finish<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>f<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>ErrorA<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> names<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n            values</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span>\n    </span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n<span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">automatically_derived</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n<span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-storage syntax-type syntax-impl syntax-rust\">impl</span> </span><span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Default <span class=\"syntax-keyword syntax-other syntax-rust\">for</span></span><span class=\"syntax-meta syntax-impl syntax-rust\"> <span class=\"syntax-entity syntax-name syntax-impl syntax-rust\">ErrorA</span> </span><span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n    <span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">inline</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n    <span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-storage syntax-type syntax-function syntax-rust\">fn</span> </span><span class=\"syntax-entity syntax-name syntax-function syntax-rust\">default</span></span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-parameters syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-begin syntax-rust\">(</span></span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-parameters syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-end syntax-rust\">)</span></span></span></span><span class=\"syntax-meta syntax-function syntax-rust\"> <span class=\"syntax-meta syntax-function syntax-return-type syntax-rust\"><span class=\"syntax-punctuation syntax-separator syntax-rust\">-&gt;</span> <span class=\"syntax-storage syntax-type syntax-rust\">Self</span></span> </span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n        <span class=\"syntax-storage syntax-type syntax-rust\">Self</span> <span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n            lots<span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>default<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span></span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n            of<span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>default<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span></span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n            chunky<span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>default<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span></span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n            fields<span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>default<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span></span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n            within<span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>default<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span></span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n            this<span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>default<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span></span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n            r<span class=\"syntax-keyword syntax-operator syntax-rust\">#</span><span class=\"syntax-storage syntax-type syntax-type syntax-rust\">type</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Default<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>default<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span></span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n        </span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span>\n    </span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n\n<span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-storage syntax-type syntax-struct syntax-rust\">struct</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-entity syntax-name syntax-struct syntax-rust\">ErrorB</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n    <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">inner</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> ErrorA,\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n<span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">automatically_derived</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n<span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-storage syntax-type syntax-impl syntax-rust\">impl</span> </span><span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Debug <span class=\"syntax-keyword syntax-other syntax-rust\">for</span></span><span class=\"syntax-meta syntax-impl syntax-rust\"> <span class=\"syntax-entity syntax-name syntax-impl syntax-rust\">ErrorB</span> </span><span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n    <span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">inline</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n    <span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-storage syntax-type syntax-function syntax-rust\">fn</span> </span><span class=\"syntax-entity syntax-name syntax-function syntax-rust\">fmt</span></span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-parameters syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-begin syntax-rust\">(</span><span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-parameter syntax-rust\">self</span>, <span class=\"syntax-variable syntax-parameter syntax-rust\">f</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-storage syntax-modifier syntax-rust\">mut</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Formatter</span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-parameters syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-end syntax-rust\">)</span></span></span></span><span class=\"syntax-meta syntax-function syntax-rust\"> <span class=\"syntax-meta syntax-function syntax-return-type syntax-rust\"><span class=\"syntax-punctuation syntax-separator syntax-rust\">-&gt;</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Result</span> </span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n        <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Formatter<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>debug_struct_field1_finish<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>f<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>ErrorB<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n            <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>inner<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-language syntax-rust\">self</span>.inner</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span>\n    </span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n\n<span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-storage syntax-type syntax-struct syntax-rust\">struct</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-entity syntax-name syntax-struct syntax-rust\">ErrorC</span> </span><span class=\"syntax-meta syntax-struct syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n    <span class=\"syntax-variable syntax-other syntax-member syntax-rust\">inner</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> ErrorB,\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n<span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">automatically_derived</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n<span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-storage syntax-type syntax-impl syntax-rust\">impl</span> </span><span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Debug <span class=\"syntax-keyword syntax-other syntax-rust\">for</span></span><span class=\"syntax-meta syntax-impl syntax-rust\"> <span class=\"syntax-entity syntax-name syntax-impl syntax-rust\">ErrorC</span> </span><span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n    <span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">inline</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n    <span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-storage syntax-type syntax-function syntax-rust\">fn</span> </span><span class=\"syntax-entity syntax-name syntax-function syntax-rust\">fmt</span></span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-parameters syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-begin syntax-rust\">(</span><span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-parameter syntax-rust\">self</span>, <span class=\"syntax-variable syntax-parameter syntax-rust\">f</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-storage syntax-modifier syntax-rust\">mut</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Formatter</span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-parameters syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-end syntax-rust\">)</span></span></span></span><span class=\"syntax-meta syntax-function syntax-rust\"> <span class=\"syntax-meta syntax-function syntax-return-type syntax-rust\"><span class=\"syntax-punctuation syntax-separator syntax-rust\">-&gt;</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Result</span> </span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n        <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Formatter<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>debug_struct_field1_finish<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>f<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>ErrorC<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n            <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>inner<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-language syntax-rust\">self</span>.inner</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span>\n    </span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n\n<span class=\"syntax-meta syntax-enum syntax-rust\"><span class=\"syntax-storage syntax-type syntax-enum syntax-rust\">enum</span> <span class=\"syntax-entity syntax-name syntax-enum syntax-rust\">Errors</span> <span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span> A<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>ErrorA</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> B<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>ErrorB</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> C<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>ErrorC</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> </span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n<span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">automatically_derived</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n<span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-storage syntax-type syntax-impl syntax-rust\">impl</span> </span><span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Debug <span class=\"syntax-keyword syntax-other syntax-rust\">for</span></span><span class=\"syntax-meta syntax-impl syntax-rust\"> <span class=\"syntax-entity syntax-name syntax-impl syntax-rust\">Errors</span> </span><span class=\"syntax-meta syntax-impl syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n    <span class=\"syntax-meta syntax-annotation syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-annotation syntax-rust\">#</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">[</span><span class=\"syntax-variable syntax-annotation syntax-rust\">inline</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">]</span></span>\n    <span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-storage syntax-type syntax-function syntax-rust\">fn</span> </span><span class=\"syntax-entity syntax-name syntax-function syntax-rust\">fmt</span></span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-parameters syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-begin syntax-rust\">(</span><span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-variable syntax-parameter syntax-rust\">self</span>, <span class=\"syntax-variable syntax-parameter syntax-rust\">f</span><span class=\"syntax-punctuation syntax-separator syntax-rust\">:</span> <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span><span class=\"syntax-storage syntax-modifier syntax-rust\">mut</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Formatter</span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-function syntax-parameters syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-end syntax-rust\">)</span></span></span></span><span class=\"syntax-meta syntax-function syntax-rust\"> <span class=\"syntax-meta syntax-function syntax-return-type syntax-rust\"><span class=\"syntax-punctuation syntax-separator syntax-rust\">-&gt;</span> <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>Result</span> </span><span class=\"syntax-meta syntax-function syntax-rust\"><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n        <span class=\"syntax-keyword syntax-control syntax-rust\">match</span> <span class=\"syntax-variable syntax-language syntax-rust\">self</span> <span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-begin syntax-rust\">{</span>\n            <span class=\"syntax-storage syntax-type syntax-rust\">Self</span><span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>A<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>__self_0</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span> <span class=\"syntax-keyword syntax-operator syntax-rust\">=&gt;</span>\n                <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Formatter<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>debug_tuple_field1_finish<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>f<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>A<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n                    <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span>__self_0</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n            <span class=\"syntax-storage syntax-type syntax-rust\">Self</span><span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>B<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>__self_0</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span> <span class=\"syntax-keyword syntax-operator syntax-rust\">=&gt;</span>\n                <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Formatter<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>debug_tuple_field1_finish<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>f<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>B<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n                    <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span>__self_0</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n            <span class=\"syntax-storage syntax-type syntax-rust\">Self</span><span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>C<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>__self_0</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span> <span class=\"syntax-keyword syntax-operator syntax-rust\">=&gt;</span>\n                <span class=\"syntax-meta syntax-path syntax-rust\"><span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">core<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">fmt<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span><span class=\"syntax-meta syntax-path syntax-rust\">Formatter<span class=\"syntax-punctuation syntax-accessor syntax-rust\">::</span></span>debug_tuple_field1_finish<span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-rust\">(</span>f<span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-rust\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-rust\">&quot;</span>C<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-rust\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n                    <span class=\"syntax-keyword syntax-operator syntax-rust\">&amp;</span>__self_0</span><span class=\"syntax-meta syntax-group syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-rust\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-rust\">,</span>\n        </span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span>\n    </span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n</span><span class=\"syntax-meta syntax-block syntax-rust\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-end syntax-rust\">}</span></span></span>\n</span></span></code></pre>\n<p>That's a lot of code that can get inlined for each invocation of the <code>Debug</code> implementation of <code>Errors</code>, which can occur repeatedly in e.g. debug or trace logging.</p>\n<p>In fact, it's so much code that it can turn out to be a non-trivial amount of a Rust binary's total size: we found that we could shrink uv's binary size by approximately 160KB by preventing<sup class=\"footnote-ref\"><a href=\"#fn-2\" id=\"fnref-2\" data-footnote-ref>2</a></sup> <code>rustc</code> from inlining a given <code>Debug</code> implementation.</p>\n<p>This was surprising to me on two levels: the size cost added up fast, and <code>rustc</code> (seemingly) did not apply a limit to the size or number of times a <code>Debug</code> implementation was inlined. I suspect this is the right decision in many programs, however!</p>\n<section class=\"footnotes\" data-footnotes>\n<ol>\n<li id=\"fn-1\">\n<p>This hierarchy is <em>drastically</em> simplified: real world Rust applications often have deeply nested error enumerations with nontrivial numbers of fields. <a href=\"#fnref-1\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"1\" aria-label=\"Back to reference 1\">↩</a></p>\n</li>\n<li id=\"fn-2\">\n<p>We did this by adding our own-proc macro that behaves like <code>derive(Debug)</code>, but with <code>#[inline(never)]</code>. <a href=\"#fnref-2\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"2\" aria-label=\"Back to reference 2\">↩</a></p>\n</li>\n</ol>\n</section>\n",
      "date_modified": "2026-10-04T01:41:57+00:00",
      "date_published": "2026-10-04T01:41:57+00:00",
      "external_url": "https://yossarian.net/til/post/rust-s-derive-often-implies-inline/",
      "id": "urn:aggr:item:dd1c835e931fd75b964ec0f8f529f09f6b94296c",
      "summary": "Comments",
      "tags": [
        "news",
        "rust"
      ],
      "title": "Rust's derive often implies inline",
      "url": "https://aggr.aymericbeaumet.com/items/lobste-rs/2026-10-04-rust-s-derive-often-implies-inline/"
    }
  ],
  "language": "en",
  "title": "yossarian.net",
  "version": "https://jsonfeed.org/version/1.1"
}