<!DOCTYPE HTML>
<html lang="en" class="light sidebar-visible" dir="ltr">
    <head>
        <!-- Book generated using mdBook -->
        <meta charset="UTF-8">
        <title>Cargo Settings - rules_rust</title>


        <!-- Custom HTML head -->

        <meta name="description" content="">
        <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" href="highlight.css">
        <link rel="stylesheet" href="tomorrow-night.css">
        <link rel="stylesheet" href="ayu-highlight.css">

        <!-- Custom theme stylesheets -->


        <!-- Provide site root to javascript -->
        <script>
            var path_to_root = "";
            var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "navy" : "light";
        </script>
        <!-- Start loading toc.js asap -->
        <script src="toc.js"></script>
    </head>
    <body>
    <div id="body-container">
        <!-- Work around some values being stored in localStorage wrapped in quotes -->
        <script>
            try {
                var theme = localStorage.getItem('mdbook-theme');
                var 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>
            var 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>
            var sidebar = null;
            var 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 = sidebar === 'visible';
            html.classList.remove('sidebar-visible');
            html.classList.add("sidebar-" + sidebar);
        </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="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. (Shortkey: s)" 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">rules_rust</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/bazelbuild/rules_rust" title="Git repository" aria-label="Git repository">
                            <i id="git-repository-button" class="fa fa-github"></i>
                        </a>

                    </div>
                </div>

                <div id="search-wrapper" class="hidden">
                    <form id="searchbar-outer" class="searchbar-outer">
                        <input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
                    </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>
                        <!-- Generated with Stardoc: http://skydoc.bazel.build -->
<h1 id="cargo-settings"><a class="header" href="#cargo-settings">Cargo settings</a></h1>
<p>Definitions for all <code>@rules_rust//cargo</code> settings</p>
<p><a id="cargo_manifest_dir_filename_suffixes_to_retain"></a></p>
<h2 id="cargo_manifest_dir_filename_suffixes_to_retain"><a class="header" href="#cargo_manifest_dir_filename_suffixes_to_retain">cargo_manifest_dir_filename_suffixes_to_retain</a></h2>
<pre>
--@rules_rust//cargo/settings:cargo_manifest_dir_filename_suffixes_to_retain
</pre>
<p>A flag which determines what files are retained in <code>CARGO_MANIFEST_DIR</code> directories     that are created in <code>CargoBuildScriptRun</code> actions.</p>
<p><a id="debug_std_streams_output_group"></a></p>
<h2 id="debug_std_streams_output_group"><a class="header" href="#debug_std_streams_output_group">debug_std_streams_output_group</a></h2>
<pre>
--@rules_rust//cargo/settings:debug_std_streams_output_group
</pre>
<p>A flag which adds a <code>streams</code> output group to <code>cargo_build_script</code> targets that contain     the raw <code>stderr</code> and <code>stdout</code> streams from the build script.</p>
<p><a id="emit_build_script_warnings"></a></p>
<h2 id="emit_build_script_warnings"><a class="header" href="#emit_build_script_warnings">emit_build_script_warnings</a></h2>
<pre>
--@rules_rust//cargo/settings:emit_build_script_warnings
</pre>
<p>A flag which controls whether <code>cargo_build_script</code> warnings     (<code>cargo::warning=</code>) are printed to stderr.</p>
<p>Supported values:</p>
<ul>
<li><code>on</code>: emit warnings for every <code>cargo_build_script</code> target, overriding any
per-target <code>emit_warnings = False</code>.</li>
<li><code>auto</code> (default): respect the per-target <code>emit_warnings</code> attribute.
<code>crate_universe</code>-generated targets set it to <code>False</code>, so registry/git
crates stay quiet (matching Cargo); first-party targets emit by default.</li>
<li><code>off</code>: silence warnings build-wide.</li>
</ul>
<p><a id="experimental_symlink_execroot"></a></p>
<h2 id="experimental_symlink_execroot"><a class="header" href="#experimental_symlink_execroot">experimental_symlink_execroot</a></h2>
<pre>
--@rules_rust//cargo/settings:experimental_symlink_execroot
</pre>
<p>A flag for which causes <code>cargo_build_script</code> to symlink the execroot of the action to     the <code>CARGO_MANIFEST_DIR</code> where the scripts are run.</p>
<p><a id="out_dir_volatile_file_basenames"></a></p>
<h2 id="out_dir_volatile_file_basenames"><a class="header" href="#out_dir_volatile_file_basenames">out_dir_volatile_file_basenames</a></h2>
<pre>
--@rules_rust//cargo/settings:out_dir_volatile_file_basenames
</pre>
<p>A flag which determines what file basenames are removed from <code>OUT_DIR</code> by <code>cargo_build_script</code> actions to make the <code>_bs.out_dir</code> TreeArtifact deterministic.</p>
<p>Files whose names appear in this list, as well as files with a <code>.d</code> or <code>.pc</code>
extension, are deleted from <code>OUT_DIR</code> after the build script runs and before Bazel
captures the directory. Files like <code>config.log</code> and <code>Makefile</code> embed the Bazel
sandbox path, so their content changes on every action invocation, causing cache
misses for all downstream <code>rustc</code> compilations.</p>
<p><a id="use_cc_toolchain"></a></p>
<h2 id="use_cc_toolchain"><a class="header" href="#use_cc_toolchain">use_cc_toolchain</a></h2>
<pre>
--@rules_rust//cargo/settings:use_cc_toolchain
</pre>
<p>A flag which controls the global default of whether <code>cargo_build_script</code>     targets should pull in the resolved <code>cc_toolchain</code>.</p>
<p>When enabled (the default), each <code>cargo_build_script</code> action gets the
resolved <code>cc_toolchain</code>'s <code>all_files</code> added to its inputs and picks up the
<code>CC</code>, <code>CXX</code>, <code>AR</code>, <code>CFLAGS</code>, <code>CXXFLAGS</code>, <code>LDFLAGS</code>, and <code>INCLUDE</code>
environment variables derived from that toolchain. This matches Cargo's
behavior and is required for build scripts that shell out to a C/C++
compiler (e.g. those using <code>cc-rs</code> or <code>cmake-rs</code>).</p>
<p>When disabled, the <code>cc_toolchain</code> is omitted from <code>cargo_build_script</code>
actions. This can significantly reduce action input sizes when using a
hermetic sysroot but breaks any build script that needs to compile C/C++
code. Individual targets may override this default via the
<code>cargo_build_script.use_cc_toolchain</code> attribute.</p>
<p><a id="use_default_shell_env"></a></p>
<h2 id="use_default_shell_env"><a class="header" href="#use_default_shell_env">use_default_shell_env</a></h2>
<pre>
--@rules_rust//cargo/settings:use_default_shell_env
</pre>
<p>A flag which controls the global default of <code>ctx.actions.run.use_default_shell_env</code> for <code>cargo_build_script</code> targets.</p>

                    </main>

                    <nav class="nav-wrapper" aria-label="Page navigation">
                        <!-- Mobile navigation buttons -->
                            <a rel="prev" href="rust_settings.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="rust_toolchains.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="rust_settings.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="rust_toolchains.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 -->


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