<!DOCTYPE HTML>
<html lang="en" class="light sidebar-visible" dir="ltr">
    <head>
        <!-- Book generated using mdBook -->
        <meta charset="UTF-8">
        <title>Serialization in rustc - Rust Compiler Development Guide</title>


        <!-- Custom HTML head -->

        <meta name="description" content="A guide to developing the Rust compiler (rustc)">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="theme-color" content="#ffffff">

        <link rel="icon" href="favicon.svg">
        <link rel="shortcut icon" href="favicon.png">
        <link rel="stylesheet" href="css/variables.css">
        <link rel="stylesheet" href="css/general.css">
        <link rel="stylesheet" href="css/chrome.css">
        <link rel="stylesheet" href="css/print.css" media="print">

        <!-- Fonts -->
        <link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
        <link rel="stylesheet" href="fonts/fonts.css">

        <!-- Highlight.js Stylesheets -->
        <link rel="stylesheet" id="highlight-css" href="highlight.css">
        <link rel="stylesheet" id="tomorrow-night-css" href="tomorrow-night.css">
        <link rel="stylesheet" id="ayu-highlight-css" href="ayu-highlight.css">

        <!-- Custom theme stylesheets -->
        <link rel="stylesheet" href="pagetoc.css">


        <!-- Provide site root and default themes to javascript -->
        <script>
            const path_to_root = "";
            const default_light_theme = "light";
            const default_dark_theme = "navy";
            window.path_to_searchindex_js = "searchindex.js";
        </script>
        <!-- Start loading toc.js asap -->
        <script src="toc.js"></script>
    </head>
    <body>
    <div id="mdbook-help-container">
        <div id="mdbook-help-popup">
            <h2 class="mdbook-help-title">Keyboard shortcuts</h2>
            <div>
                <p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
                <p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
                <p>Press <kbd>?</kbd> to show this help</p>
                <p>Press <kbd>Esc</kbd> to hide this help</p>
            </div>
        </div>
    </div>
    <div id="body-container">
        <!-- Work around some values being stored in localStorage wrapped in quotes -->
        <script>
            try {
                let theme = localStorage.getItem('mdbook-theme');
                let sidebar = localStorage.getItem('mdbook-sidebar');

                if (theme.startsWith('"') && theme.endsWith('"')) {
                    localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
                }

                if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
                    localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
                }
            } catch (e) { }
        </script>

        <!-- Set the theme before any content is loaded, prevents flash -->
        <script>
            const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
            let theme;
            try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
            if (theme === null || theme === undefined) { theme = default_theme; }
            const html = document.documentElement;
            html.classList.remove('light')
            html.classList.add(theme);
            html.classList.add("js");
        </script>

        <input type="checkbox" id="sidebar-toggle-anchor" class="hidden">

        <!-- Hide / unhide sidebar before it is displayed -->
        <script>
            let sidebar = null;
            const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
            if (document.body.clientWidth >= 1080) {
                try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
                sidebar = sidebar || 'visible';
            } else {
                sidebar = 'hidden';
                sidebar_toggle.checked = false;
            }
            if (sidebar === 'visible') {
                sidebar_toggle.checked = true;
            } else {
                html.classList.remove('sidebar-visible');
            }
        </script>

        <nav id="sidebar" class="sidebar" aria-label="Table of contents">
            <!-- populated by js -->
            <mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
            <noscript>
                <iframe class="sidebar-iframe-outer" src="toc.html"></iframe>
            </noscript>
            <div id="sidebar-resize-handle" class="sidebar-resize-handle">
                <div class="sidebar-resize-indicator"></div>
            </div>
        </nav>

        <div id="page-wrapper" class="page-wrapper">

            <div class="page">
                <div id="menu-bar-hover-placeholder"></div>
                <div id="menu-bar" class="menu-bar sticky">
                    <div class="left-buttons">
                        <label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
                            <i class="fa fa-bars"></i>
                        </label>
                        <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
                            <i class="fa fa-paint-brush"></i>
                        </button>
                        <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
                            <li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
                        </ul>
                        <button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
                            <i class="fa fa-search"></i>
                        </button>
                    </div>

                    <h1 class="menu-title">Rust Compiler Development Guide</h1>

                    <div class="right-buttons">
                        <a href="print.html" title="Print this book" aria-label="Print this book">
                            <i id="print-button" class="fa fa-print"></i>
                        </a>
                        <a href="https://github.com/rust-lang/rustc-dev-guide" title="Git repository" aria-label="Git repository">
                            <i id="git-repository-button" class="fa fa-github"></i>
                        </a>
                        <a href="https://github.com/rust-lang/rustc-dev-guide/edit/master/src/serialization.md" title="Suggest an edit" aria-label="Suggest an edit" rel="edit">
                            <i id="git-edit-button" class="fa fa-edit"></i>
                        </a>

                    </div>
                </div>

                <div id="search-wrapper" class="hidden">
                    <form id="searchbar-outer" class="searchbar-outer">
                        <div class="search-wrapper">
                            <input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
                            <div class="spinner-wrapper">
                                <i class="fa fa-spinner fa-spin"></i>
                            </div>
                        </div>
                    </form>
                    <div id="searchresults-outer" class="searchresults-outer hidden">
                        <div id="searchresults-header" class="searchresults-header"></div>
                        <ul id="searchresults">
                        </ul>
                    </div>
                </div>

                <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
                <script>
                    document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
                    document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
                    Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
                        link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
                    });
                </script>

                <div id="content" class="content">
                    <main>
                        <h1 id="serialization-in-rustc"><a class="header" href="#serialization-in-rustc">Serialization in rustc</a></h1>
<p>rustc has to <a href="https://en.wikipedia.org/wiki/Serialization">serialize</a> and deserialize various data during compilation.
Specifically:</p>
<ul>
<li>"Crate metadata", consisting mainly of query outputs, are serialized
from a binary format into <code>rlib</code> and <code>rmeta</code> files that are output when
compiling a library crate. These <code>rlib</code> and <code>rmeta</code> files are then
deserialized by the crates which depend on that library.</li>
<li>Certain query outputs are serialized in a binary format to
<a href="queries/incremental-compilation-in-detail.html#the-real-world-how-persistence-makes-everything-complicated">persist incremental compilation results</a>.</li>
<li><a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_codegen_ssa/struct.CrateInfo.html"><code>CrateInfo</code></a> is serialized to <code>JSON</code> when the <code>-Z no-link</code> flag is used, and
deserialized from <code>JSON</code> when the <code>-Z link-only</code> flag is used.</li>
</ul>
<h2 id="the-encodable-and-decodable-traits"><a class="header" href="#the-encodable-and-decodable-traits">The <code>Encodable</code> and <code>Decodable</code> traits</a></h2>
<p>The <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_serialize/index.html"><code>rustc_serialize</code></a> crate defines two traits for types which can be serialized:</p>
<pre><code class="language-rust ignore">pub trait Encodable&lt;S: Encoder&gt; {
    fn encode(&amp;self, s: &amp;mut S) -&gt; Result&lt;(), S::Error&gt;;
}

pub trait Decodable&lt;D: Decoder&gt;: Sized {
    fn decode(d: &amp;mut D) -&gt; Result&lt;Self, D::Error&gt;;
}</code></pre>
<p>It also defines implementations of these for various common standard library
<a href="https://doc.rust-lang.org/std/#primitives">primitive types</a> such as integer
types, floating point types, <code>bool</code>, <code>char</code>, <code>str</code>, etc.</p>
<p>For types that are constructed from those types, <code>Encodable</code> and <code>Decodable</code>
are usually implemented by <a href="#derive-macros">derives</a>. These generate implementations that
forward deserialization to the fields of the struct or enum. For a
struct those impls look something like this:</p>
<pre><code class="language-rust ignore">#![feature(rustc_private)]
extern crate rustc_serialize;
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};

struct MyStruct {
    int: u32,
    float: f32,
}

impl&lt;E: Encoder&gt; Encodable&lt;E&gt; for MyStruct {
    fn encode(&amp;self, s: &amp;mut E) -&gt; Result&lt;(), E::Error&gt; {
        s.emit_struct("MyStruct", 2, |s| {
            s.emit_struct_field("int", 0, |s| self.int.encode(s))?;
            s.emit_struct_field("float", 1, |s| self.float.encode(s))
        })
    }
}

impl&lt;D: Decoder&gt; Decodable&lt;D&gt; for MyStruct {
    fn decode(s: &amp;mut D) -&gt; Result&lt;MyStruct, D::Error&gt; {
        s.read_struct("MyStruct", 2, |d| {
            let int = d.read_struct_field("int", 0, Decodable::decode)?;
            let float = d.read_struct_field("float", 1, Decodable::decode)?;

            Ok(MyStruct { int, float })
        })
    }
}</code></pre>
<h2 id="encoding-and-decoding-arena-allocated-types"><a class="header" href="#encoding-and-decoding-arena-allocated-types">Encoding and Decoding arena allocated types</a></h2>
<p>rustc has a lot of <a href="memory.html">arena allocated types</a>.
Deserializing these types isn't possible without access to the arena that they need to be allocated on.
The <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/codec/trait.TyDecoder.html"><code>TyDecoder</code></a> and <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/codec/trait.TyEncoder.html"><code>TyEncoder</code></a> traits are subtraits of <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_serialize/trait.Decoder.html"><code>Decoder</code></a> and <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_serialize/trait.Encoder.html"><code>Encoder</code></a> that allow access to a <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/struct.TyCtxt.html"><code>TyCtxt</code></a>.</p>
<p>Types which contain <code>arena</code> allocated types can then bound the type parameter of their
<a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_serialize/trait.Encodable.html"><code>Encodable</code></a> and <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_serialize/trait.Decodable.html"><code>Decodable</code></a> implementations with these traits.
For example</p>
<pre><code class="language-rust ignore">impl&lt;'tcx, D: TyDecoder&lt;'tcx&gt;&gt; Decodable&lt;D&gt; for MyStruct&lt;'tcx&gt; {
    /* ... */
}</code></pre>
<p>The <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_macros/derive.TyEncodable.html"><code>TyEncodable</code></a> and <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_macros/derive.TyDecodable.html"><code>TyDecodable</code></a> <a href="#derive-macros">derive macros</a> will expand to such
an implementation.</p>
<p>Decoding the actual <code>arena</code> allocated type is harder, because some of the
implementations can't be written due to the <a href="https://doc.rust-lang.org/reference/items/implementations.html#orphan-rules">orphan rules</a>. To work around this,
the <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/codec/trait.RefDecodable.html"><code>RefDecodable</code></a> trait is defined in <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/index.html"><code>rustc_middle</code></a>. This can then be
implemented for any type. The <code>TyDecodable</code> macro will call <code>RefDecodable</code> to
decode references, but various generic code needs types to actually be
<code>Decodable</code> with a specific decoder.</p>
<p>For interned types instead of manually implementing <code>RefDecodable</code>, using a new
type wrapper, like <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/predicate/struct.Predicate.html"><code>ty::Predicate</code></a> and manually implementing <code>Encodable</code> and
<code>Decodable</code> may be simpler.</p>
<h2 id="derive-macros"><a class="header" href="#derive-macros">Derive macros</a></h2>
<p>The <a href="https://github.com/rust-lang/rust/tree/master/compiler/rustc_macros"><code>rustc_macros</code></a> crate defines various derives to help implement <code>Decodable</code>
and <code>Encodable</code>.</p>
<ul>
<li>The <code>Encodable</code> and <code>Decodable</code> macros generate implementations that apply to
all <code>Encoders</code> and <code>Decoders</code>. These should be used in crates that don't
depend on <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/index.html"><code>rustc_middle</code></a>, or that have to be serialized by a type that does
not implement <code>TyEncoder</code>.</li>
<li><a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_macros/derive.MetadataEncodable.html"><code>MetadataEncodable</code></a> and <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_macros/derive.MetadataDecodable.html"><code>MetadataDecodable</code></a> generate implementations that
only allow decoding by <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_metadata/rmeta/encoder/struct.EncodeContext.html"><code>rustc_metadata::rmeta::encoder::EncodeContext</code></a> and
<a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_metadata/rmeta/decoder/struct.DecodeContext.html"><code>rustc_metadata::rmeta::decoder::DecodeContext</code></a>. These are used for types
that contain <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_metadata/rmeta/index.html"><code>rustc_metadata::rmeta::</code></a><code>Lazy*</code>.</li>
<li><code>TyEncodable</code> and <code>TyDecodable</code> generate implementation that apply to any
<code>TyEncoder</code> or <code>TyDecoder</code>. These should be used for types that are only
serialized in crate metadata and/or the incremental cache, which is most
serializable types in <code>rustc_middle</code>.</li>
</ul>
<h2 id="shorthands"><a class="header" href="#shorthands">Shorthands</a></h2>
<p><code>Ty</code> can be deeply recursive, if each <code>Ty</code> was encoded naively then crate
metadata would be very large. To handle this, each <code>TyEncoder</code> has a cache of
locations in its output where it has serialized types. If a type being encoded
is in the cache, then instead of serializing the type as usual, the byte offset
within the file being written is encoded instead. A similar scheme is used for
<code>ty::Predicate</code>.</p>
<h2 id="lazyvaluet"><a class="header" href="#lazyvaluet"><code>LazyValue&lt;T&gt;</code></a></h2>
<p>Crate metadata is initially loaded before the <code>TyCtxt&lt;'tcx&gt;</code> is created, so
some deserialization needs to be deferred from the initial loading of metadata.
The <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_metadata/rmeta/struct.LazyValue.html"><code>LazyValue&lt;T&gt;</code></a> type wraps the (relative) offset in the crate metadata
where a <code>T</code> has been serialized. There are also some variants, <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_metadata/rmeta/struct.LazyValue.html"><code>LazyArray&lt;T&gt;</code></a>
and <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_metadata/rmeta/struct.LazyValue.html"><code>LazyTable&lt;I, T&gt;</code></a>.</p>
<p>The <code>LazyArray&lt;[T]&gt;</code> and <code>LazyTable&lt;I, T&gt;</code> types provide some functionality over
<code>Lazy&lt;Vec&lt;T&gt;&gt;</code> and <code>Lazy&lt;HashMap&lt;I, T&gt;&gt;</code>:</p>
<ul>
<li>It's possible to encode a <code>LazyArray&lt;T&gt;</code> directly from an <code>Iterator</code>, without
first collecting into a <code>Vec&lt;T&gt;</code>.</li>
<li>Indexing into a <code>LazyTable&lt;I, T&gt;</code> does not require decoding entries other
than the one being read.</li>
</ul>
<p><strong>note</strong>: <code>LazyValue&lt;T&gt;</code> does not cache its value after being deserialized the
first time. Instead the query system itself is the main way of caching these
results.</p>
<h2 id="specialization"><a class="header" href="#specialization">Specialization</a></h2>
<p>A few types, most notably <code>DefId</code>, need to have different implementations for
different <code>Encoder</code>s. This is currently handled by ad-hoc specializations, for
example: <code>DefId</code> has a <code>default</code> implementation of <code>Encodable&lt;E&gt;</code> and a
specialized one for <code>Encodable&lt;CacheEncoder&gt;</code>.</p>

                    </main>

                    <nav class="nav-wrapper" aria-label="Page navigation">
                        <!-- Mobile navigation buttons -->
                            <a rel="prev" href="memory.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
                                <i class="fa fa-angle-left"></i>
                            </a>

                            <a rel="next prefetch" href="parallel-rustc.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
                                <i class="fa fa-angle-right"></i>
                            </a>

                        <div style="clear: both"></div>
                    </nav>
                </div>
            </div>

            <nav class="nav-wide-wrapper" aria-label="Page navigation">
                    <a rel="prev" href="memory.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
                        <i class="fa fa-angle-left"></i>
                    </a>

                    <a rel="next prefetch" href="parallel-rustc.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
                        <i class="fa fa-angle-right"></i>
                    </a>
            </nav>

        </div>




        <script>
            window.playground_copyable = true;
        </script>


        <script src="elasticlunr.min.js"></script>
        <script src="mark.min.js"></script>
        <script src="searcher.js"></script>

        <script src="clipboard.min.js"></script>
        <script src="highlight.js"></script>
        <script src="book.js"></script>

        <!-- Custom JS scripts -->
        <script src="mermaid.min.js"></script>
        <script src="mermaid-init.js"></script>
        <script src="pagetoc.js"></script>



    </div>
    </body>
</html>
