Rust settings

Definitions for all @rules_rust//rust settings

capture_clippy_output

--@rules_rust//rust/settings:capture_clippy_output

Control whether to print clippy output or store it to a file, using the configured error_format.

clippy_flag

--@rules_rust//rust/settings:clippy_flag

Add a custom clippy flag from the command line with --@rules_rust//rust/settings:clippy_flag.

Multiple uses are accumulated and appended after the extra_rustc_flags.

clippy_flags

--@rules_rust//rust/settings:clippy_flags

This setting may be used to pass extra options to clippy from the command line.

It applies across all targets.

clippy_toml

--@rules_rust//rust/settings:clippy_toml

This setting is used by the clippy rules. See https://bazelbuild.github.io/rules_rust/rust_clippy.html

Note that this setting is actually called clippy.toml.

codegen_units

--@rules_rust//rust/settings:codegen_units

The default value for --codegen-units which also affects resource allocation for rustc actions.

Note that any value 0 or less will prevent this flag from being passed by Bazel and allow rustc to perform it's default behavior.

https://doc.rust-lang.org/rustc/codegen-options/index.html#codegen-units

error_format

--@rules_rust//rust/settings:error_format

This setting may be changed from the command line to generate machine readable errors.

--@rules_rust//rust/settings:experimental_link_std_dylib

A flag to control whether to link libstd dynamically.

experimental_per_crate_rustc_flag

--@rules_rust//rust/settings:experimental_per_crate_rustc_flag

Add additional rustc_flag to matching crates from the command line with --@rules_rust//rust/settings:experimental_per_crate_rustc_flag.

The expected flag format is prefix_filter@flag, where any crate with a label or execution path starting with the prefix filter will be built with the given flag. The label matching uses the canonical form of the label (i.e //package:label_name). The execution path is the relative path to your workspace directory including the base name (including extension) of the crate root. This flag is only applied to the exec configuration (proc-macros, cargo_build_script, etc). Multiple uses are accumulated.

--@rules_rust//rust/settings:experimental_use_cc_common_link

A flag to control whether to link rust_binary and rust_test targets using cc_common.link instead of rustc.

experimental_use_coverage_metadata_files

--@rules_rust//rust/settings:experimental_use_coverage_metadata_files

A flag to have coverage tooling added as coverage_common.instrumented_files_info.metadata_files instead of reporting tools like llvm-cov and llvm-profdata as runfiles to each test.

experimental_use_global_allocator

--@rules_rust//rust/settings:experimental_use_global_allocator

A flag to indicate that a global allocator is in use when using --@rules_rust//rust/settings:experimental_use_cc_common_link

Users need to specify this flag because rustc generates different set of symbols at link time when a global allocator is in use. When the linking is not done by rustc, the rust_toolchain itself provides the appropriate set of symbols.

experimental_use_sh_toolchain_for_bootstrap_process_wrapper

--@rules_rust//rust/settings:experimental_use_sh_toolchain_for_bootstrap_process_wrapper

A flag to control whether the shell path from a shell toolchain (@bazel_tools//tools/sh:toolchain_type) is embedded into the bootstrap process wrapper for the .sh file.

extra_exec_rustc_flag

--@rules_rust//rust/settings:extra_exec_rustc_flag

Add additional rustc_flags in the exec configuration from the command line with --@rules_rust//rust/settings:extra_exec_rustc_flag.

Multiple uses are accumulated and appended after the extra_exec_rustc_flags.

extra_exec_rustc_flags

--@rules_rust//rust/settings:extra_exec_rustc_flags

This setting may be used to pass extra options to rustc from the command line in exec configuration.

It applies across all targets whereas the rustc_flags option on targets applies only to that target. This can be useful for passing build-wide options such as LTO.

extra_rustc_flag

--@rules_rust//rust/settings:extra_rustc_flag

Add additional rustc_flag from the command line with --@rules_rust//rust/settings:extra_rustc_flag.

Multiple uses are accumulated and appended after the extra_rustc_flags.

extra_rustc_flags

--@rules_rust//rust/settings:extra_rustc_flags

This setting may be used to pass extra options to rustc from the command line in non-exec configuration.

It applies across all targets whereas the rustc_flags option on targets applies only to that target. This can be useful for passing build-wide options such as LTO.

incompatible_change_rust_test_compilation_output_directory

--@rules_rust//rust/settings:incompatible_change_rust_test_compilation_output_directory

A flag to put rust_test compilation outputs in the same directory as the rust_library compilation outputs.

incompatible_do_not_include_data_in_compile_data

--@rules_rust//rust/settings:incompatible_do_not_include_data_in_compile_data

A flag to control whether to include data files in compile_data.

lto

--@rules_rust//rust/settings:lto

A build setting which specifies the link time optimization mode used when building Rust code.

no_std

--@rules_rust//rust/settings:no_std

This setting may be used to enable builds without the standard library.

Currently only no_std + alloc is supported, which can be enabled with setting the value to "alloc". In the future we could add support for additional modes, e.g "core", "alloc,collections".

pipelined_compilation

--@rules_rust//rust/settings:pipelined_compilation

When set, this flag causes rustc to emit *.rmeta files and use them for rlib -> rlib dependencies.

While this involves one extra (short) rustc invocation to build the rmeta file, it allows library dependencies to be unlocked much sooner, increasing parallelism during compilation.

rename_first_party_crates

--@rules_rust//rust/settings:rename_first_party_crates

A flag controlling whether to rename first-party crates such that their names encode the Bazel package and target name, instead of just the target name.

First-party vs. third-party crates are identified using the value of @rules_rust//settings:third_party_dir.

rustc_output_diagnostics

--@rules_rust//rust/settings:rustc_output_diagnostics

This setting may be changed from the command line to generate rustc diagnostics.

rustfmt_toml

--@rules_rust//rust/settings:rustfmt_toml

This setting is used by the rustfmt rules. See https://bazelbuild.github.io/rules_rust/rust_fmt.html

Note that this setting is actually called rustfmt.toml.

third_party_dir

--@rules_rust//rust/settings:third_party_dir

A flag specifying the location of vendored third-party rust crates within this repository that must not be renamed when rename_first_party_crates is enabled.

Must be specified as a Bazel package, e.g. "//some/location/in/repo".

toolchain_generated_sysroot

--@rules_rust//rust/settings:toolchain_generated_sysroot

A flag to set rustc --sysroot flag to the sysroot generated by rust_toolchain.

unpretty

--@rules_rust//rust/settings:unpretty

use_real_import_macro

--@rules_rust//rust/settings:use_real_import_macro

A flag to control whether rust_library and rust_binary targets should implicitly depend on the real import macro, or on a no-op target.