aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVinh Tran <vinhdaitran@google.com>2023-10-17 23:34:25 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-10-17 23:34:25 +0000
commitabebdfeee9e2fa2c6a16064a27a603316876ab48 (patch)
tree8f142094e374479cdf46126085f2de42049812dc
parentda262e2e34e9d5874999614c1242f607173b231e (diff)
parent368057cfb9458d912541774a02ce4a22ddbdb7e4 (diff)
downloadbazelbuild-rules_rust-abebdfeee9e2fa2c6a16064a27a603316876ab48.tar.gz
Merge remote-tracking branch 'aosp/upstream-main' into main am: 439f58c693 am: bdd24099a8 am: 368057cfb9
Original change: https://android-review.googlesource.com/c/platform/external/bazelbuild-rules_rust/+/2793435 Change-Id: I8a53199277a0e55ace0e2a73497dfb8b675746db Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--.bazelci/presubmit.yml49
-rw-r--r--.bazelrc8
-rw-r--r--.gitattributes2
-rw-r--r--MODULE.bazel2
-rw-r--r--cargo/private/cargo_build_script.bzl7
-rw-r--r--cargo/private/cargo_build_script_wrapper.bzl34
-rw-r--r--crate_universe/private/crate.bzl4
-rw-r--r--crate_universe/src/config.rs21
-rw-r--r--crate_universe/src/context/crate_context.rs70
-rw-r--r--crate_universe/src/metadata/metadata_annotation.rs2
-rw-r--r--crate_universe/src/rendering.rs12
-rw-r--r--crate_universe/src/utils/starlark/select.rs57
-rw-r--r--docs/cargo.md13
-rw-r--r--docs/crate_universe.md8
-rw-r--r--docs/flatten.md26
-rw-r--r--docs/index.md4
-rw-r--r--docs/providers.md3
-rw-r--r--docs/rust_proto.md2
-rw-r--r--docs/rust_proto.vm2
-rw-r--r--docs/rust_repositories.md10
-rw-r--r--examples/.bazelrc4
-rw-r--r--examples/android/.bazelrc4
-rw-r--r--examples/android/BUILD.bazel11
-rw-r--r--examples/android/allocator_library.cc54
-rw-r--r--examples/android/platform_mappings4
-rw-r--r--examples/crate_universe/.bazelrc4
-rw-r--r--examples/crate_universe/WORKSPACE.bazel8
-rw-r--r--examples/crate_universe/cargo_aliases/.bazelrc4
-rw-r--r--examples/crate_universe/cargo_aliases/cargo-bazel-lock.json2
-rw-r--r--examples/crate_universe/cargo_conditional_deps/cargo-bazel-lock.json2
-rw-r--r--examples/crate_universe/cargo_remote/.bazelrc4
-rw-r--r--examples/crate_universe/cargo_workspace/.bazelrc4
-rw-r--r--examples/crate_universe/cargo_workspace/cargo-bazel-lock.json2
-rw-r--r--examples/crate_universe/multi_package/.bazelrc4
-rw-r--r--examples/crate_universe/multi_package/cargo-bazel-lock.json11
-rw-r--r--examples/crate_universe/no_cargo_manifests/.bazelrc4
-rw-r--r--examples/crate_universe/no_cargo_manifests/cargo-bazel-lock.json2
-rw-r--r--examples/crate_universe/using_cxx/Cargo.Bazel.lock12
-rw-r--r--examples/crate_universe/using_cxx/cargo-bazel-lock.json42
-rw-r--r--examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.Bazel.lock10
-rw-r--r--examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.lock2
-rw-r--r--examples/crate_universe_unnamed/.bazelrc4
-rw-r--r--examples/ios/.bazelrc4
-rw-r--r--examples/ios/BUILD.bazel7
-rw-r--r--examples/ios_build/.bazelrc4
-rw-r--r--examples/zig_cross_compiling/.bazelrc4
-rw-r--r--ffi/cc/allocator_library/BUILD.bazel14
-rw-r--r--ffi/cc/allocator_library/allocator_library.cc (renamed from examples/ios/allocator_library.cc)0
-rw-r--r--ffi/cc/allocator_library/empty.cc0
-rw-r--r--ffi/cc/global_allocator_library/BUILD.bazel14
-rw-r--r--ffi/cc/global_allocator_library/empty.cc0
-rw-r--r--ffi/cc/global_allocator_library/global_allocator_library.cc (renamed from test/cc_common_link/global_allocator_library.cc)0
-rw-r--r--proto/prost/private/prost.bzl3
-rw-r--r--proto/prost/private/protoc_wrapper.rs36
-rw-r--r--proto/prost/private/tests/camel_case/BUILD.bazel37
-rw-r--r--proto/prost/private/tests/camel_case/another.proto9
-rw-r--r--proto/prost/private/tests/camel_case/camel_case.proto7
-rw-r--r--proto/prost/private/tests/camel_case/camel_case_test.rs8
-rw-r--r--proto/protobuf/proto.bzl4
-rw-r--r--rust/extensions.bzl2
-rw-r--r--rust/known_shas.bzl894
-rw-r--r--rust/platform/triple.bzl80
-rw-r--r--rust/private/clippy.bzl2
-rw-r--r--rust/private/common.bzl4
-rw-r--r--rust/private/providers.bzl2
-rw-r--r--rust/private/rust.bzl179
-rw-r--r--rust/private/rust_analyzer.bzl2
-rw-r--r--rust/private/rustc.bzl51
-rw-r--r--rust/private/rustdoc.bzl5
-rw-r--r--rust/private/rustdoc_test.bzl1
-rw-r--r--rust/private/utils.bzl124
-rw-r--r--rust/repositories.bzl7
-rw-r--r--rust/toolchain.bzl2
-rw-r--r--test/cargo_build_script/tools_exec/BUILD.bazel1
-rw-r--r--test/cargo_build_script/tools_exec/build.rs2
-rw-r--r--test/cc_common_link/BUILD.bazel12
-rw-r--r--test/cc_common_link/WORKSPACE.bazel1
-rw-r--r--test/cc_common_link/allocator_library.cc58
-rw-r--r--test/cc_common_link/with_global_alloc/WORKSPACE.bazel2
-rw-r--r--test/no_std/WORKSPACE.bazel2
-rw-r--r--test/toolchain/toolchain_test.bzl2
-rw-r--r--test/unit/cc_info/cc_info_test.bzl2
-rw-r--r--test/unit/channel_transitions/channel_transiitons_test.bzl4
-rw-r--r--test/unit/clippy/clippy_test.bzl7
-rw-r--r--test/unit/consistent_crate_name/with_modified_crate_name.bzl5
-rw-r--r--test/unit/extra_rustc_flags/extra_rustc_flags_test.bzl6
-rw-r--r--test/unit/force_all_deps_direct/generator.bzl6
-rw-r--r--test/unit/per_crate_rustc_flag/per_crate_rustc_flag_test.bzl8
-rw-r--r--test/unit/pipelined_compilation/pipelined_compilation_test.bzl2
-rw-r--r--test/unit/pipelined_compilation/wrap.bzl6
-rw-r--r--test/unit/proc_macro/leaks_deps/proc_macro_does_not_leak_deps.bzl7
-rw-r--r--test/unit/rustdoc/rustdoc_unit_test.bzl21
-rw-r--r--test/unit/stdlib/stdlib.bzl2
-rw-r--r--util/fetch_shas_NIGHTLY_ISO_DATES.txt1
-rw-r--r--util/fetch_shas_VERSIONS.txt1
-rw-r--r--version.bzl2
96 files changed, 1621 insertions, 579 deletions
diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml
index 4cf55ba3..da338648 100644
--- a/.bazelci/presubmit.yml
+++ b/.bazelci/presubmit.yml
@@ -485,26 +485,27 @@ tasks:
test_targets:
- "//..."
build_flags: *aspects_flags
- crate_universe_examples_windows:
- name: Crate Universe Examples
- platform: windows
- working_directory: examples/crate_universe
- run_targets: *crate_universe_vendor_example_targets
- build_flags: *aspects_flags
- build_targets:
- - "//..."
- test_targets:
- - "//..."
- crate_universe_unnamed_examples_windows:
- name: Crate Universe Unnamed Examples
- platform: windows
- working_directory: examples/crate_universe_unnamed
- run_targets: *crate_universe_unnamed_vendor_example_targets
- build_flags: *aspects_flags
- build_targets:
- - "//..."
- test_targets:
- - "//..."
+# See https://github.com/bazelbuild/rules_rust/issues/2186 about re-enabling these.
+# crate_universe_examples_windows:
+# name: Crate Universe Examples
+# platform: windows
+# working_directory: examples/crate_universe
+# run_targets: *crate_universe_vendor_example_targets
+# build_flags: *aspects_flags
+# build_targets:
+# - "//..."
+# test_targets:
+# - "//..."
+# crate_universe_unnamed_examples_windows:
+# name: Crate Universe Unnamed Examples
+# platform: windows
+# working_directory: examples/crate_universe_unnamed
+# run_targets: *crate_universe_unnamed_vendor_example_targets
+# build_flags: *aspects_flags
+# build_targets:
+# - "//..."
+# test_targets:
+# - "//..."
cc_common_link_ubuntu2004:
name: Build via cc_common.link
platform: ubuntu2004
@@ -573,12 +574,20 @@ tasks:
name: Android Examples
platform: ubuntu2004
working_directory: examples/android
+ bazel: "last_green"
+ build_flags:
+ - "--incompatible_enable_android_toolchain_resolution"
+ - "--android_platforms=//:arm64-v8a"
build_targets:
- "//:android_app"
android_examples_macos:
name: Android Examples
platform: macos
working_directory: examples/android
+ bazel: "last_green"
+ build_flags:
+ - "--incompatible_enable_android_toolchain_resolution"
+ - "--android_platforms=//:arm64-v8a"
build_targets:
- "//:android_app"
ios_examples:
diff --git a/.bazelrc b/.bazelrc
index 65d3e979..bcfb9f20 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -50,4 +50,12 @@ build --nolegacy_external_runfiles
## evaluated top to bottom.
###############################################################################
+###############################################################################
+## Bzlmod
+###############################################################################
+
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod
+
try-import %workspace%/user.bazelrc
diff --git a/.gitattributes b/.gitattributes
index e726d0ae..7c2f557b 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,4 +1,4 @@
-**/Cargo.Bazel.lock linguist-generated
+**/*Cargo.Bazel.lock linguist-generated
**/cargo-bazel-lock.json linguist-generated
bindgen/3rdparty/crates/** linguist-generated
crate_universe/3rdparty/crates/** linguist-generated
diff --git a/MODULE.bazel b/MODULE.bazel
index ad73e240..f7b48cdd 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -6,7 +6,7 @@ module(
print("WARNING: The rules_rust Bazel module is still highly experimental and subject to change at any time. Only use it to try out bzlmod for now.") # buildifier: disable=print
bazel_dep(name = "platforms", version = "0.0.7")
-bazel_dep(name = "rules_cc", version = "0.0.1")
+bazel_dep(name = "rules_cc", version = "0.0.9")
bazel_dep(name = "bazel_skylib", version = "1.2.0")
bazel_dep(name = "apple_support", version = "1.3.1")
diff --git a/cargo/private/cargo_build_script.bzl b/cargo/private/cargo_build_script.bzl
index b017f331..91ccb461 100644
--- a/cargo/private/cargo_build_script.bzl
+++ b/cargo/private/cargo_build_script.bzl
@@ -173,6 +173,10 @@ def _cargo_build_script_impl(ctx):
for f in ctx.attr.crate_features:
env["CARGO_FEATURE_" + f.upper().replace("-", "_")] = "1"
+ links = ctx.attr.links or ""
+ if links:
+ env["CARGO_MANIFEST_LINKS"] = links
+
# Add environment variables from the Rust toolchain.
env.update(toolchain.env)
@@ -208,8 +212,6 @@ def _cargo_build_script_impl(ctx):
transitive = toolchain_tools,
)
- links = ctx.attr.links or ""
-
# dep_env_file contains additional environment variables coming from
# direct dependency sys-crates' build scripts. These need to be made
# available to the current crate build script.
@@ -256,6 +258,7 @@ def _cargo_build_script_impl(ctx):
mnemonic = "CargoBuildScriptRun",
progress_message = "Running Cargo build script {}".format(pkg_name),
env = env,
+ toolchain = None,
)
return [
diff --git a/cargo/private/cargo_build_script_wrapper.bzl b/cargo/private/cargo_build_script_wrapper.bzl
index 6420b732..579630fa 100644
--- a/cargo/private/cargo_build_script_wrapper.bzl
+++ b/cargo/private/cargo_build_script_wrapper.bzl
@@ -10,10 +10,15 @@ load("//rust:defs.bzl", "rust_binary")
def cargo_build_script(
name,
+ edition = None,
+ crate_name = None,
+ crate_root = None,
+ srcs = [],
crate_features = [],
version = None,
deps = [],
link_deps = [],
+ proc_macro_deps = [],
build_script_env = {},
data = [],
tools = [],
@@ -23,6 +28,7 @@ def cargo_build_script(
rustc_flags = [],
visibility = None,
tags = None,
+ aliases = None,
**kwargs):
"""Compile and execute a rust build script to generate build attributes
@@ -85,11 +91,16 @@ def cargo_build_script(
Args:
name (str): The name for the underlying rule. This should be the name of the package
being compiled, optionally with a suffix of `_build_script`.
+ edition (str): The rust edition to use for the internal binary crate.
+ crate_name (str): Crate name to use for build script.
+ crate_root (label): The file that will be passed to rustc to be used for building this crate.
+ srcs (list of label): Souce files of the crate to build. Passing source files here can be used to trigger rebuilds when changes are made.
crate_features (list, optional): A list of features to enable for the build script.
version (str, optional): The semantic version (semver) of the crate.
deps (list, optional): The build-dependencies of the crate.
link_deps (list, optional): The subset of the (normal) dependencies of the crate that have the
links attribute and therefore provide environment variables to this build script.
+ proc_macro_deps (list of label, optional): List of rust_proc_macro targets used to build the script.
build_script_env (dict, optional): Environment variables for build scripts.
data (list, optional): Files needed by the build script.
tools (list, optional): Tools (executables) needed by the build script.
@@ -103,6 +114,8 @@ def cargo_build_script(
rustc_flags (list, optional): List of compiler flags passed to `rustc`.
visibility (list of label, optional): Visibility to apply to the generated build script output.
tags: (list of str, optional): Tags to apply to the generated build script output.
+ aliases (dict, optional): Remap crates to a new name or moniker for linkage to this target. \
+ These are other `rust_library` targets and will be presented as the new name given.
**kwargs: Forwards to the underlying `rust_binary` rule. An exception is the `compatible_with`
attribute, which shouldn't be forwarded to the `rust_binary`, as the `rust_binary` is only
built and used in `exec` mode. We propagate the `compatible_with` attribute to the `_build_scirpt_run`
@@ -122,28 +135,21 @@ def cargo_build_script(
binary_tags = [tag for tag in tags or []]
if "manual" not in binary_tags:
binary_tags.append("manual")
- build_script_kwargs = {}
- binary_kwargs = kwargs
- if "compatible_with" in kwargs:
- build_script_kwargs["compatible_with"] = kwargs["compatible_with"]
- binary_kwargs.pop("compatible_with")
-
- if "toolchains" in kwargs:
- build_script_kwargs["toolchains"] = kwargs["toolchains"]
-
- if "features" in kwargs:
- build_script_kwargs["features"] = kwargs["features"]
rust_binary(
name = name + "_",
+ crate_name = crate_name,
+ srcs = srcs,
+ crate_root = crate_root,
crate_features = crate_features,
- version = version,
deps = deps,
+ proc_macro_deps = proc_macro_deps,
data = data,
rustc_env = rustc_env,
rustc_flags = rustc_flags,
+ edition = edition,
tags = binary_tags,
- **binary_kwargs
+ aliases = aliases,
)
_build_script_run(
name = name,
@@ -160,5 +166,5 @@ def cargo_build_script(
rustc_flags = rustc_flags,
visibility = visibility,
tags = tags,
- **build_script_kwargs
+ **kwargs
)
diff --git a/crate_universe/private/crate.bzl b/crate_universe/private/crate.bzl
index 868cc8d6..15596c7b 100644
--- a/crate_universe/private/crate.bzl
+++ b/crate_universe/private/crate.bzl
@@ -85,8 +85,8 @@ def _annotation(
data = None,
data_glob = None,
deps = None,
- extra_aliased_targets = {},
- gen_binaries = [],
+ extra_aliased_targets = None,
+ gen_binaries = None,
disable_pipelining = False,
gen_build_script = None,
patch_args = None,
diff --git a/crate_universe/src/config.rs b/crate_universe/src/config.rs
index 245dbf7d..98af006e 100644
--- a/crate_universe/src/config.rs
+++ b/crate_universe/src/config.rs
@@ -144,7 +144,7 @@ impl From<GitReference> for Commitish {
}
/// A value which may either be a plain String, or a dict of platform triples
/// (or other cfg expressions understood by `crate::context::platforms::resolve_cfg_platforms`) to Strings.
-#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
#[serde(untagged)]
pub enum StringOrSelect {
Value(String),
@@ -179,11 +179,11 @@ pub struct CrateAnnotations {
/// Additional data to pass to
/// [deps](https://bazelbuild.github.io/rules_rust/defs.html#rust_library-deps) attribute.
- pub deps: Option<BTreeSet<String>>,
+ pub deps: Option<BTreeSet<StringOrSelect>>,
/// Additional data to pass to
/// [proc_macro_deps](https://bazelbuild.github.io/rules_rust/defs.html#rust_library-proc_macro_deps) attribute.
- pub proc_macro_deps: Option<BTreeSet<String>>,
+ pub proc_macro_deps: Option<BTreeSet<StringOrSelect>>,
/// Additional data to pass to the target's
/// [crate_features](https://bazelbuild.github.io/rules_rust/defs.html#rust_library-crate_features) attribute.
@@ -222,19 +222,19 @@ pub struct CrateAnnotations {
/// Additional dependencies to pass to a build script's
/// [deps](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-deps) attribute.
- pub build_script_deps: Option<BTreeSet<String>>,
+ pub build_script_deps: Option<BTreeSet<StringOrSelect>>,
/// Additional data to pass to a build script's
/// [proc_macro_deps](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-proc_macro_deps) attribute.
- pub build_script_proc_macro_deps: Option<BTreeSet<String>>,
+ pub build_script_proc_macro_deps: Option<BTreeSet<StringOrSelect>>,
/// Additional data to pass to a build script's
/// [build_script_data](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-data) attribute.
- pub build_script_data: Option<BTreeSet<String>>,
+ pub build_script_data: Option<BTreeSet<StringOrSelect>>,
/// Additional data to pass to a build script's
/// [tools](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-tools) attribute.
- pub build_script_tools: Option<BTreeSet<String>>,
+ pub build_script_tools: Option<BTreeSet<StringOrSelect>>,
/// An optional glob pattern to set on the
/// [build_script_data](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-build_script_env) attribute.
@@ -246,7 +246,7 @@ pub struct CrateAnnotations {
/// Additional rustc_env flags to pass to a build script's
/// [rustc_env](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-rustc_env) attribute.
- pub build_script_rustc_env: Option<BTreeMap<String, String>>,
+ pub build_script_rustc_env: Option<BTreeMap<String, StringOrSelect>>,
/// Additional labels to pass to a build script's
/// [toolchains](https://bazel.build/reference/be/common-definitions#common-attributes) attribute.
@@ -368,13 +368,14 @@ pub struct AnnotationsProvidedByPackage {
pub gen_build_script: Option<bool>,
pub data: Option<BTreeSet<String>>,
pub data_glob: Option<BTreeSet<String>>,
+ pub deps: Option<BTreeSet<StringOrSelect>>,
pub compile_data: Option<BTreeSet<String>>,
pub compile_data_glob: Option<BTreeSet<String>>,
pub rustc_env: Option<BTreeMap<String, String>>,
pub rustc_env_files: Option<BTreeSet<String>>,
pub rustc_flags: Option<Vec<String>>,
pub build_script_env: Option<BTreeMap<String, StringOrSelect>>,
- pub build_script_rustc_env: Option<BTreeMap<String, String>>,
+ pub build_script_rustc_env: Option<BTreeMap<String, StringOrSelect>>,
pub build_script_rundir: Option<String>,
pub additive_build_file_content: Option<String>,
pub extra_aliased_targets: Option<BTreeMap<String, String>>,
@@ -387,6 +388,7 @@ impl CrateAnnotations {
gen_build_script,
data,
data_glob,
+ deps,
compile_data,
compile_data_glob,
rustc_env,
@@ -417,6 +419,7 @@ impl CrateAnnotations {
default(&mut self.gen_build_script, gen_build_script);
default(&mut self.data, data);
default(&mut self.data_glob, data_glob);
+ default(&mut self.deps, deps);
default(&mut self.compile_data, compile_data);
default(&mut self.compile_data_glob, compile_data_glob);
default(&mut self.rustc_env, rustc_env);
diff --git a/crate_universe/src/context/crate_context.rs b/crate_universe/src/context/crate_context.rs
index 8488eb6d..d4301e89 100644
--- a/crate_universe/src/context/crate_context.rs
+++ b/crate_universe/src/context/crate_context.rs
@@ -5,7 +5,7 @@ use std::collections::{BTreeMap, BTreeSet};
use cargo_metadata::{Node, Package, PackageId};
use serde::{Deserialize, Serialize};
-use crate::config::{CrateId, GenBinaries, StringOrSelect};
+use crate::config::{CrateId, GenBinaries};
use crate::metadata::{CrateAnnotation, Dependency, PairredExtras, SourceAnnotation};
use crate::utils::sanitize_module_name;
use crate::utils::starlark::{Glob, SelectList, SelectMap, SelectStringDict, SelectStringList};
@@ -122,8 +122,8 @@ pub struct CommonAttributes {
#[serde(skip_serializing_if = "SelectList::is_empty")]
pub deps: SelectList<CrateDependency>,
- #[serde(skip_serializing_if = "BTreeSet::is_empty")]
- pub extra_deps: BTreeSet<String>,
+ #[serde(skip_serializing_if = "SelectList::is_empty")]
+ pub extra_deps: SelectList<String>,
#[serde(skip_serializing_if = "SelectList::is_empty")]
pub deps_dev: SelectList<CrateDependency>,
@@ -136,8 +136,8 @@ pub struct CommonAttributes {
#[serde(skip_serializing_if = "SelectList::is_empty")]
pub proc_macro_deps: SelectList<CrateDependency>,
- #[serde(skip_serializing_if = "BTreeSet::is_empty")]
- pub extra_proc_macro_deps: BTreeSet<String>,
+ #[serde(skip_serializing_if = "SelectList::is_empty")]
+ pub extra_proc_macro_deps: SelectList<String>,
#[serde(skip_serializing_if = "SelectList::is_empty")]
pub proc_macro_deps_dev: SelectList<CrateDependency>,
@@ -200,8 +200,8 @@ pub struct BuildScriptAttributes {
#[serde(skip_serializing_if = "SelectList::is_empty")]
pub deps: SelectList<CrateDependency>,
- #[serde(skip_serializing_if = "BTreeSet::is_empty")]
- pub extra_deps: BTreeSet<String>,
+ #[serde(skip_serializing_if = "SelectList::is_empty")]
+ pub extra_deps: SelectStringList,
// TODO: refactor a crate with a build.rs file from two into three bazel
// rules in order to deduplicate link_dep information. Currently as the
@@ -223,8 +223,8 @@ pub struct BuildScriptAttributes {
#[serde(skip_serializing_if = "SelectList::is_empty")]
pub link_deps: SelectList<CrateDependency>,
- #[serde(skip_serializing_if = "BTreeSet::is_empty")]
- pub extra_link_deps: BTreeSet<String>,
+ #[serde(skip_serializing_if = "SelectList::is_empty")]
+ pub extra_link_deps: SelectStringList,
#[serde(skip_serializing_if = "SelectStringDict::is_empty")]
pub build_script_env: SelectStringDict,
@@ -232,8 +232,8 @@ pub struct BuildScriptAttributes {
#[serde(skip_serializing_if = "Option::is_none")]
pub rundir: Option<String>,
- #[serde(skip_serializing_if = "BTreeSet::is_empty")]
- pub extra_proc_macro_deps: BTreeSet<String>,
+ #[serde(skip_serializing_if = "SelectList::is_empty")]
+ pub extra_proc_macro_deps: SelectStringList,
#[serde(skip_serializing_if = "SelectList::is_empty")]
pub proc_macro_deps: SelectList<CrateDependency>,
@@ -494,12 +494,14 @@ impl CrateContext {
// Deps
if let Some(extra) = &crate_extra.deps {
- self.common_attrs.extra_deps = extra.clone();
+ self.common_attrs.extra_deps.extend(extra.iter().cloned());
}
// Proc macro deps
if let Some(extra) = &crate_extra.proc_macro_deps {
- self.common_attrs.extra_proc_macro_deps = extra.clone();
+ self.common_attrs
+ .extra_proc_macro_deps
+ .extend(extra.iter().cloned());
}
// Compile data
@@ -564,26 +566,22 @@ impl CrateContext {
if let Some(attrs) = &mut self.build_script_attrs {
// Deps
if let Some(extra) = &crate_extra.build_script_deps {
- attrs.extra_deps = extra.clone();
+ attrs.extra_deps.extend(extra.iter().cloned())
}
// Proc macro deps
if let Some(extra) = &crate_extra.build_script_proc_macro_deps {
- attrs.extra_proc_macro_deps = extra.clone();
+ attrs.extra_proc_macro_deps.extend(extra.iter().cloned());
}
// Data
if let Some(extra) = &crate_extra.build_script_data {
- for data in extra {
- attrs.data.insert(data.clone(), None);
- }
+ attrs.data.extend(extra.iter().cloned());
}
// Tools
if let Some(extra) = &crate_extra.build_script_tools {
- for data in extra {
- attrs.tools.insert(data.clone(), None);
- }
+ attrs.tools.extend(extra.iter().cloned());
}
// Toolchains
@@ -600,29 +598,16 @@ impl CrateContext {
// Rustc env
if let Some(extra) = &crate_extra.build_script_rustc_env {
- attrs.rustc_env.extend(extra.clone(), None);
+ attrs
+ .rustc_env
+ .extend_from_string_or_select(extra.iter().map(clone_tuple));
}
// Build script env
if let Some(extra) = &crate_extra.build_script_env {
- for (key, value) in extra {
- match value {
- StringOrSelect::Value(value) => {
- attrs
- .build_script_env
- .insert(key.clone(), value.clone(), None);
- }
- StringOrSelect::Select(select) => {
- for (select_key, value) in select {
- attrs.build_script_env.insert(
- key.clone(),
- value.clone(),
- Some(select_key.clone()),
- );
- }
- }
- }
- }
+ attrs
+ .build_script_env
+ .extend_from_string_or_select(extra.iter().map(clone_tuple))
}
if let Some(rundir) = &crate_extra.build_script_rundir {
@@ -771,6 +756,11 @@ impl CrateContext {
}
}
+fn clone_tuple<V1: Clone, V2: Clone>(t: (&V1, &V2)) -> (V1, V2) {
+ let (v1, v2) = t;
+ (v1.clone(), v2.clone())
+}
+
#[cfg(test)]
mod test {
use super::*;
diff --git a/crate_universe/src/metadata/metadata_annotation.rs b/crate_universe/src/metadata/metadata_annotation.rs
index 14026891..4f22dbed 100644
--- a/crate_universe/src/metadata/metadata_annotation.rs
+++ b/crate_universe/src/metadata/metadata_annotation.rs
@@ -391,7 +391,7 @@ impl Annotations {
// Mark that an annotation has been consumed
unused_extra_annotations.remove(id);
- // Fitler out the annotation
+ // Filter out the annotation
extra
})
.cloned()
diff --git a/crate_universe/src/rendering.rs b/crate_universe/src/rendering.rs
index 90bbcf1a..4a0884ba 100644
--- a/crate_universe/src/rendering.rs
+++ b/crate_universe/src/rendering.rs
@@ -385,13 +385,13 @@ impl Renderer {
deps: self
.make_deps(
attrs.map_or(&empty_deps, |attrs| &attrs.deps),
- attrs.map_or(&empty_set, |attrs| &attrs.extra_deps),
+ attrs.map_or(&empty_list, |attrs| &attrs.extra_deps),
)
.remap_configurations(platforms),
link_deps: self
.make_deps(
attrs.map_or(&empty_deps, |attrs| &attrs.link_deps),
- attrs.map_or(&empty_set, |attrs| &attrs.extra_link_deps),
+ attrs.map_or(&empty_list, |attrs| &attrs.extra_link_deps),
)
.remap_configurations(platforms),
edition: krate.common_attrs.edition.clone(),
@@ -400,7 +400,7 @@ impl Renderer {
proc_macro_deps: self
.make_deps(
attrs.map_or(&empty_deps, |attrs| &attrs.proc_macro_deps),
- attrs.map_or(&empty_set, |attrs| &attrs.extra_proc_macro_deps),
+ attrs.map_or(&empty_list, |attrs| &attrs.extra_proc_macro_deps),
)
.remap_configurations(platforms),
rundir: attrs.and_then(|attrs| attrs.rundir.clone()),
@@ -628,14 +628,12 @@ impl Renderer {
fn make_deps(
&self,
deps: &SelectList<CrateDependency>,
- extra_deps: &BTreeSet<String>,
+ extra_deps: &SelectList<String>,
) -> SelectList<String> {
let mut deps = deps
.clone()
.map(|dep| self.crate_label(&dep.id.name, &dep.id.version, &dep.target));
- for extra_dep in extra_deps {
- deps.insert(extra_dep.clone(), None);
- }
+ deps.extend(extra_deps.into_iter());
deps
}
diff --git a/crate_universe/src/utils/starlark/select.rs b/crate_universe/src/utils/starlark/select.rs
index 091057a0..a6049b6b 100644
--- a/crate_universe/src/utils/starlark/select.rs
+++ b/crate_universe/src/utils/starlark/select.rs
@@ -1,6 +1,7 @@
use std::collections::{btree_set, BTreeMap, BTreeSet};
use std::iter::{once, FromIterator};
+use crate::config::StringOrSelect;
use serde::ser::{SerializeMap, SerializeTupleStruct, Serializer};
use serde::{Deserialize, Serialize};
use serde_starlark::{FunctionCall, LineComment, MULTILINE};
@@ -92,6 +93,42 @@ impl<T: Ord> SelectList<T> {
}
}
+impl SelectList<String> {
+ pub fn extend<Iter: Iterator<Item = StringOrSelect>>(&mut self, values: Iter) {
+ for value in values {
+ match value {
+ StringOrSelect::Value(value) => {
+ self.insert(value, None);
+ }
+ StringOrSelect::Select(select) => {
+ for (select_key, value) in select {
+ self.insert(value.clone(), Some(select_key.clone()));
+ }
+ }
+ }
+ }
+ }
+}
+
+impl IntoIterator for &SelectList<String> {
+ type Item = StringOrSelect;
+ type IntoIter = <Vec<StringOrSelect> as IntoIterator>::IntoIter;
+ fn into_iter(self) -> Self::IntoIter {
+ let mut all_values = Vec::with_capacity(self.common.len() + self.selects.len());
+ for value in &self.common {
+ all_values.push(StringOrSelect::Value(value.clone()))
+ }
+ for (key, values) in &self.selects {
+ for value in values {
+ let mut map = BTreeMap::new();
+ map.insert(key.clone(), value.clone());
+ all_values.push(StringOrSelect::Select(map))
+ }
+ }
+ all_values.into_iter()
+ }
+}
+
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone)]
pub struct WithOriginalConfigurations<T> {
value: T,
@@ -371,6 +408,26 @@ impl<T: Ord> SelectDict<T> {
}
}
+impl SelectDict<String> {
+ pub fn extend_from_string_or_select<Iter: Iterator<Item = (String, StringOrSelect)>>(
+ &mut self,
+ values: Iter,
+ ) {
+ for (key, value) in values {
+ match value {
+ StringOrSelect::Value(value) => {
+ self.insert(key, value, None);
+ }
+ StringOrSelect::Select(select) => {
+ for (select_key, value) in select {
+ self.insert(key.clone(), value, Some(select_key));
+ }
+ }
+ }
+ }
+ }
+}
+
impl<T: Ord + Clone> SelectDict<T> {
/// Generates a new SelectDict re-keyed by the given configuration mapping.
/// This mapping maps from configurations in the current SelectDict to sets
diff --git a/docs/cargo.md b/docs/cargo.md
index 2192e932..15cf0280 100644
--- a/docs/cargo.md
+++ b/docs/cargo.md
@@ -36,7 +36,7 @@ A rule for bootstrapping a Rust binary using [Cargo](https://doc.rust-lang.org/c
| <a id="cargo_bootstrap_repository-rust_toolchain_rustc_template"></a>rust_toolchain_rustc_template | The template to use for finding the host <code>rustc</code> binary. <code>{version}</code> (eg. '1.53.0'), <code>{triple}</code> (eg. 'x86_64-unknown-linux-gnu'), <code>{arch}</code> (eg. 'aarch64'), <code>{vendor}</code> (eg. 'unknown'), <code>{system}</code> (eg. 'darwin'), <code>{channel}</code> (eg. 'stable'), and <code>{tool}</code> (eg. 'rustc.exe') will be replaced in the string if present. | String | optional | <code>"@rust_{system}_{arch}__{triple}__{channel}_tools//:bin/{tool}"</code> |
| <a id="cargo_bootstrap_repository-srcs"></a>srcs | Souce files of the crate to build. Passing source files here can be used to trigger rebuilds when changes are made | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional | <code>[]</code> |
| <a id="cargo_bootstrap_repository-timeout"></a>timeout | Maximum duration of the Cargo build command in seconds | Integer | optional | <code>600</code> |
-| <a id="cargo_bootstrap_repository-version"></a>version | The version of cargo the resolver should use | String | optional | <code>"1.72.1"</code> |
+| <a id="cargo_bootstrap_repository-version"></a>version | The version of cargo the resolver should use | String | optional | <code>"1.73.0"</code> |
<a id="cargo_dep_env"></a>
@@ -64,8 +64,9 @@ A rule for generating variables for dependent `cargo_build_script`s without a bu
## cargo_build_script
<pre>
-cargo_build_script(<a href="#cargo_build_script-name">name</a>, <a href="#cargo_build_script-crate_features">crate_features</a>, <a href="#cargo_build_script-version">version</a>, <a href="#cargo_build_script-deps">deps</a>, <a href="#cargo_build_script-link_deps">link_deps</a>, <a href="#cargo_build_script-build_script_env">build_script_env</a>, <a href="#cargo_build_script-data">data</a>, <a href="#cargo_build_script-tools">tools</a>,
- <a href="#cargo_build_script-links">links</a>, <a href="#cargo_build_script-rundir">rundir</a>, <a href="#cargo_build_script-rustc_env">rustc_env</a>, <a href="#cargo_build_script-rustc_flags">rustc_flags</a>, <a href="#cargo_build_script-visibility">visibility</a>, <a href="#cargo_build_script-tags">tags</a>, <a href="#cargo_build_script-kwargs">kwargs</a>)
+cargo_build_script(<a href="#cargo_build_script-name">name</a>, <a href="#cargo_build_script-edition">edition</a>, <a href="#cargo_build_script-crate_name">crate_name</a>, <a href="#cargo_build_script-crate_root">crate_root</a>, <a href="#cargo_build_script-srcs">srcs</a>, <a href="#cargo_build_script-crate_features">crate_features</a>, <a href="#cargo_build_script-version">version</a>, <a href="#cargo_build_script-deps">deps</a>,
+ <a href="#cargo_build_script-link_deps">link_deps</a>, <a href="#cargo_build_script-proc_macro_deps">proc_macro_deps</a>, <a href="#cargo_build_script-build_script_env">build_script_env</a>, <a href="#cargo_build_script-data">data</a>, <a href="#cargo_build_script-tools">tools</a>, <a href="#cargo_build_script-links">links</a>, <a href="#cargo_build_script-rundir">rundir</a>,
+ <a href="#cargo_build_script-rustc_env">rustc_env</a>, <a href="#cargo_build_script-rustc_flags">rustc_flags</a>, <a href="#cargo_build_script-visibility">visibility</a>, <a href="#cargo_build_script-tags">tags</a>, <a href="#cargo_build_script-aliases">aliases</a>, <a href="#cargo_build_script-kwargs">kwargs</a>)
</pre>
Compile and execute a rust build script to generate build attributes
@@ -132,10 +133,15 @@ The `hello_lib` target will be build with the flags and the environment variable
| Name | Description | Default Value |
| :------------- | :------------- | :------------- |
| <a id="cargo_build_script-name"></a>name | The name for the underlying rule. This should be the name of the package being compiled, optionally with a suffix of <code>_build_script</code>. | none |
+| <a id="cargo_build_script-edition"></a>edition | The rust edition to use for the internal binary crate. | `None` |
+| <a id="cargo_build_script-crate_name"></a>crate_name | Crate name to use for build script. | `None` |
+| <a id="cargo_build_script-crate_root"></a>crate_root | The file that will be passed to rustc to be used for building this crate. | `None` |
+| <a id="cargo_build_script-srcs"></a>srcs | Souce files of the crate to build. Passing source files here can be used to trigger rebuilds when changes are made. | `[]` |
| <a id="cargo_build_script-crate_features"></a>crate_features | A list of features to enable for the build script. | `[]` |
| <a id="cargo_build_script-version"></a>version | The semantic version (semver) of the crate. | `None` |
| <a id="cargo_build_script-deps"></a>deps | The build-dependencies of the crate. | `[]` |
| <a id="cargo_build_script-link_deps"></a>link_deps | The subset of the (normal) dependencies of the crate that have the links attribute and therefore provide environment variables to this build script. | `[]` |
+| <a id="cargo_build_script-proc_macro_deps"></a>proc_macro_deps | List of rust_proc_macro targets used to build the script. | `[]` |
| <a id="cargo_build_script-build_script_env"></a>build_script_env | Environment variables for build scripts. | `{}` |
| <a id="cargo_build_script-data"></a>data | Files needed by the build script. | `[]` |
| <a id="cargo_build_script-tools"></a>tools | Tools (executables) needed by the build script. | `[]` |
@@ -145,6 +151,7 @@ The `hello_lib` target will be build with the flags and the environment variable
| <a id="cargo_build_script-rustc_flags"></a>rustc_flags | List of compiler flags passed to <code>rustc</code>. | `[]` |
| <a id="cargo_build_script-visibility"></a>visibility | Visibility to apply to the generated build script output. | `None` |
| <a id="cargo_build_script-tags"></a>tags | (list of str, optional): Tags to apply to the generated build script output. | `None` |
+| <a id="cargo_build_script-aliases"></a>aliases | Remap crates to a new name or moniker for linkage to this target. These are other <code>rust_library</code> targets and will be presented as the new name given. | `None` |
| <a id="cargo_build_script-kwargs"></a>kwargs | Forwards to the underlying <code>rust_binary</code> rule. An exception is the <code>compatible_with</code> attribute, which shouldn't be forwarded to the <code>rust_binary</code>, as the <code>rust_binary</code> is only built and used in <code>exec</code> mode. We propagate the <code>compatible_with</code> attribute to the <code>_build_scirpt_run</code> target. | none |
diff --git a/docs/crate_universe.md b/docs/crate_universe.md
index 63e21df6..8d4e0935 100644
--- a/docs/crate_universe.md
+++ b/docs/crate_universe.md
@@ -386,7 +386,7 @@ CARGO_BAZEL_REPIN=1 CARGO_BAZEL_REPIN_ONLY=crate_index bazel sync --only=crate_i
| <a id="crates_repository-repo_mapping"></a>repo_mapping | A dictionary from local repository name to global repository name. This allows controls over workspace dependency resolution for dependencies of this repository.&lt;p&gt;For example, an entry <code>"@foo": "@bar"</code> declares that, for any time this repository depends on <code>@foo</code> (such as a dependency on <code>@foo//some:target</code>, it should actually resolve that dependency within globally-declared <code>@bar</code> (<code>@bar//some:target</code>). | <a href="https://bazel.build/rules/lib/dict">Dictionary: String -> String</a> | required | |
| <a id="crates_repository-rust_toolchain_cargo_template"></a>rust_toolchain_cargo_template | The template to use for finding the host <code>cargo</code> binary. <code>{version}</code> (eg. '1.53.0'), <code>{triple}</code> (eg. 'x86_64-unknown-linux-gnu'), <code>{arch}</code> (eg. 'aarch64'), <code>{vendor}</code> (eg. 'unknown'), <code>{system}</code> (eg. 'darwin'), <code>{cfg}</code> (eg. 'exec'), <code>{channel}</code> (eg. 'stable'), and <code>{tool}</code> (eg. 'rustc.exe') will be replaced in the string if present. | String | optional | <code>"@rust_{system}_{arch}__{triple}__{channel}_tools//:bin/{tool}"</code> |
| <a id="crates_repository-rust_toolchain_rustc_template"></a>rust_toolchain_rustc_template | The template to use for finding the host <code>rustc</code> binary. <code>{version}</code> (eg. '1.53.0'), <code>{triple}</code> (eg. 'x86_64-unknown-linux-gnu'), <code>{arch}</code> (eg. 'aarch64'), <code>{vendor}</code> (eg. 'unknown'), <code>{system}</code> (eg. 'darwin'), <code>{cfg}</code> (eg. 'exec'), <code>{channel}</code> (eg. 'stable'), and <code>{tool}</code> (eg. 'cargo.exe') will be replaced in the string if present. | String | optional | <code>"@rust_{system}_{arch}__{triple}__{channel}_tools//:bin/{tool}"</code> |
-| <a id="crates_repository-rust_version"></a>rust_version | The version of Rust the currently registered toolchain is using. Eg. <code>1.56.0</code>, or <code>nightly/2021-09-08</code> | String | optional | <code>"1.72.1"</code> |
+| <a id="crates_repository-rust_version"></a>rust_version | The version of Rust the currently registered toolchain is using. Eg. <code>1.56.0</code>, or <code>nightly/2021-09-08</code> | String | optional | <code>"1.73.0"</code> |
| <a id="crates_repository-splicing_config"></a>splicing_config | The configuration flags to use for splicing Cargo maniests. Use <code>//crate_universe:defs.bzl\%rsplicing_config</code> to generate the value for this field. If unset, the defaults defined there will be used. | String | optional | <code>""</code> |
| <a id="crates_repository-supported_platform_triples"></a>supported_platform_triples | A set of all platform triples to consider when generating dependencies. | List of strings | optional | <code>["aarch64-unknown-linux-gnu", "i686-apple-darwin", "i686-pc-windows-msvc", "i686-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-pc-windows-msvc", "x86_64-unknown-linux-gnu", "aarch64-apple-darwin", "aarch64-apple-ios-sim", "aarch64-apple-ios", "aarch64-fuchsia", "aarch64-linux-android", "aarch64-pc-windows-msvc", "arm-unknown-linux-gnueabi", "armv7-linux-androideabi", "armv7-unknown-linux-gnueabi", "i686-linux-android", "i686-unknown-freebsd", "powerpc-unknown-linux-gnu", "riscv32imc-unknown-none-elf", "riscv64gc-unknown-none-elf", "s390x-unknown-linux-gnu", "thumbv7em-none-eabi", "thumbv8m.main-none-eabi", "wasm32-unknown-unknown", "wasm32-wasi", "x86_64-apple-ios", "x86_64-fuchsia", "x86_64-linux-android", "x86_64-unknown-freebsd", "x86_64-unknown-none"]</code> |
@@ -637,8 +637,8 @@ A collection of extra attributes and settings for a particular crate
| <a id="crate.annotation-data"></a>data | A list of labels to add to a crate's <code>rust_library::data</code> attribute. | `None` |
| <a id="crate.annotation-data_glob"></a>data_glob | A list of glob patterns to add to a crate's <code>rust_library::data</code> attribute. | `None` |
| <a id="crate.annotation-deps"></a>deps | A list of labels to add to a crate's <code>rust_library::deps</code> attribute. | `None` |
-| <a id="crate.annotation-extra_aliased_targets"></a>extra_aliased_targets | A list of targets to add to the generated aliases in the root crate_universe repository. | `{}` |
-| <a id="crate.annotation-gen_binaries"></a>gen_binaries | As a list, the subset of the crate's bins that should get <code>rust_binary</code> targets produced. Or <code>True</code> to generate all, <code>False</code> to generate none. | `[]` |
+| <a id="crate.annotation-extra_aliased_targets"></a>extra_aliased_targets | A list of targets to add to the generated aliases in the root crate_universe repository. | `None` |
+| <a id="crate.annotation-gen_binaries"></a>gen_binaries | As a list, the subset of the crate's bins that should get <code>rust_binary</code> targets produced. Or <code>True</code> to generate all, <code>False</code> to generate none. | `None` |
| <a id="crate.annotation-disable_pipelining"></a>disable_pipelining | If True, disables pipelining for library targets for this crate. | `False` |
| <a id="crate.annotation-gen_build_script"></a>gen_build_script | An authorative flag to determine whether or not to produce <code>cargo_build_script</code> targets for the current crate. | `None` |
| <a id="crate.annotation-patch_args"></a>patch_args | The <code>patch_args</code> attribute of a Bazel repository rule. See [http_archive.patch_args](https://docs.bazel.build/versions/main/repo/http.html#http_archive-patch_args) | `None` |
@@ -728,7 +728,7 @@ Define dependencies of the `cargo-bazel` Rust target
| Name | Description | Default Value |
| :------------- | :------------- | :------------- |
-| <a id="crate_universe_dependencies-rust_version"></a>rust_version | The version of rust to use when generating dependencies. | `"1.72.1"` |
+| <a id="crate_universe_dependencies-rust_version"></a>rust_version | The version of rust to use when generating dependencies. | `"1.73.0"` |
| <a id="crate_universe_dependencies-bootstrap"></a>bootstrap | If true, a <code>cargo_bootstrap_repository</code> target will be generated. | `False` |
diff --git a/docs/flatten.md b/docs/flatten.md
index 0900ae62..49ed5155 100644
--- a/docs/flatten.md
+++ b/docs/flatten.md
@@ -109,7 +109,7 @@ A rule for bootstrapping a Rust binary using [Cargo](https://doc.rust-lang.org/c
| <a id="cargo_bootstrap_repository-rust_toolchain_rustc_template"></a>rust_toolchain_rustc_template | The template to use for finding the host <code>rustc</code> binary. <code>{version}</code> (eg. '1.53.0'), <code>{triple}</code> (eg. 'x86_64-unknown-linux-gnu'), <code>{arch}</code> (eg. 'aarch64'), <code>{vendor}</code> (eg. 'unknown'), <code>{system}</code> (eg. 'darwin'), <code>{channel}</code> (eg. 'stable'), and <code>{tool}</code> (eg. 'rustc.exe') will be replaced in the string if present. | String | optional | <code>"@rust_{system}_{arch}__{triple}__{channel}_tools//:bin/{tool}"</code> |
| <a id="cargo_bootstrap_repository-srcs"></a>srcs | Souce files of the crate to build. Passing source files here can be used to trigger rebuilds when changes are made | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional | <code>[]</code> |
| <a id="cargo_bootstrap_repository-timeout"></a>timeout | Maximum duration of the Cargo build command in seconds | Integer | optional | <code>600</code> |
-| <a id="cargo_bootstrap_repository-version"></a>version | The version of cargo the resolver should use | String | optional | <code>"1.72.1"</code> |
+| <a id="cargo_bootstrap_repository-version"></a>version | The version of cargo the resolver should use | String | optional | <code>"1.73.0"</code> |
<a id="cargo_dep_env"></a>
@@ -1225,7 +1225,7 @@ See `@rules_rust//rust:repositories.bzl` for examples of defining the `@rust_cpu
| Name | Description | Type | Mandatory | Default |
| :------------- | :------------- | :------------- | :------------- | :------------- |
| <a id="rust_toolchain-name"></a>name | A unique name for this target. | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required | |
-| <a id="rust_toolchain-allocator_library"></a>allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
+| <a id="rust_toolchain-allocator_library"></a>allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>@rules_rust//ffi/cc/allocator_library</code> |
| <a id="rust_toolchain-binary_ext"></a>binary_ext | The extension for binaries created from rustc. | String | required | |
| <a id="rust_toolchain-cargo"></a>cargo | The location of the <code>cargo</code> binary. Can be a direct source or a filegroup containing one item. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
| <a id="rust_toolchain-clippy_driver"></a>clippy_driver | The location of the <code>clippy-driver</code> binary. Can be a direct source or a filegroup containing one item. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
@@ -1237,7 +1237,7 @@ See `@rules_rust//rust:repositories.bzl` for examples of defining the `@rust_cpu
| <a id="rust_toolchain-experimental_use_cc_common_link"></a>experimental_use_cc_common_link | Label to a boolean build setting that controls whether cc_common.link is used to link rust binaries. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>//rust/settings:experimental_use_cc_common_link</code> |
| <a id="rust_toolchain-extra_exec_rustc_flags"></a>extra_exec_rustc_flags | Extra flags to pass to rustc in exec configuration | List of strings | optional | <code>[]</code> |
| <a id="rust_toolchain-extra_rustc_flags"></a>extra_rustc_flags | Extra flags to pass to rustc in non-exec configuration | List of strings | optional | <code>[]</code> |
-| <a id="rust_toolchain-global_allocator_library"></a>global_allocator_library | Target that provides allocator functions for when a global allocator is present. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
+| <a id="rust_toolchain-global_allocator_library"></a>global_allocator_library | Target that provides allocator functions for when a global allocator is present. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>@rules_rust//ffi/cc/global_allocator_library</code> |
| <a id="rust_toolchain-llvm_cov"></a>llvm_cov | The location of the <code>llvm-cov</code> binary. Can be a direct source or a filegroup containing one item. If None, rust code is not instrumented for coverage. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
| <a id="rust_toolchain-llvm_profdata"></a>llvm_profdata | The location of the <code>llvm-profdata</code> binary. Can be a direct source or a filegroup containing one item. If <code>llvm_cov</code> is None, this can be None as well and rust code is not instrumented for coverage. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
| <a id="rust_toolchain-llvm_tools"></a>llvm_tools | LLVM tools that are shipped with the Rust toolchain. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
@@ -1300,14 +1300,14 @@ A given instance of this rule should be accompanied by a toolchain_repository_pr
| Name | Description | Type | Mandatory | Default |
| :------------- | :------------- | :------------- | :------------- | :------------- |
| <a id="rust_toolchain_tools_repository-name"></a>name | A unique name for this repository. | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required | |
-| <a id="rust_toolchain_tools_repository-allocator_library"></a>allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | String | optional | <code>""</code> |
+| <a id="rust_toolchain_tools_repository-allocator_library"></a>allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | String | optional | <code>"@rules_rust//ffi/cc/allocator_library"</code> |
| <a id="rust_toolchain_tools_repository-auth"></a>auth | Auth object compatible with repository_ctx.download to use when downloading files. See [repository_ctx.download](https://docs.bazel.build/versions/main/skylark/lib/repository_ctx.html#download) for more details. | <a href="https://bazel.build/rules/lib/dict">Dictionary: String -> String</a> | optional | <code>{}</code> |
| <a id="rust_toolchain_tools_repository-dev_components"></a>dev_components | Whether to download the rustc-dev components (defaults to False). Requires version to be "nightly". | Boolean | optional | <code>False</code> |
| <a id="rust_toolchain_tools_repository-edition"></a>edition | The rust edition to be used by default (2015, 2018, or 2021). If absent, every rule is required to specify its <code>edition</code> attribute. | String | optional | <code>""</code> |
| <a id="rust_toolchain_tools_repository-exec_triple"></a>exec_triple | The Rust-style target that this compiler runs on | String | required | |
| <a id="rust_toolchain_tools_repository-extra_exec_rustc_flags"></a>extra_exec_rustc_flags | Extra flags to pass to rustc in exec configuration | List of strings | optional | <code>[]</code> |
| <a id="rust_toolchain_tools_repository-extra_rustc_flags"></a>extra_rustc_flags | Extra flags to pass to rustc in non-exec configuration | List of strings | optional | <code>[]</code> |
-| <a id="rust_toolchain_tools_repository-global_allocator_library"></a>global_allocator_library | Target that provides allocator functions when a global allocator is used with cc_common.link. | String | optional | <code>""</code> |
+| <a id="rust_toolchain_tools_repository-global_allocator_library"></a>global_allocator_library | Target that provides allocator functions when a global allocator is used with cc_common.link. | String | optional | <code>"@rules_rust//ffi/cc/global_allocator_library"</code> |
| <a id="rust_toolchain_tools_repository-iso_date"></a>iso_date | The date of the tool (or None, if the version is a specific version). | String | optional | <code>""</code> |
| <a id="rust_toolchain_tools_repository-opt_level"></a>opt_level | Rustc optimization levels. For more details see the documentation for <code>rust_toolchain.opt_level</code>. | <a href="https://bazel.build/rules/lib/dict">Dictionary: String -> String</a> | optional | <code>{}</code> |
| <a id="rust_toolchain_tools_repository-repo_mapping"></a>repo_mapping | A dictionary from local repository name to global repository name. This allows controls over workspace dependency resolution for dependencies of this repository.&lt;p&gt;For example, an entry <code>"@foo": "@bar"</code> declares that, for any time this repository depends on <code>@foo</code> (such as a dependency on <code>@foo//some:target</code>, it should actually resolve that dependency within globally-declared <code>@bar</code> (<code>@bar//some:target</code>). | <a href="https://bazel.build/rules/lib/dict">Dictionary: String -> String</a> | required | |
@@ -1450,7 +1450,7 @@ A toolchain for [rustfmt](https://rust-lang.github.io/rustfmt/)
<pre>
CrateInfo(<a href="#CrateInfo-aliases">aliases</a>, <a href="#CrateInfo-compile_data">compile_data</a>, <a href="#CrateInfo-compile_data_targets">compile_data_targets</a>, <a href="#CrateInfo-data">data</a>, <a href="#CrateInfo-deps">deps</a>, <a href="#CrateInfo-edition">edition</a>, <a href="#CrateInfo-is_test">is_test</a>, <a href="#CrateInfo-metadata">metadata</a>, <a href="#CrateInfo-name">name</a>,
<a href="#CrateInfo-output">output</a>, <a href="#CrateInfo-owner">owner</a>, <a href="#CrateInfo-proc_macro_deps">proc_macro_deps</a>, <a href="#CrateInfo-root">root</a>, <a href="#CrateInfo-rustc_env">rustc_env</a>, <a href="#CrateInfo-rustc_env_files">rustc_env_files</a>, <a href="#CrateInfo-srcs">srcs</a>, <a href="#CrateInfo-type">type</a>,
- <a href="#CrateInfo-wrapped_crate_type">wrapped_crate_type</a>)
+ <a href="#CrateInfo-wrapped_crate_type">wrapped_crate_type</a>, <a href="#CrateInfo-_rustc_env_attr">_rustc_env_attr</a>)
</pre>
A provider containing general Crate information.
@@ -1478,6 +1478,7 @@ A provider containing general Crate information.
| <a id="CrateInfo-srcs"></a>srcs | depset[File]: All source Files that are part of the crate. |
| <a id="CrateInfo-type"></a>type | str: The type of this crate (see [rustc --crate-type](https://doc.rust-lang.org/rustc/command-line-arguments.html#--crate-type-a-list-of-types-of-crates-for-the-compiler-to-emit)). |
| <a id="CrateInfo-wrapped_crate_type"></a>wrapped_crate_type | str, optional: The original crate type for targets generated using a previously defined crate (typically tests using the <code>rust_test::crate</code> attribute) |
+| <a id="CrateInfo-_rustc_env_attr"></a>_rustc_env_attr | Dict[String, String]: Additional <code>"key": "value"</code> environment variables to set for rustc. |
<a id="DepInfo"></a>
@@ -1545,8 +1546,9 @@ A collection of files either found within the `rust-stdlib` artifact or generate
## cargo_build_script
<pre>
-cargo_build_script(<a href="#cargo_build_script-name">name</a>, <a href="#cargo_build_script-crate_features">crate_features</a>, <a href="#cargo_build_script-version">version</a>, <a href="#cargo_build_script-deps">deps</a>, <a href="#cargo_build_script-link_deps">link_deps</a>, <a href="#cargo_build_script-build_script_env">build_script_env</a>, <a href="#cargo_build_script-data">data</a>, <a href="#cargo_build_script-tools">tools</a>,
- <a href="#cargo_build_script-links">links</a>, <a href="#cargo_build_script-rundir">rundir</a>, <a href="#cargo_build_script-rustc_env">rustc_env</a>, <a href="#cargo_build_script-rustc_flags">rustc_flags</a>, <a href="#cargo_build_script-visibility">visibility</a>, <a href="#cargo_build_script-tags">tags</a>, <a href="#cargo_build_script-kwargs">kwargs</a>)
+cargo_build_script(<a href="#cargo_build_script-name">name</a>, <a href="#cargo_build_script-edition">edition</a>, <a href="#cargo_build_script-crate_name">crate_name</a>, <a href="#cargo_build_script-crate_root">crate_root</a>, <a href="#cargo_build_script-srcs">srcs</a>, <a href="#cargo_build_script-crate_features">crate_features</a>, <a href="#cargo_build_script-version">version</a>, <a href="#cargo_build_script-deps">deps</a>,
+ <a href="#cargo_build_script-link_deps">link_deps</a>, <a href="#cargo_build_script-proc_macro_deps">proc_macro_deps</a>, <a href="#cargo_build_script-build_script_env">build_script_env</a>, <a href="#cargo_build_script-data">data</a>, <a href="#cargo_build_script-tools">tools</a>, <a href="#cargo_build_script-links">links</a>, <a href="#cargo_build_script-rundir">rundir</a>,
+ <a href="#cargo_build_script-rustc_env">rustc_env</a>, <a href="#cargo_build_script-rustc_flags">rustc_flags</a>, <a href="#cargo_build_script-visibility">visibility</a>, <a href="#cargo_build_script-tags">tags</a>, <a href="#cargo_build_script-aliases">aliases</a>, <a href="#cargo_build_script-kwargs">kwargs</a>)
</pre>
Compile and execute a rust build script to generate build attributes
@@ -1613,10 +1615,15 @@ The `hello_lib` target will be build with the flags and the environment variable
| Name | Description | Default Value |
| :------------- | :------------- | :------------- |
| <a id="cargo_build_script-name"></a>name | The name for the underlying rule. This should be the name of the package being compiled, optionally with a suffix of <code>_build_script</code>. | none |
+| <a id="cargo_build_script-edition"></a>edition | The rust edition to use for the internal binary crate. | `None` |
+| <a id="cargo_build_script-crate_name"></a>crate_name | Crate name to use for build script. | `None` |
+| <a id="cargo_build_script-crate_root"></a>crate_root | The file that will be passed to rustc to be used for building this crate. | `None` |
+| <a id="cargo_build_script-srcs"></a>srcs | Souce files of the crate to build. Passing source files here can be used to trigger rebuilds when changes are made. | `[]` |
| <a id="cargo_build_script-crate_features"></a>crate_features | A list of features to enable for the build script. | `[]` |
| <a id="cargo_build_script-version"></a>version | The semantic version (semver) of the crate. | `None` |
| <a id="cargo_build_script-deps"></a>deps | The build-dependencies of the crate. | `[]` |
| <a id="cargo_build_script-link_deps"></a>link_deps | The subset of the (normal) dependencies of the crate that have the links attribute and therefore provide environment variables to this build script. | `[]` |
+| <a id="cargo_build_script-proc_macro_deps"></a>proc_macro_deps | List of rust_proc_macro targets used to build the script. | `[]` |
| <a id="cargo_build_script-build_script_env"></a>build_script_env | Environment variables for build scripts. | `{}` |
| <a id="cargo_build_script-data"></a>data | Files needed by the build script. | `[]` |
| <a id="cargo_build_script-tools"></a>tools | Tools (executables) needed by the build script. | `[]` |
@@ -1626,6 +1633,7 @@ The `hello_lib` target will be build with the flags and the environment variable
| <a id="cargo_build_script-rustc_flags"></a>rustc_flags | List of compiler flags passed to <code>rustc</code>. | `[]` |
| <a id="cargo_build_script-visibility"></a>visibility | Visibility to apply to the generated build script output. | `None` |
| <a id="cargo_build_script-tags"></a>tags | (list of str, optional): Tags to apply to the generated build script output. | `None` |
+| <a id="cargo_build_script-aliases"></a>aliases | Remap crates to a new name or moniker for linkage to this target. These are other <code>rust_library</code> targets and will be presented as the new name given. | `None` |
| <a id="cargo_build_script-kwargs"></a>kwargs | Forwards to the underlying <code>rust_binary</code> rule. An exception is the <code>compatible_with</code> attribute, which shouldn't be forwarded to the <code>rust_binary</code>, as the <code>rust_binary</code> is only built and used in <code>exec</code> mode. We propagate the <code>compatible_with</code> attribute to the <code>_build_scirpt_run</code> target. | none |
@@ -1905,7 +1913,7 @@ See `load_arbitrary_tool` in `@rules_rust//rust:repositories.bzl` for more detai
| <a id="rust_register_toolchains-global_allocator_library"></a>global_allocator_library | Target that provides allocator functions when global allocator is used with cc_common.link. | `None` |
| <a id="rust_register_toolchains-iso_date"></a>iso_date | **Deprecated**: Use <code>versions</code> instead. | `None` |
| <a id="rust_register_toolchains-register_toolchains"></a>register_toolchains | If true, repositories will be generated to produce and register <code>rust_toolchain</code> targets. | `True` |
-| <a id="rust_register_toolchains-rustfmt_version"></a>rustfmt_version | The version of rustfmt. | `"nightly/2023-09-19"` |
+| <a id="rust_register_toolchains-rustfmt_version"></a>rustfmt_version | The version of rustfmt. | `"nightly/2023-10-05"` |
| <a id="rust_register_toolchains-rust_analyzer_version"></a>rust_analyzer_version | The version of Rustc to pair with rust-analyzer. | `None` |
| <a id="rust_register_toolchains-sha256s"></a>sha256s | A dict associating tool subdirectories to sha256 hashes. | `None` |
| <a id="rust_register_toolchains-extra_target_triples"></a>extra_target_triples | Additional rust-style targets that rust toolchains should support. | `["wasm32-unknown-unknown", "wasm32-wasi"]` |
diff --git a/docs/index.md b/docs/index.md
index 8f2c2894..dfe9c1ed 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -99,8 +99,8 @@ We test these rules against the latest rolling releases of Bazel, and aim for co
## Supported platforms
-We aim to support Linux, macOS, and Windows.
+We aim to support Linux and macOS.
-Windows support is less complete than the other two platforms, but most things work, and we welcome contributions to help improve its support.
+We do not have sufficient maintainer expertise to support Windows. Most things probably work, but we have had to disable many tests in CI because we lack the expertise to fix them. We welcome contributions to help improve its support.
Windows support for some features requires `--enable_runfiles` to be passed to Bazel, we recommend putting it in your bazelrc. See [Using Bazel on Windows](https://bazel.build/configure/windows) for more Windows-specific recommendations.
diff --git a/docs/providers.md b/docs/providers.md
index c97ad9bc..e553ffb9 100644
--- a/docs/providers.md
+++ b/docs/providers.md
@@ -12,7 +12,7 @@
<pre>
CrateInfo(<a href="#CrateInfo-aliases">aliases</a>, <a href="#CrateInfo-compile_data">compile_data</a>, <a href="#CrateInfo-compile_data_targets">compile_data_targets</a>, <a href="#CrateInfo-data">data</a>, <a href="#CrateInfo-deps">deps</a>, <a href="#CrateInfo-edition">edition</a>, <a href="#CrateInfo-is_test">is_test</a>, <a href="#CrateInfo-metadata">metadata</a>, <a href="#CrateInfo-name">name</a>,
<a href="#CrateInfo-output">output</a>, <a href="#CrateInfo-owner">owner</a>, <a href="#CrateInfo-proc_macro_deps">proc_macro_deps</a>, <a href="#CrateInfo-root">root</a>, <a href="#CrateInfo-rustc_env">rustc_env</a>, <a href="#CrateInfo-rustc_env_files">rustc_env_files</a>, <a href="#CrateInfo-srcs">srcs</a>, <a href="#CrateInfo-type">type</a>,
- <a href="#CrateInfo-wrapped_crate_type">wrapped_crate_type</a>)
+ <a href="#CrateInfo-wrapped_crate_type">wrapped_crate_type</a>, <a href="#CrateInfo-_rustc_env_attr">_rustc_env_attr</a>)
</pre>
A provider containing general Crate information.
@@ -40,6 +40,7 @@ A provider containing general Crate information.
| <a id="CrateInfo-srcs"></a>srcs | depset[File]: All source Files that are part of the crate. |
| <a id="CrateInfo-type"></a>type | str: The type of this crate (see [rustc --crate-type](https://doc.rust-lang.org/rustc/command-line-arguments.html#--crate-type-a-list-of-types-of-crates-for-the-compiler-to-emit)). |
| <a id="CrateInfo-wrapped_crate_type"></a>wrapped_crate_type | str, optional: The original crate type for targets generated using a previously defined crate (typically tests using the <code>rust_test::crate</code> attribute) |
+| <a id="CrateInfo-_rustc_env_attr"></a>_rustc_env_attr | Dict[String, String]: Additional <code>"key": "value"</code> environment variables to set for rustc. |
<a id="DepInfo"></a>
diff --git a/docs/rust_proto.md b/docs/rust_proto.md
index 095b0ff1..4ef51514 100644
--- a/docs/rust_proto.md
+++ b/docs/rust_proto.md
@@ -128,7 +128,7 @@ rust_library_group(
)
rust_prost_toolchain(
- name = "default_prost_toolchain_impl",
+ name = "prost_toolchain_impl",
prost_plugin = "@crates_io//:protoc-gen-prost__protoc-gen-prost",
prost_runtime = ":prost_runtime",
prost_types = "@crates_io//:prost-types",
diff --git a/docs/rust_proto.vm b/docs/rust_proto.vm
index 1fe807fc..00e48b4a 100644
--- a/docs/rust_proto.vm
+++ b/docs/rust_proto.vm
@@ -114,7 +114,7 @@ rust_library_group(
)
rust_prost_toolchain(
- name = "default_prost_toolchain_impl",
+ name = "prost_toolchain_impl",
prost_plugin = "@crates_io//:protoc-gen-prost__protoc-gen-prost",
prost_runtime = ":prost_runtime",
prost_types = "@crates_io//:prost-types",
diff --git a/docs/rust_repositories.md b/docs/rust_repositories.md
index e89cf643..24ae7899 100644
--- a/docs/rust_repositories.md
+++ b/docs/rust_repositories.md
@@ -93,7 +93,7 @@ See `@rules_rust//rust:repositories.bzl` for examples of defining the `@rust_cpu
| Name | Description | Type | Mandatory | Default |
| :------------- | :------------- | :------------- | :------------- | :------------- |
| <a id="rust_toolchain-name"></a>name | A unique name for this target. | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required | |
-| <a id="rust_toolchain-allocator_library"></a>allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
+| <a id="rust_toolchain-allocator_library"></a>allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>@rules_rust//ffi/cc/allocator_library</code> |
| <a id="rust_toolchain-binary_ext"></a>binary_ext | The extension for binaries created from rustc. | String | required | |
| <a id="rust_toolchain-cargo"></a>cargo | The location of the <code>cargo</code> binary. Can be a direct source or a filegroup containing one item. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
| <a id="rust_toolchain-clippy_driver"></a>clippy_driver | The location of the <code>clippy-driver</code> binary. Can be a direct source or a filegroup containing one item. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
@@ -105,7 +105,7 @@ See `@rules_rust//rust:repositories.bzl` for examples of defining the `@rust_cpu
| <a id="rust_toolchain-experimental_use_cc_common_link"></a>experimental_use_cc_common_link | Label to a boolean build setting that controls whether cc_common.link is used to link rust binaries. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>//rust/settings:experimental_use_cc_common_link</code> |
| <a id="rust_toolchain-extra_exec_rustc_flags"></a>extra_exec_rustc_flags | Extra flags to pass to rustc in exec configuration | List of strings | optional | <code>[]</code> |
| <a id="rust_toolchain-extra_rustc_flags"></a>extra_rustc_flags | Extra flags to pass to rustc in non-exec configuration | List of strings | optional | <code>[]</code> |
-| <a id="rust_toolchain-global_allocator_library"></a>global_allocator_library | Target that provides allocator functions for when a global allocator is present. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
+| <a id="rust_toolchain-global_allocator_library"></a>global_allocator_library | Target that provides allocator functions for when a global allocator is present. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>@rules_rust//ffi/cc/global_allocator_library</code> |
| <a id="rust_toolchain-llvm_cov"></a>llvm_cov | The location of the <code>llvm-cov</code> binary. Can be a direct source or a filegroup containing one item. If None, rust code is not instrumented for coverage. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
| <a id="rust_toolchain-llvm_profdata"></a>llvm_profdata | The location of the <code>llvm-profdata</code> binary. Can be a direct source or a filegroup containing one item. If <code>llvm_cov</code> is None, this can be None as well and rust code is not instrumented for coverage. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
| <a id="rust_toolchain-llvm_tools"></a>llvm_tools | LLVM tools that are shipped with the Rust toolchain. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>None</code> |
@@ -168,14 +168,14 @@ A given instance of this rule should be accompanied by a toolchain_repository_pr
| Name | Description | Type | Mandatory | Default |
| :------------- | :------------- | :------------- | :------------- | :------------- |
| <a id="rust_toolchain_tools_repository-name"></a>name | A unique name for this repository. | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required | |
-| <a id="rust_toolchain_tools_repository-allocator_library"></a>allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | String | optional | <code>""</code> |
+| <a id="rust_toolchain_tools_repository-allocator_library"></a>allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | String | optional | <code>"@rules_rust//ffi/cc/allocator_library"</code> |
| <a id="rust_toolchain_tools_repository-auth"></a>auth | Auth object compatible with repository_ctx.download to use when downloading files. See [repository_ctx.download](https://docs.bazel.build/versions/main/skylark/lib/repository_ctx.html#download) for more details. | <a href="https://bazel.build/rules/lib/dict">Dictionary: String -> String</a> | optional | <code>{}</code> |
| <a id="rust_toolchain_tools_repository-dev_components"></a>dev_components | Whether to download the rustc-dev components (defaults to False). Requires version to be "nightly". | Boolean | optional | <code>False</code> |
| <a id="rust_toolchain_tools_repository-edition"></a>edition | The rust edition to be used by default (2015, 2018, or 2021). If absent, every rule is required to specify its <code>edition</code> attribute. | String | optional | <code>""</code> |
| <a id="rust_toolchain_tools_repository-exec_triple"></a>exec_triple | The Rust-style target that this compiler runs on | String | required | |
| <a id="rust_toolchain_tools_repository-extra_exec_rustc_flags"></a>extra_exec_rustc_flags | Extra flags to pass to rustc in exec configuration | List of strings | optional | <code>[]</code> |
| <a id="rust_toolchain_tools_repository-extra_rustc_flags"></a>extra_rustc_flags | Extra flags to pass to rustc in non-exec configuration | List of strings | optional | <code>[]</code> |
-| <a id="rust_toolchain_tools_repository-global_allocator_library"></a>global_allocator_library | Target that provides allocator functions when a global allocator is used with cc_common.link. | String | optional | <code>""</code> |
+| <a id="rust_toolchain_tools_repository-global_allocator_library"></a>global_allocator_library | Target that provides allocator functions when a global allocator is used with cc_common.link. | String | optional | <code>"@rules_rust//ffi/cc/global_allocator_library"</code> |
| <a id="rust_toolchain_tools_repository-iso_date"></a>iso_date | The date of the tool (or None, if the version is a specific version). | String | optional | <code>""</code> |
| <a id="rust_toolchain_tools_repository-opt_level"></a>opt_level | Rustc optimization levels. For more details see the documentation for <code>rust_toolchain.opt_level</code>. | <a href="https://bazel.build/rules/lib/dict">Dictionary: String -> String</a> | optional | <code>{}</code> |
| <a id="rust_toolchain_tools_repository-repo_mapping"></a>repo_mapping | A dictionary from local repository name to global repository name. This allows controls over workspace dependency resolution for dependencies of this repository.&lt;p&gt;For example, an entry <code>"@foo": "@bar"</code> declares that, for any time this repository depends on <code>@foo</code> (such as a dependency on <code>@foo//some:target</code>, it should actually resolve that dependency within globally-declared <code>@bar</code> (<code>@bar//some:target</code>). | <a href="https://bazel.build/rules/lib/dict">Dictionary: String -> String</a> | required | |
@@ -267,7 +267,7 @@ See `load_arbitrary_tool` in `@rules_rust//rust:repositories.bzl` for more detai
| <a id="rust_register_toolchains-global_allocator_library"></a>global_allocator_library | Target that provides allocator functions when global allocator is used with cc_common.link. | `None` |
| <a id="rust_register_toolchains-iso_date"></a>iso_date | **Deprecated**: Use <code>versions</code> instead. | `None` |
| <a id="rust_register_toolchains-register_toolchains"></a>register_toolchains | If true, repositories will be generated to produce and register <code>rust_toolchain</code> targets. | `True` |
-| <a id="rust_register_toolchains-rustfmt_version"></a>rustfmt_version | The version of rustfmt. | `"nightly/2023-09-19"` |
+| <a id="rust_register_toolchains-rustfmt_version"></a>rustfmt_version | The version of rustfmt. | `"nightly/2023-10-05"` |
| <a id="rust_register_toolchains-rust_analyzer_version"></a>rust_analyzer_version | The version of Rustc to pair with rust-analyzer. | `None` |
| <a id="rust_register_toolchains-sha256s"></a>sha256s | A dict associating tool subdirectories to sha256 hashes. | `None` |
| <a id="rust_register_toolchains-extra_target_triples"></a>extra_target_triples | Additional rust-style targets that rust toolchains should support. | `["wasm32-unknown-unknown", "wasm32-wasi"]` |
diff --git a/examples/.bazelrc b/examples/.bazelrc
index f67e236b..aeb9ab43 100644
--- a/examples/.bazelrc
+++ b/examples/.bazelrc
@@ -14,6 +14,10 @@ build:rustfmt --output_groups=+rustfmt_checks
build:clippy --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect
build:clippy --output_groups=+clippy_checks
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod
+
# This import should always be last to allow users to override
# settings for local development.
try-import %workspace%/user.bazelrc
diff --git a/examples/android/.bazelrc b/examples/android/.bazelrc
index 2bb3104e..d9d2c74e 100644
--- a/examples/android/.bazelrc
+++ b/examples/android/.bazelrc
@@ -4,3 +4,7 @@ startup --windows_enable_symlinks
build:windows --enable_runfiles
build --fat_apk_cpu=arm64-v8a
+
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod
diff --git a/examples/android/BUILD.bazel b/examples/android/BUILD.bazel
index c49af78e..73137e98 100644
--- a/examples/android/BUILD.bazel
+++ b/examples/android/BUILD.bazel
@@ -2,17 +2,10 @@ load("@build_bazel_rules_android//android:rules.bzl", "android_binary", "android
load("@rules_cc//cc:defs.bzl", "cc_library")
load("@rules_rust//rust:defs.bzl", "rust_library")
-cc_library(
- name = "allocator_library",
- srcs = ["allocator_library.cc"],
- visibility = ["//visibility:public"],
-)
-
rust_library(
name = "rust_lib",
srcs = ["demo.rs"],
edition = "2018",
- deps = [":allocator_library"],
)
cc_library(
@@ -45,9 +38,9 @@ android_binary(
)
platform(
- name = "android_aarch64",
+ name = "arm64-v8a",
constraint_values = [
- "@platforms//cpu:aarch64",
+ "@platforms//cpu:arm64",
"@platforms//os:android",
],
)
diff --git a/examples/android/allocator_library.cc b/examples/android/allocator_library.cc
deleted file mode 100644
index d0259a6c..00000000
--- a/examples/android/allocator_library.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-#include <stdint.h>
-
-// This file has some exciting magic to get Rust code linking in a cc_binary.
-// The Rust compiler generates some similar symbol aliases when it links, so we
-// have to do it manually. We mark all our symbols as weak so that linking this
-// via Rust tooling to produce a binary with a Rust main works.
-//
-// It is intended to be used in rust_toolchain.allocator_library.
-//
-// https://github.com/rust-lang/rust/blob/master/library/alloc/src/alloc.rs
-// and https://github.com/rust-lang/rust/blob/master/library/std/src/alloc.rs
-// are the best source of docs I've found on these functions and variables.
-// https://doc.rust-lang.org/std/alloc/index.html talks about how this is
-// intended to be used.
-//
-// Also note
-// https://rust-lang.github.io/unsafe-code-guidelines/layout/scalars.html for
-// the sizes of the various integer types.
-//
-// This file strongly assumes that the default allocator is used. It will
-// not work with any other allocated switched in via `#[global_allocator]`.
-
-// New feature as of https://github.com/rust-lang/rust/pull/88098.
-__attribute__((weak)) uint8_t __rust_alloc_error_handler_should_panic = 0;
-
-extern "C" uint8_t *__rdl_alloc(uintptr_t size, uintptr_t align);
-extern "C" __attribute__((weak)) uint8_t *__rust_alloc(uintptr_t size,
- uintptr_t align) {
- return __rdl_alloc(size, align);
-}
-extern "C" void __rdl_dealloc(uint8_t *ptr, uintptr_t size, uintptr_t align);
-extern "C" __attribute__((weak)) void __rust_dealloc(uint8_t *ptr,
- uintptr_t size,
- uintptr_t align) {
- __rdl_dealloc(ptr, size, align);
-}
-extern "C" uint8_t *__rdl_realloc(uint8_t *ptr, uintptr_t old_size,
- uintptr_t align, uintptr_t new_size);
-extern "C" __attribute__((weak)) uint8_t *__rust_realloc(uint8_t *ptr,
- uintptr_t old_size,
- uintptr_t align,
- uintptr_t new_size) {
- return __rdl_realloc(ptr, old_size, align, new_size);
-}
-extern "C" uint8_t *__rdl_alloc_zeroed(uintptr_t size, uintptr_t align);
-extern "C" __attribute__((weak)) uint8_t *__rust_alloc_zeroed(uintptr_t size,
- uintptr_t align) {
- return __rdl_alloc_zeroed(size, align);
-}
-extern "C" void __rdl_oom(uintptr_t size, uintptr_t align);
-extern "C" __attribute__((weak)) void __rust_alloc_error_handler(
- uintptr_t size, uintptr_t align) {
- __rdl_oom(size, align);
-}
diff --git a/examples/android/platform_mappings b/examples/android/platform_mappings
deleted file mode 100644
index d66d78f0..00000000
--- a/examples/android/platform_mappings
+++ /dev/null
@@ -1,4 +0,0 @@
-flags:
- --cpu=arm64-v8a
- --crosstool_top=//external:android/crosstool
- //:android_aarch64
diff --git a/examples/crate_universe/.bazelrc b/examples/crate_universe/.bazelrc
index 369688be..7b05ff98 100644
--- a/examples/crate_universe/.bazelrc
+++ b/examples/crate_universe/.bazelrc
@@ -18,6 +18,10 @@ build:clippy --output_groups=+clippy_checks
# external symlink in runfiles.
build --nolegacy_external_runfiles
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod
+
# This import should always be last to allow users to override
# settings for local development.
try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/WORKSPACE.bazel b/examples/crate_universe/WORKSPACE.bazel
index 1635a96e..057dc4d6 100644
--- a/examples/crate_universe/WORKSPACE.bazel
+++ b/examples/crate_universe/WORKSPACE.bazel
@@ -284,7 +284,7 @@ crates_repository(
lockfile = "//using_cxx:cargo-bazel-lock.json",
packages = {
"cxx": crate.spec(
- version = "1.0.105",
+ version = "1.0.109",
),
},
splicing_config = splicing_config(
@@ -320,10 +320,10 @@ rust_binary(
),
)
""",
- sha256 = "0b3eea393dbcbc1e875302846de4e4f9a31bf2e57ad3657bc83d61d00293b0fe",
- strip_prefix = "cxxbridge-cmd-1.0.105",
+ sha256 = "d93600487d429c8bf013ee96719af4e62e809ac57fc4cac24f17cf58e4526009",
+ strip_prefix = "cxxbridge-cmd-1.0.109",
type = "tar.gz",
- urls = ["https://crates.io/api/v1/crates/cxxbridge-cmd/1.0.105/download"],
+ urls = ["https://crates.io/api/v1/crates/cxxbridge-cmd/1.0.109/download"],
)
crates_repository(
diff --git a/examples/crate_universe/cargo_aliases/.bazelrc b/examples/crate_universe/cargo_aliases/.bazelrc
index 5c479faf..d7379de6 100644
--- a/examples/crate_universe/cargo_aliases/.bazelrc
+++ b/examples/crate_universe/cargo_aliases/.bazelrc
@@ -13,6 +13,10 @@ build:strict --output_groups=+rustfmt_checks
build:strict --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect
build:strict --output_groups=+clippy_checks
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod
+
# This import should always be last to allow users to override
# settings for local development.
try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/cargo_aliases/cargo-bazel-lock.json b/examples/crate_universe/cargo_aliases/cargo-bazel-lock.json
index a1f49553..8c247655 100644
--- a/examples/crate_universe/cargo_aliases/cargo-bazel-lock.json
+++ b/examples/crate_universe/cargo_aliases/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
{
- "checksum": "9d11e9afc3a99a886bda6675032f991d4088b23a7c339329459ea09e815b1dd4",
+ "checksum": "52f60c61e76b1cb7a9142f4c92751bcf190f7836c4ef50560439c0a322d44dc6",
"crates": {
"aho-corasick 0.7.20": {
"name": "aho-corasick",
diff --git a/examples/crate_universe/cargo_conditional_deps/cargo-bazel-lock.json b/examples/crate_universe/cargo_conditional_deps/cargo-bazel-lock.json
index 7763df8a..60218d50 100644
--- a/examples/crate_universe/cargo_conditional_deps/cargo-bazel-lock.json
+++ b/examples/crate_universe/cargo_conditional_deps/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
{
- "checksum": "6f618b87abf3d565aeff1b389c3c40ba7cc81a46d8f063d56cff03d987a027a2",
+ "checksum": "174330374159f2c7ba8e256af2db0e4f274dc2b35e0ee6d660288a34376516ab",
"crates": {
"autocfg 1.1.0": {
"name": "autocfg",
diff --git a/examples/crate_universe/cargo_remote/.bazelrc b/examples/crate_universe/cargo_remote/.bazelrc
index 5c479faf..d7379de6 100644
--- a/examples/crate_universe/cargo_remote/.bazelrc
+++ b/examples/crate_universe/cargo_remote/.bazelrc
@@ -13,6 +13,10 @@ build:strict --output_groups=+rustfmt_checks
build:strict --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect
build:strict --output_groups=+clippy_checks
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod
+
# This import should always be last to allow users to override
# settings for local development.
try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/cargo_workspace/.bazelrc b/examples/crate_universe/cargo_workspace/.bazelrc
index 5c479faf..d7379de6 100644
--- a/examples/crate_universe/cargo_workspace/.bazelrc
+++ b/examples/crate_universe/cargo_workspace/.bazelrc
@@ -13,6 +13,10 @@ build:strict --output_groups=+rustfmt_checks
build:strict --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect
build:strict --output_groups=+clippy_checks
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod
+
# This import should always be last to allow users to override
# settings for local development.
try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/cargo_workspace/cargo-bazel-lock.json b/examples/crate_universe/cargo_workspace/cargo-bazel-lock.json
index e1c1a7a6..689910b9 100644
--- a/examples/crate_universe/cargo_workspace/cargo-bazel-lock.json
+++ b/examples/crate_universe/cargo_workspace/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
{
- "checksum": "0422ac2901df395fb35488b05922400a0aeef6dcfc936e69c50574dc29ab0c22",
+ "checksum": "a9e7b58b5c3f5b3f2712c1dbf4e6b00ef104dda9ee1e8210dac46dd7c50e469a",
"crates": {
"ansi_term 0.12.1": {
"name": "ansi_term",
diff --git a/examples/crate_universe/multi_package/.bazelrc b/examples/crate_universe/multi_package/.bazelrc
index 5c479faf..d7379de6 100644
--- a/examples/crate_universe/multi_package/.bazelrc
+++ b/examples/crate_universe/multi_package/.bazelrc
@@ -13,6 +13,10 @@ build:strict --output_groups=+rustfmt_checks
build:strict --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect
build:strict --output_groups=+clippy_checks
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod
+
# This import should always be last to allow users to override
# settings for local development.
try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/multi_package/cargo-bazel-lock.json b/examples/crate_universe/multi_package/cargo-bazel-lock.json
index fa78b29f..88789e2e 100644
--- a/examples/crate_universe/multi_package/cargo-bazel-lock.json
+++ b/examples/crate_universe/multi_package/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
{
- "checksum": "3f78847a3b168aa8bb22b43e50ed441e484f0c0b4196a2871d8f5f0e632e2388",
+ "checksum": "762f9faabb2c99e97ac5af7e3cbbe30afec964cd85c203589efe0275abca78f8",
"crates": {
"aho-corasick 0.7.20": {
"name": "aho-corasick",
@@ -1584,9 +1584,12 @@
]
}
},
- "extra_deps": [
- "@m_pkgs__curl//:curl"
- ],
+ "extra_deps": {
+ "common": [
+ "@m_pkgs__curl//:curl"
+ ],
+ "selects": {}
+ },
"edition": "2018",
"version": "0.4.60+curl-7.88.1"
},
diff --git a/examples/crate_universe/no_cargo_manifests/.bazelrc b/examples/crate_universe/no_cargo_manifests/.bazelrc
index 5c479faf..d7379de6 100644
--- a/examples/crate_universe/no_cargo_manifests/.bazelrc
+++ b/examples/crate_universe/no_cargo_manifests/.bazelrc
@@ -13,6 +13,10 @@ build:strict --output_groups=+rustfmt_checks
build:strict --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect
build:strict --output_groups=+clippy_checks
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod
+
# This import should always be last to allow users to override
# settings for local development.
try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/no_cargo_manifests/cargo-bazel-lock.json b/examples/crate_universe/no_cargo_manifests/cargo-bazel-lock.json
index 7e5e5160..0e9f1ada 100644
--- a/examples/crate_universe/no_cargo_manifests/cargo-bazel-lock.json
+++ b/examples/crate_universe/no_cargo_manifests/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
{
- "checksum": "6b76ce55d9391a3e09290b65e6f3da16d20abb21b85c57eec453bd692bc75142",
+ "checksum": "0c441bac079b4481f5810054a2282693511a0c5582636028298e4cb49cc63695",
"crates": {
"async-trait 0.1.64": {
"name": "async-trait",
diff --git a/examples/crate_universe/using_cxx/Cargo.Bazel.lock b/examples/crate_universe/using_cxx/Cargo.Bazel.lock
index fc79b417..a630cdd5 100644
--- a/examples/crate_universe/using_cxx/Cargo.Bazel.lock
+++ b/examples/crate_universe/using_cxx/Cargo.Bazel.lock
@@ -13,9 +13,9 @@ dependencies = [
[[package]]
name = "cxx"
-version = "1.0.105"
+version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "666a3ec767f4bbaf0dcfcc3b4ea048b90520b254fdf88813e763f4c762636c14"
+checksum = "c390c123d671cc547244943ecad81bdaab756c6ea332d9ca9c1f48d952a24895"
dependencies = [
"cc",
"cxxbridge-flags",
@@ -25,15 +25,15 @@ dependencies = [
[[package]]
name = "cxxbridge-flags"
-version = "1.0.105"
+version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6e8c238aadc4b9f2c00269d04c87abb23f96dd240803872536eed1a304bb40e"
+checksum = "94415827ecfea0f0c74c8cad7d1a86ddb3f05354d6a6ddeda0adee5e875d2939"
[[package]]
name = "cxxbridge-macro"
-version = "1.0.105"
+version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59d9ffb4193dd22180b8d5747b1e095c3d9c9c665ce39b0483a488948f437e06"
+checksum = "e33dbbe9f5621c9247f97ec14213b04f350bff4b6cebefe834c60055db266ecf"
dependencies = [
"proc-macro2",
"quote",
diff --git a/examples/crate_universe/using_cxx/cargo-bazel-lock.json b/examples/crate_universe/using_cxx/cargo-bazel-lock.json
index 03b174a7..79e8f8d3 100644
--- a/examples/crate_universe/using_cxx/cargo-bazel-lock.json
+++ b/examples/crate_universe/using_cxx/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
{
- "checksum": "bccba273c0f0cc6d41ccd090a7bb2acf16e83d881d0ec28c4185d5b00f208ce4",
+ "checksum": "71b6f19ac904caf96b1b84bdca72bfc5ef2b8696396d04314ebb4be13c98f62a",
"crates": {
"cc 1.0.82": {
"name": "cc",
@@ -42,13 +42,13 @@
},
"license": "MIT OR Apache-2.0"
},
- "cxx 1.0.105": {
+ "cxx 1.0.109": {
"name": "cxx",
- "version": "1.0.105",
+ "version": "1.0.109",
"repository": {
"Http": {
- "url": "https://crates.io/api/v1/crates/cxx/1.0.105/download",
- "sha256": "666a3ec767f4bbaf0dcfcc3b4ea048b90520b254fdf88813e763f4c762636c14"
+ "url": "https://crates.io/api/v1/crates/cxx/1.0.109/download",
+ "sha256": "c390c123d671cc547244943ecad81bdaab756c6ea332d9ca9c1f48d952a24895"
}
},
"targets": [
@@ -84,17 +84,23 @@
],
"selects": {}
},
+ "extra_deps": {
+ "common": [
+ ":cxx_cc"
+ ],
+ "selects": {}
+ },
"edition": "2021",
"proc_macro_deps": {
"common": [
{
- "id": "cxxbridge-macro 1.0.105",
+ "id": "cxxbridge-macro 1.0.109",
"target": "cxxbridge_macro"
}
],
"selects": {}
},
- "version": "1.0.105"
+ "version": "1.0.109"
},
"license": "MIT OR Apache-2.0",
"additive_build_file_content": "cc_library(\n name = \"cxx_cc\",\n srcs = [\"src/cxx.cc\"],\n hdrs = [\"include/cxx.h\"],\n include_prefix = \"rust\",\n includes = [\"include\"],\n linkstatic = True,\n strip_include_prefix = \"include\",\n visibility = [\"//visibility:public\"],\n)\n",
@@ -102,13 +108,13 @@
"cxx_cc": "cxx_cc"
}
},
- "cxxbridge-flags 1.0.105": {
+ "cxxbridge-flags 1.0.109": {
"name": "cxxbridge-flags",
- "version": "1.0.105",
+ "version": "1.0.109",
"repository": {
"Http": {
- "url": "https://crates.io/api/v1/crates/cxxbridge-flags/1.0.105/download",
- "sha256": "d6e8c238aadc4b9f2c00269d04c87abb23f96dd240803872536eed1a304bb40e"
+ "url": "https://crates.io/api/v1/crates/cxxbridge-flags/1.0.109/download",
+ "sha256": "94415827ecfea0f0c74c8cad7d1a86ddb3f05354d6a6ddeda0adee5e875d2939"
}
},
"targets": [
@@ -134,17 +140,17 @@
"selects": {}
},
"edition": "2021",
- "version": "1.0.105"
+ "version": "1.0.109"
},
"license": "MIT OR Apache-2.0"
},
- "cxxbridge-macro 1.0.105": {
+ "cxxbridge-macro 1.0.109": {
"name": "cxxbridge-macro",
- "version": "1.0.105",
+ "version": "1.0.109",
"repository": {
"Http": {
- "url": "https://crates.io/api/v1/crates/cxxbridge-macro/1.0.105/download",
- "sha256": "59d9ffb4193dd22180b8d5747b1e095c3d9c9c665ce39b0483a488948f437e06"
+ "url": "https://crates.io/api/v1/crates/cxxbridge-macro/1.0.109/download",
+ "sha256": "e33dbbe9f5621c9247f97ec14213b04f350bff4b6cebefe834c60055db266ecf"
}
},
"targets": [
@@ -181,7 +187,7 @@
"selects": {}
},
"edition": "2021",
- "version": "1.0.105"
+ "version": "1.0.109"
},
"license": "MIT OR Apache-2.0"
},
@@ -208,7 +214,7 @@
"deps": {
"common": [
{
- "id": "cxx 1.0.105",
+ "id": "cxx 1.0.109",
"target": "cxx"
}
],
diff --git a/examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.Bazel.lock b/examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.Bazel.lock
index 7be70adc..e6bcbaa5 100644
--- a/examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.Bazel.lock
+++ b/examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.Bazel.lock
@@ -1,5 +1,5 @@
{
- "checksum": "013c941ea67a7b6b78f5b2aeecec6ddf7572100018654693075d10985be2fee1",
+ "checksum": "2ac40591dc369d36ba80a6f16cd22421662cd96937636813a59af18726b8ad2c",
"crates": {
"anstyle 1.0.1": {
"name": "anstyle",
@@ -217,9 +217,9 @@
},
"license": "Apache-2.0"
},
- "cxxbridge-cmd 1.0.105": {
+ "cxxbridge-cmd 1.0.109": {
"name": "cxxbridge-cmd",
- "version": "1.0.105",
+ "version": "1.0.109",
"repository": null,
"targets": [],
"library_target_name": null,
@@ -253,7 +253,7 @@
"selects": {}
},
"edition": "2021",
- "version": "1.0.105"
+ "version": "1.0.109"
},
"license": "MIT OR Apache-2.0"
},
@@ -784,7 +784,7 @@
},
"binary_crates": [],
"workspace_members": {
- "cxxbridge-cmd 1.0.105": ""
+ "cxxbridge-cmd 1.0.109": ""
},
"conditions": {
"aarch64-apple-darwin": [
diff --git a/examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.lock b/examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.lock
index 2df94a7d..72f7b6df 100644
--- a/examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.lock
+++ b/examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.lock
@@ -46,7 +46,7 @@ dependencies = [
[[package]]
name = "cxxbridge-cmd"
-version = "1.0.105"
+version = "1.0.109"
dependencies = [
"clap",
"codespan-reporting",
diff --git a/examples/crate_universe_unnamed/.bazelrc b/examples/crate_universe_unnamed/.bazelrc
index f67e236b..aeb9ab43 100644
--- a/examples/crate_universe_unnamed/.bazelrc
+++ b/examples/crate_universe_unnamed/.bazelrc
@@ -14,6 +14,10 @@ build:rustfmt --output_groups=+rustfmt_checks
build:clippy --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect
build:clippy --output_groups=+clippy_checks
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod
+
# This import should always be last to allow users to override
# settings for local development.
try-import %workspace%/user.bazelrc
diff --git a/examples/ios/.bazelrc b/examples/ios/.bazelrc
index 57326930..7c4827ae 100644
--- a/examples/ios/.bazelrc
+++ b/examples/ios/.bazelrc
@@ -7,3 +7,7 @@ build:windows --enable_runfiles
build --apple_crosstool_top=@local_config_apple_cc//:toolchain
build --crosstool_top=@local_config_apple_cc//:toolchain
build --host_crosstool_top=@local_config_apple_cc//:toolchain
+
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod
diff --git a/examples/ios/BUILD.bazel b/examples/ios/BUILD.bazel
index 81cba9ca..c1ddafcc 100644
--- a/examples/ios/BUILD.bazel
+++ b/examples/ios/BUILD.bazel
@@ -3,18 +3,11 @@ load("@build_bazel_rules_apple//apple:macos.bzl", "macos_application")
load("@rules_cc//cc:defs.bzl", "cc_library", "objc_library")
load("@rules_rust//rust:defs.bzl", "rust_library")
-cc_library(
- name = "allocator_library",
- srcs = ["allocator_library.cc"],
- tags = ["manual"],
-)
-
rust_library(
name = "rust_lib",
srcs = ["demo.rs"],
edition = "2018",
tags = ["manual"],
- deps = [":allocator_library"],
)
# TODO: Remove this once rules_rust doesn't support bazel 5.x
diff --git a/examples/ios_build/.bazelrc b/examples/ios_build/.bazelrc
index 57326930..7c4827ae 100644
--- a/examples/ios_build/.bazelrc
+++ b/examples/ios_build/.bazelrc
@@ -7,3 +7,7 @@ build:windows --enable_runfiles
build --apple_crosstool_top=@local_config_apple_cc//:toolchain
build --crosstool_top=@local_config_apple_cc//:toolchain
build --host_crosstool_top=@local_config_apple_cc//:toolchain
+
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod
diff --git a/examples/zig_cross_compiling/.bazelrc b/examples/zig_cross_compiling/.bazelrc
index d973fe22..5a1a8fd0 100644
--- a/examples/zig_cross_compiling/.bazelrc
+++ b/examples/zig_cross_compiling/.bazelrc
@@ -4,3 +4,7 @@ startup --windows_enable_symlinks
build:windows --enable_runfiles
build --incompatible_enable_cc_toolchain_resolution
+
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod
diff --git a/ffi/cc/allocator_library/BUILD.bazel b/ffi/cc/allocator_library/BUILD.bazel
new file mode 100644
index 00000000..570a8af0
--- /dev/null
+++ b/ffi/cc/allocator_library/BUILD.bazel
@@ -0,0 +1,14 @@
+load("@rules_cc//cc:defs.bzl", "cc_library")
+
+cc_library(
+ name = "allocator_library",
+ srcs = select({
+ # Windows doesn't support weak symbol linkage.
+ # If someone can make this work on Windows, please do!
+ # For now we will silently not supply any symbols, because it would be very messy to conditionally define the default allocator library on toolchains depending on the platform.
+ "@platforms//os:windows": ["empty.cc"],
+ "//conditions:default": ["allocator_library.cc"],
+ }),
+ tags = ["manual"],
+ visibility = ["//visibility:public"],
+)
diff --git a/examples/ios/allocator_library.cc b/ffi/cc/allocator_library/allocator_library.cc
index b058f282..b058f282 100644
--- a/examples/ios/allocator_library.cc
+++ b/ffi/cc/allocator_library/allocator_library.cc
diff --git a/ffi/cc/allocator_library/empty.cc b/ffi/cc/allocator_library/empty.cc
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/ffi/cc/allocator_library/empty.cc
diff --git a/ffi/cc/global_allocator_library/BUILD.bazel b/ffi/cc/global_allocator_library/BUILD.bazel
new file mode 100644
index 00000000..16480416
--- /dev/null
+++ b/ffi/cc/global_allocator_library/BUILD.bazel
@@ -0,0 +1,14 @@
+load("@rules_cc//cc:defs.bzl", "cc_library")
+
+cc_library(
+ name = "global_allocator_library",
+ srcs = select({
+ # Windows doesn't support weak symbol linkage.
+ # If someone can make this work on Windows, please do!
+ # For now we will silently not supply any symbols, because it would be very messy to conditionally define the default allocator library on toolchains depending on the platform.
+ "@platforms//os:windows": ["empty.cc"],
+ "//conditions:default": ["global_allocator_library.cc"],
+ }),
+ tags = ["manual"],
+ visibility = ["//visibility:public"],
+)
diff --git a/ffi/cc/global_allocator_library/empty.cc b/ffi/cc/global_allocator_library/empty.cc
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/ffi/cc/global_allocator_library/empty.cc
diff --git a/test/cc_common_link/global_allocator_library.cc b/ffi/cc/global_allocator_library/global_allocator_library.cc
index 1b8e0921..1b8e0921 100644
--- a/test/cc_common_link/global_allocator_library.cc
+++ b/ffi/cc/global_allocator_library/global_allocator_library.cc
diff --git a/proto/prost/private/prost.bzl b/proto/prost/private/prost.bzl
index 6cd3d522..1db20021 100644
--- a/proto/prost/private/prost.bzl
+++ b/proto/prost/private/prost.bzl
@@ -160,7 +160,7 @@ def _compile_rust(ctx, attr, crate_name, src, deps, edition):
ctx = ctx,
attr = attr,
toolchain = toolchain,
- crate_info = rust_common.create_crate_info(
+ crate_info_dict = dict(
name = crate_name,
type = "rlib",
root = src,
@@ -173,6 +173,7 @@ def _compile_rust(ctx, attr, crate_name, src, deps, edition):
edition = edition,
is_test = False,
rustc_env = {},
+ _rustc_env_attr = {},
compile_data = depset([]),
compile_data_targets = depset([]),
owner = ctx.label,
diff --git a/proto/prost/private/protoc_wrapper.rs b/proto/prost/private/protoc_wrapper.rs
index eb0c3319..f8be6478 100644
--- a/proto/prost/private/protoc_wrapper.rs
+++ b/proto/prost/private/protoc_wrapper.rs
@@ -4,12 +4,13 @@ use std::collections::BTreeMap;
use std::collections::BTreeSet;
use std::fmt::{Display, Formatter, Write};
use std::fs;
+use std::io::BufRead;
use std::path::Path;
use std::path::PathBuf;
use std::process;
use std::{env, fmt};
-use heck::ToSnakeCase;
+use heck::{ToSnakeCase, ToUpperCamelCase};
use prost::Message;
use prost_types::{
DescriptorProto, EnumDescriptorProto, FileDescriptorProto, FileDescriptorSet,
@@ -351,7 +352,7 @@ fn message_type_to_extern_paths(
extern_paths.insert(
proto_path.join(message_type_name),
- rust_path.join(message_type_name),
+ rust_path.join(&message_type_name.to_upper_camel_case()),
);
let name_lower = message_type_name.to_lowercase();
@@ -465,13 +466,10 @@ impl Args {
let mut extra_args = Vec::new();
- // Iterate over the given command line arguments parsing out arguments
- // for the process runner and arguments for protoc and potentially spawn
- // additional arguments needed by prost.
- for arg in env::args().skip(1) {
+ let mut handle_arg = |arg: String| {
if !arg.starts_with('-') {
proto_files.push(PathBuf::from(arg));
- continue;
+ return;
}
if arg.starts_with("-I") {
@@ -480,17 +478,17 @@ impl Args {
.expect("Failed to strip -I")
.to_string(),
);
- continue;
+ return;
}
if arg == "--is_tonic" {
is_tonic = true;
- continue;
+ return;
}
if !arg.contains('=') {
extra_args.push(arg);
- continue;
+ return;
}
let parts = arg.split_once('=').expect("Failed to split argument on =");
@@ -542,6 +540,22 @@ impl Args {
extra_args.push(format!("{}={}", arg, value));
}
}
+ };
+
+ // Iterate over the given command line arguments parsing out arguments
+ // for the process runner and arguments for protoc and potentially spawn
+ // additional arguments needed by prost.
+ for arg in env::args().skip(1) {
+ if let Some(path) = arg.strip_prefix('@') {
+ // handle argfile
+ let file = std::fs::File::open(path)
+ .map_err(|_| format!("could not open argfile: {}", arg))?;
+ for line in std::io::BufReader::new(file).lines() {
+ handle_arg(line.map_err(|_| format!("could not read argfile: {}", arg))?);
+ }
+ } else {
+ handle_arg(arg);
+ }
}
for tonic_or_prost_opt in tonic_or_prost_opts {
@@ -718,7 +732,7 @@ fn main() {
eprintln!("Warning: Service definitions will not be generated because the prost toolchain did not define a tonic plugin.");
}
- let mut cmd = process::Command::new(&protoc);
+ let mut cmd = process::Command::new(protoc);
cmd.arg(format!("--prost_out={}", out_dir.display()));
if is_tonic {
cmd.arg(format!("--tonic_out={}", out_dir.display()));
diff --git a/proto/prost/private/tests/camel_case/BUILD.bazel b/proto/prost/private/tests/camel_case/BUILD.bazel
new file mode 100644
index 00000000..1720ad28
--- /dev/null
+++ b/proto/prost/private/tests/camel_case/BUILD.bazel
@@ -0,0 +1,37 @@
+load("@rules_proto//proto:defs.bzl", "proto_library")
+load("//proto/prost:defs.bzl", "rust_prost_library")
+load("//rust:defs.bzl", "rust_test")
+
+package(default_visibility = ["//proto/prost/private/tests:__subpackages__"])
+
+proto_library(
+ name = "camel_case_proto",
+ srcs = [
+ "camel_case.proto",
+ ],
+ strip_import_prefix = "/proto/prost/private/tests/camel_case",
+)
+
+proto_library(
+ name = "another_proto",
+ srcs = [
+ "another.proto",
+ ],
+ deps = [
+ ":camel_case_proto",
+ ],
+)
+
+rust_prost_library(
+ name = "another_proto_rust",
+ proto = ":another_proto",
+)
+
+rust_test(
+ name = "camel_case_test",
+ srcs = ["camel_case_test.rs"],
+ edition = "2021",
+ deps = [
+ ":another_proto_rust",
+ ],
+)
diff --git a/proto/prost/private/tests/camel_case/another.proto b/proto/prost/private/tests/camel_case/another.proto
new file mode 100644
index 00000000..186cfcf8
--- /dev/null
+++ b/proto/prost/private/tests/camel_case/another.proto
@@ -0,0 +1,9 @@
+syntax = "proto3";
+
+package another;
+
+import "camel_case.proto";
+
+message Another {
+ camel_case.NameWithCAPS inner = 1;
+}
diff --git a/proto/prost/private/tests/camel_case/camel_case.proto b/proto/prost/private/tests/camel_case/camel_case.proto
new file mode 100644
index 00000000..e472ddf5
--- /dev/null
+++ b/proto/prost/private/tests/camel_case/camel_case.proto
@@ -0,0 +1,7 @@
+syntax = "proto3";
+
+package camel_case;
+
+message NameWithCAPS {
+ string name = 1;
+}
diff --git a/proto/prost/private/tests/camel_case/camel_case_test.rs b/proto/prost/private/tests/camel_case/camel_case_test.rs
new file mode 100644
index 00000000..cc555680
--- /dev/null
+++ b/proto/prost/private/tests/camel_case/camel_case_test.rs
@@ -0,0 +1,8 @@
+//! Tests that strange casings of message names are handled correctly.
+
+use another_proto::another::Another;
+
+#[test]
+fn test_nested_messages() {
+ let _a = Another::default();
+}
diff --git a/proto/protobuf/proto.bzl b/proto/protobuf/proto.bzl
index ca2df8a2..6ff45cc2 100644
--- a/proto/protobuf/proto.bzl
+++ b/proto/protobuf/proto.bzl
@@ -20,7 +20,6 @@ load(
_generate_proto = "rust_generate_proto",
_generated_file_stem = "generated_file_stem",
)
-load("//rust:defs.bzl", "rust_common")
# buildifier: disable=bzl-visibility
load("//rust/private:rustc.bzl", "rustc_compile_action")
@@ -214,7 +213,7 @@ def _rust_proto_compile(protos, descriptor_sets, imports, crate_name, ctx, is_gr
ctx = ctx,
attr = ctx.attr,
toolchain = toolchain,
- crate_info = rust_common.create_crate_info(
+ crate_info_dict = dict(
name = crate_name,
type = "rlib",
root = lib_rs,
@@ -226,6 +225,7 @@ def _rust_proto_compile(protos, descriptor_sets, imports, crate_name, ctx, is_gr
metadata = rust_metadata,
edition = proto_toolchain.edition,
rustc_env = {},
+ _rustc_env_attr = {},
is_test = False,
compile_data = depset([target.files for target in getattr(ctx.attr, "compile_data", [])]),
compile_data_targets = depset(getattr(ctx.attr, "compile_data", [])),
diff --git a/rust/extensions.bzl b/rust/extensions.bzl
index ce323ba7..883946c9 100644
--- a/rust/extensions.bzl
+++ b/rust/extensions.bzl
@@ -25,7 +25,7 @@ def _rust_impl(ctx):
)
rust_toolchain = tag_class(attrs = {
- "allocator_library": attr.string(),
+ "allocator_library": attr.string(default = "@rules_rust//ffi/cc/allocator_library"),
"dev_components": attr.bool(default = False),
"edition": attr.string(),
"extra_target_triples": attr.string_list(default = DEFAULT_EXTRA_TARGET_TRIPLES),
diff --git a/rust/known_shas.bzl b/rust/known_shas.bzl
index 1d7fda40..05beacdd 100644
--- a/rust/known_shas.bzl
+++ b/rust/known_shas.bzl
@@ -17164,6 +17164,452 @@ FILE_KEY_TO_SHA = {
"2023-09-19/rustfmt-nightly-x86_64-unknown-linux-musl.tar.xz": "dc6f223026ac4c6f06c9196428bc68cea6f112c402ec95130454e19737449e28",
"2023-09-19/rustfmt-nightly-x86_64-unknown-netbsd.tar.gz": "526ea9e2b65871cde5340cf835f8d769ac3f8a49fc20ee2dc3eaf0edb7dfb112",
"2023-09-19/rustfmt-nightly-x86_64-unknown-netbsd.tar.xz": "61cdb18418cb5edf7659919855c61a58fca2c13818844a5e65aaf32a948ba8e9",
+ "2023-10-05/cargo-nightly-aarch64-apple-darwin.tar.gz": "82fdb6fdf23b090055f1b592f7ed9e24c11c9bb1bc373fc058fd651504e84c4c",
+ "2023-10-05/cargo-nightly-aarch64-apple-darwin.tar.xz": "5940a918b2a07713fc5f2d9d2875e2c63842e5cda23e4a8431f4237c3e6a5819",
+ "2023-10-05/cargo-nightly-aarch64-pc-windows-msvc.tar.gz": "9abb554dec741ef24b7bd3f7386bbf385d4743f9e85333463b7fd5aa75abc1db",
+ "2023-10-05/cargo-nightly-aarch64-pc-windows-msvc.tar.xz": "cd2569ad15e00d0ea3624511874d64acead83a22f5240a3dcbb3be155832e25d",
+ "2023-10-05/cargo-nightly-aarch64-unknown-linux-gnu.tar.gz": "ab5508ab17a238c305ec0b863cd74a724bc31100210a1261ad5890c657f29be9",
+ "2023-10-05/cargo-nightly-aarch64-unknown-linux-gnu.tar.xz": "29f3ccf5d883c3da9bc27b675bdfa5ea59b63bd0996e352b689ffacea8425259",
+ "2023-10-05/cargo-nightly-aarch64-unknown-linux-musl.tar.gz": "36b3d4bed60d663e6c29e535f492b71216eca3bb66d2730d4babbd87af2f5a34",
+ "2023-10-05/cargo-nightly-aarch64-unknown-linux-musl.tar.xz": "38babbf1593ebe4d53d20d1dff1f306f6d078ca598bf49fb986859a3c89656ce",
+ "2023-10-05/cargo-nightly-arm-unknown-linux-gnueabi.tar.gz": "f4aadcad41aaf12b2b14af39bb576ba715df58e247efe562df6743cfa61c099c",
+ "2023-10-05/cargo-nightly-arm-unknown-linux-gnueabi.tar.xz": "09ba16d3065018f3e27b00bc89aa0becb6bc094872d65c864062c70627969279",
+ "2023-10-05/cargo-nightly-arm-unknown-linux-gnueabihf.tar.gz": "1ffeb5c4074bfab5286c00badc9d72545f3a1337127b3e5ee0ca02c7b6f5bb67",
+ "2023-10-05/cargo-nightly-arm-unknown-linux-gnueabihf.tar.xz": "ff89319018b5575c35f16e4c17679fb701e4c0d3285118adafa100b42026774a",
+ "2023-10-05/cargo-nightly-armv7-unknown-linux-gnueabihf.tar.gz": "a33674da23544669489d28ef62702c1b74ef27326eda575ef7f30f9e65048f04",
+ "2023-10-05/cargo-nightly-armv7-unknown-linux-gnueabihf.tar.xz": "a91a49e49dc91e0286b78089ac4019e36046b82731d6f7c1f3ec6008ba93f8b1",
+ "2023-10-05/cargo-nightly-i686-pc-windows-gnu.tar.gz": "85282e6cc206c59181c090eb50b7b7a82883480a5b50215ca9fc48c6b6ac37b6",
+ "2023-10-05/cargo-nightly-i686-pc-windows-gnu.tar.xz": "f6a9d8f9b16700c871d0c21c53e998b5c20c92fc16560fac5cccdc6fac8420e9",
+ "2023-10-05/cargo-nightly-i686-pc-windows-msvc.tar.gz": "6fca12a07c4404a37212dc23b5a48b34e46cdb8ec404209c18db0e1540c28a70",
+ "2023-10-05/cargo-nightly-i686-pc-windows-msvc.tar.xz": "55a28afce7ccb615dcf0180b99fca51ddc5315bb7250f51af41bdea9b893fc4f",
+ "2023-10-05/cargo-nightly-i686-unknown-linux-gnu.tar.gz": "1770e4f253e0eaff5614c81196bc87f821082e7e47ea4013941147e94a7cd138",
+ "2023-10-05/cargo-nightly-i686-unknown-linux-gnu.tar.xz": "9ab8269cf3f3a7d4028e372d4a8ae02ff065deef0f90c5446c31fd718bf2e3c4",
+ "2023-10-05/cargo-nightly-powerpc-unknown-linux-gnu.tar.gz": "acaf6cafe5c4cbc09920b7322ef4bd653130e1595a84112274afb48e742b2afd",
+ "2023-10-05/cargo-nightly-powerpc-unknown-linux-gnu.tar.xz": "6b1f2e2a6cab7b1e78c27044a92b8ef5357918f31c4a1168299bae722da0143c",
+ "2023-10-05/cargo-nightly-powerpc64-unknown-linux-gnu.tar.gz": "b865950558dc2b36e4eed185085d014e0e76c3e3698dd94fa2a5fc10770f4d11",
+ "2023-10-05/cargo-nightly-powerpc64-unknown-linux-gnu.tar.xz": "47217da387e88631e656c81d693528e5fcad6586936719e96a57c6cf547f259f",
+ "2023-10-05/cargo-nightly-powerpc64le-unknown-linux-gnu.tar.gz": "a36d2ef2ec03dcf98acb3108e8f7718028fbb722d1f7fcd50957f63cda86f70f",
+ "2023-10-05/cargo-nightly-powerpc64le-unknown-linux-gnu.tar.xz": "b7c93275db2b1813de6ba6fa55783a02a2edbd6da74c292f98ed4d095beaa83b",
+ "2023-10-05/cargo-nightly-riscv64gc-unknown-linux-gnu.tar.gz": "91bfb3f2568babdc4a044a90224cbb878e86cd82a5a81fe321dfde62becad24e",
+ "2023-10-05/cargo-nightly-riscv64gc-unknown-linux-gnu.tar.xz": "8fd524b66169d401c1e628f7821914b7e1a28ff771994a2237a8c6fb167a60da",
+ "2023-10-05/cargo-nightly-s390x-unknown-linux-gnu.tar.gz": "69c4551d8ffa616fdf3cbe869a7478e9e2a42e50b89e771cf7895e16c34314e9",
+ "2023-10-05/cargo-nightly-s390x-unknown-linux-gnu.tar.xz": "7458bf829e2e9b7edc100b86c6de310f33890ec4d93c2e368a4e9690884ad20c",
+ "2023-10-05/cargo-nightly-x86_64-apple-darwin.tar.gz": "962892bb98b7bb0c2d3dd0d24d9ed35e18cce019dd3dd3e852aa7e5631417b51",
+ "2023-10-05/cargo-nightly-x86_64-apple-darwin.tar.xz": "c144089157fa0061c1b2ff809d7f8a85c81b1e88b89aababe16fa9b12cf1a9a2",
+ "2023-10-05/cargo-nightly-x86_64-pc-windows-gnu.tar.gz": "b5251639b4d37df7f0b7e77e90449f3e9041af0ea16b2e2302667e0880c3735e",
+ "2023-10-05/cargo-nightly-x86_64-pc-windows-gnu.tar.xz": "6cd95b17d90e23b56b8a6f94f5540ae798a96cd7747fcb272b0ca3576d4a9e1d",
+ "2023-10-05/cargo-nightly-x86_64-pc-windows-msvc.tar.gz": "22ba023e73c08784885aee3e83e2207a2749600578a45def2021fc8cf476506e",
+ "2023-10-05/cargo-nightly-x86_64-pc-windows-msvc.tar.xz": "59bdac0a32f22a498c39b596691c5634563a261ccc490e8714bbbea46ddccfab",
+ "2023-10-05/cargo-nightly-x86_64-unknown-freebsd.tar.gz": "f1e1adbff5327ea5f8803d708de0dad3f6b6efa35ca3ca6df8694788badc9342",
+ "2023-10-05/cargo-nightly-x86_64-unknown-freebsd.tar.xz": "1990bb93ddc80e0aab9d969e2764e43a177882c34783fbc8c8d5defc9463b0c8",
+ "2023-10-05/cargo-nightly-x86_64-unknown-illumos.tar.gz": "61a6f5ab6f4cfcbf0b68c1a9f9116ffc236761037e13aec9481f6745f942b482",
+ "2023-10-05/cargo-nightly-x86_64-unknown-illumos.tar.xz": "c6392a889c8245c6b0d947854780b73a92e4a544e21fd5b137e7605ef94a9c54",
+ "2023-10-05/cargo-nightly-x86_64-unknown-linux-gnu.tar.gz": "e8c4d217f721700108f7df024aa5b1cead16eff69f54dde3746e3fd048a1b787",
+ "2023-10-05/cargo-nightly-x86_64-unknown-linux-gnu.tar.xz": "45538b14b14670c1d608a4aff741bfff493c96388b1d0f418e861d7ecc47e4c8",
+ "2023-10-05/cargo-nightly-x86_64-unknown-linux-musl.tar.gz": "8f403e5a32bc5ff2f3e5f5582017049cdc193bef40a7f9ac2596b07cbbdfd5cd",
+ "2023-10-05/cargo-nightly-x86_64-unknown-linux-musl.tar.xz": "fa29ea768f4e2577bde8a481c205ba7294322e0f38592540e7e75f6bc2338157",
+ "2023-10-05/cargo-nightly-x86_64-unknown-netbsd.tar.gz": "d26f9a1b936f7729b66e2c1612f73a0e7151cb3ca46039fa069b613bbf410e91",
+ "2023-10-05/cargo-nightly-x86_64-unknown-netbsd.tar.xz": "58e36842eb1a92e7f1121cb25f9798f2d7f30fc1e1af2cddfc054b0aa7c3a7cb",
+ "2023-10-05/clippy-nightly-aarch64-apple-darwin.tar.gz": "9a30d3e264f31575ff68e2057eec3f41a13f4f0f39a543bc18a1993ca989263a",
+ "2023-10-05/clippy-nightly-aarch64-apple-darwin.tar.xz": "6806f287fee6cde9fc1bc111670267e589108a985471acfeab4ea221c9ba0a09",
+ "2023-10-05/clippy-nightly-aarch64-pc-windows-msvc.tar.gz": "0062db83b6de58501644dda2dc0275b4445f6d99ee84478e4717e85b6fbaf4c0",
+ "2023-10-05/clippy-nightly-aarch64-pc-windows-msvc.tar.xz": "8dccea5c37e959336a22aac043e79a83c010bc85b1db9a6364702813fa2b2438",
+ "2023-10-05/clippy-nightly-aarch64-unknown-linux-gnu.tar.gz": "ef68b48d2e4145ec87d06627eb11baaace90d31c2b340ffa4d7548c367420b40",
+ "2023-10-05/clippy-nightly-aarch64-unknown-linux-gnu.tar.xz": "2d4e27f0edb02f6b2526b3d9d9bbad4259b3c929a9bd5be0627324ac1d322c1c",
+ "2023-10-05/clippy-nightly-aarch64-unknown-linux-musl.tar.gz": "ce57dcb974919b996732dc47c36afbcfc4dd57784792d6c1c88b9fdb38d488af",
+ "2023-10-05/clippy-nightly-aarch64-unknown-linux-musl.tar.xz": "18b3d18778bca93f371bc88bcd404c7e82a1fa4c847ae63eaabd51b4757400e4",
+ "2023-10-05/clippy-nightly-arm-unknown-linux-gnueabi.tar.gz": "f95c5e7433c745895916dc6a31cda1cf2af3bd86c32a902c1dfc102a6a922074",
+ "2023-10-05/clippy-nightly-arm-unknown-linux-gnueabi.tar.xz": "21c1a01b46ce73288423efd7fc575ffb7688030f4ddb95a42fa47227c6999c85",
+ "2023-10-05/clippy-nightly-arm-unknown-linux-gnueabihf.tar.gz": "70197d3cd26dd8c336be1a77088db18eca49fa04860cc06fd1c47ae2fb688052",
+ "2023-10-05/clippy-nightly-arm-unknown-linux-gnueabihf.tar.xz": "b25ed5a97568793067c45f55cdc0f123555efd5ce36e30aff26b4ba50a9952c1",
+ "2023-10-05/clippy-nightly-armv7-unknown-linux-gnueabihf.tar.gz": "26e3b7b643d6bda2f114057a9f5900cbd1eda2f8d94191b3324986692c5de002",
+ "2023-10-05/clippy-nightly-armv7-unknown-linux-gnueabihf.tar.xz": "efa7e51c93c96a97eb4cf1c82356d278ef0a77ef9499938116477cdd8e94a13b",
+ "2023-10-05/clippy-nightly-i686-pc-windows-gnu.tar.gz": "899c5fab4c95799e26fb081ae5940c3ea37124ae66976f60839637b2c28e0ac1",
+ "2023-10-05/clippy-nightly-i686-pc-windows-gnu.tar.xz": "00ec7a1a98ecb8fb9d1bb7f7c1df155a9bc04b5ac5f5961e6d835874a3f57956",
+ "2023-10-05/clippy-nightly-i686-pc-windows-msvc.tar.gz": "93f40a72d7e150572d46d6149f6790aab7750a0471cadd06b4b22339b3e61346",
+ "2023-10-05/clippy-nightly-i686-pc-windows-msvc.tar.xz": "4a10d6c84a79f8c4a70b76f9d3bee82504b2a6e57d07dad64d61d16b0d373006",
+ "2023-10-05/clippy-nightly-i686-unknown-linux-gnu.tar.gz": "91158e8989cd3a075b8dcb1a556b2b565fbdc1a4f5979153d610986a46b42efa",
+ "2023-10-05/clippy-nightly-i686-unknown-linux-gnu.tar.xz": "37d5876de1ca2ea8f2f03c4fa44172b4b36b2d31fb38daee34fb85752557247e",
+ "2023-10-05/clippy-nightly-powerpc-unknown-linux-gnu.tar.gz": "067c3cbdf6a2212b522ef7c23196077d42be59a2a01c8f577980b8eb4320bcfe",
+ "2023-10-05/clippy-nightly-powerpc-unknown-linux-gnu.tar.xz": "5efa585a1387f3c8fda497eac7018d1354d742536c7c343f78b480b23f1f720e",
+ "2023-10-05/clippy-nightly-powerpc64-unknown-linux-gnu.tar.gz": "8100b4bd625610c60d931ed2e0f4e46dce7e560efffe4589325e5b6c556caa16",
+ "2023-10-05/clippy-nightly-powerpc64-unknown-linux-gnu.tar.xz": "a97b1fea51d7f47662b55fb1408a02319eb2a799dd5649f5748f491cc61c2e78",
+ "2023-10-05/clippy-nightly-powerpc64le-unknown-linux-gnu.tar.gz": "54b4138d5e23bde180500fe5f2b7514e232d97e52abe6b51cebfed418a097337",
+ "2023-10-05/clippy-nightly-powerpc64le-unknown-linux-gnu.tar.xz": "80ef37cadf84fc0b199a47587819a2356e42201c42c4dd62c278d03f0e3c0c14",
+ "2023-10-05/clippy-nightly-riscv64gc-unknown-linux-gnu.tar.gz": "c892105b733bc108172f99e6a6d1198b8b4b8679fb46725d129cfe2c82160907",
+ "2023-10-05/clippy-nightly-riscv64gc-unknown-linux-gnu.tar.xz": "7af4b3d08dae8b748f689609fb203742bce5c112cb6d3fe558e2beb46ab9f3b0",
+ "2023-10-05/clippy-nightly-s390x-unknown-linux-gnu.tar.gz": "07711866d07bc7fc7a2ccc43f1a2a80504480f0c99479e757abe503df9a4133d",
+ "2023-10-05/clippy-nightly-s390x-unknown-linux-gnu.tar.xz": "96d8edc488326f8784c23b28af8eaf261220a3cfb3dee09e9049ae00f4529574",
+ "2023-10-05/clippy-nightly-x86_64-apple-darwin.tar.gz": "ab2ac5d7c1e88e4ce49e9ba9d01a02b389aac26b39b69f17fbdcde8173b338a1",
+ "2023-10-05/clippy-nightly-x86_64-apple-darwin.tar.xz": "1485c4b21876158985588d815aec0694f922e02c0bdf56660ba87900c1d62a6c",
+ "2023-10-05/clippy-nightly-x86_64-pc-windows-gnu.tar.gz": "6b2064da6000ec79b06a006e708715138b8fe4a02e7f47ffc27c654801633bc6",
+ "2023-10-05/clippy-nightly-x86_64-pc-windows-gnu.tar.xz": "b6140e0d09b94e43befa724e9d211b1828f7cd63341042b27eccaa9ccca23810",
+ "2023-10-05/clippy-nightly-x86_64-pc-windows-msvc.tar.gz": "958b73ad9df482dc2c07db80eb5cb35f0a014cbb9179075a78dd1add44cf5927",
+ "2023-10-05/clippy-nightly-x86_64-pc-windows-msvc.tar.xz": "2926e92ad70c8079414ef3b2784b751bde166d4a4e811f5c93e901904b7ef838",
+ "2023-10-05/clippy-nightly-x86_64-unknown-freebsd.tar.gz": "584bd828caa74c54fa7a4bd4b98367250895edd331bb992b6c94a86ae60686cd",
+ "2023-10-05/clippy-nightly-x86_64-unknown-freebsd.tar.xz": "942f30499b8f862c832f6c76479ee239daeee811a719c5508ef3bdc60f0747aa",
+ "2023-10-05/clippy-nightly-x86_64-unknown-illumos.tar.gz": "e4a73951757b27364d6c5d1fc18c3d48d20b134ef6ee0d0540d325119fd61ee8",
+ "2023-10-05/clippy-nightly-x86_64-unknown-illumos.tar.xz": "a9d0a0d9b2c0b1451471607dcf437083bdbcfc7c0a86272e205cc7466b7f3902",
+ "2023-10-05/clippy-nightly-x86_64-unknown-linux-gnu.tar.gz": "b431a29c0941fd7ec7c6373f8f40ef961212f5c9508a0cfa85c7fbb02b6812f4",
+ "2023-10-05/clippy-nightly-x86_64-unknown-linux-gnu.tar.xz": "02f48cc408c0d69bd653098b6e567bd8fea428cd23c7d4afc772597ed0cc5182",
+ "2023-10-05/clippy-nightly-x86_64-unknown-linux-musl.tar.gz": "177866a503bbc884967b5a27e2ff57a8927faeb4f431777b36a89370bbbdadc8",
+ "2023-10-05/clippy-nightly-x86_64-unknown-linux-musl.tar.xz": "429003303c1b54e4f0cc83ebe344029b4183bff5653cf801c55c0e527b523161",
+ "2023-10-05/clippy-nightly-x86_64-unknown-netbsd.tar.gz": "a64fb1e589ed01da372f22f96b093a9e501cbd7f805b687f527e73eea40cab9d",
+ "2023-10-05/clippy-nightly-x86_64-unknown-netbsd.tar.xz": "993694789b81fec06c09147f740bb221c2aa251902fecf50d0d6166d0a87b1a0",
+ "2023-10-05/llvm-tools-nightly-aarch64-apple-darwin.tar.gz": "ff02815e897089fac213d7d4ac001cecb626c487460438f8ede7fd3f238d69ea",
+ "2023-10-05/llvm-tools-nightly-aarch64-apple-darwin.tar.xz": "a82f54666e33c1fea35d4f4c644725127edc3b5d084d5e2fd6c3423e5be59bc9",
+ "2023-10-05/llvm-tools-nightly-aarch64-pc-windows-msvc.tar.gz": "5e2fab60d9446a89edccba90e2cf6bba9d465c6c7e956757a3ff21c67a11d6fc",
+ "2023-10-05/llvm-tools-nightly-aarch64-pc-windows-msvc.tar.xz": "e41caf6e58b0f1d68c866bc7e8c24d8ab88813672525424f733cf78f9ddcf6d8",
+ "2023-10-05/llvm-tools-nightly-aarch64-unknown-linux-gnu.tar.gz": "be58258984d12077bc4400ac27640803fd2836e8a0fcacd8fcae730345ef3d32",
+ "2023-10-05/llvm-tools-nightly-aarch64-unknown-linux-gnu.tar.xz": "ae6d4108eac9c1eeed96eb74ffe075becf3b289ce93f9dc3aa8edd1302a61688",
+ "2023-10-05/llvm-tools-nightly-aarch64-unknown-linux-musl.tar.gz": "05afa653999c8ba1e0cff21086d3aa84064d216dc2c9f1265f7106916f4156dc",
+ "2023-10-05/llvm-tools-nightly-aarch64-unknown-linux-musl.tar.xz": "88673af365ffb37df515483a3bc88895c7650486963b9229366bcba0e1a6cc1e",
+ "2023-10-05/llvm-tools-nightly-arm-unknown-linux-gnueabi.tar.gz": "b4054117c38690d136664893f6fe05fe7ed80fff669b15a5334f36d75a96416a",
+ "2023-10-05/llvm-tools-nightly-arm-unknown-linux-gnueabi.tar.xz": "0c12bc9747da698312db69332d76757fa452d8710821ad4f0c3d67c8fca24f21",
+ "2023-10-05/llvm-tools-nightly-arm-unknown-linux-gnueabihf.tar.gz": "d0667c4e3f734bf1628a1b03c568281e47513f78376c4b6c9fab5f460193211b",
+ "2023-10-05/llvm-tools-nightly-arm-unknown-linux-gnueabihf.tar.xz": "8fc05be100688f0f606aea0a2beb2250a64e3a9d6a2518f3f708a21f04a08147",
+ "2023-10-05/llvm-tools-nightly-armv7-unknown-linux-gnueabihf.tar.gz": "08904c88fe0e68a0466445c849e985d96b5107dcb1ca715c58bda28ffdaefd94",
+ "2023-10-05/llvm-tools-nightly-armv7-unknown-linux-gnueabihf.tar.xz": "b81849e34d71eadd99c439c66ffafa6dad5b0ddf6fc4076d7cf62b3b61d0fe37",
+ "2023-10-05/llvm-tools-nightly-i686-pc-windows-gnu.tar.gz": "2b788580833ee91f9387843151d370ec3c929c366ba2bc4269c20a482d6a9b5a",
+ "2023-10-05/llvm-tools-nightly-i686-pc-windows-gnu.tar.xz": "3d56f49789322f2ca58d8d0c0cf3cf522d7f8b2f57f94454224e63255a8fc104",
+ "2023-10-05/llvm-tools-nightly-i686-pc-windows-msvc.tar.gz": "5594ef42e38e2559c0e98fe63622a60b541559a584013124dbcbdceb45b2d2e3",
+ "2023-10-05/llvm-tools-nightly-i686-pc-windows-msvc.tar.xz": "56f75c13072b2aaafbf80d1327b57e57581db8d4fa06416da2d0855b9f1bad15",
+ "2023-10-05/llvm-tools-nightly-i686-unknown-linux-gnu.tar.gz": "5fa07d4449038d7e88fec98b771b5a5617fbb4386ef4cca1a479b035156f7c25",
+ "2023-10-05/llvm-tools-nightly-i686-unknown-linux-gnu.tar.xz": "91df115f6d1a6f1f2a9ca0c2875cf86c355c116b248f44d0531238fb7537bf2b",
+ "2023-10-05/llvm-tools-nightly-powerpc-unknown-linux-gnu.tar.gz": "f9d19faca57d2ffecec45d1be09c5ba4b6b6709e9bbb2dd4f929a23f313c7c20",
+ "2023-10-05/llvm-tools-nightly-powerpc-unknown-linux-gnu.tar.xz": "e8dc707853c8238455c494eb2c6bcb076c6a80350b6124a2eaeac23c67a534a0",
+ "2023-10-05/llvm-tools-nightly-powerpc64-unknown-linux-gnu.tar.gz": "72826b6c6446ec8283ffadcc5b1f3619078d047b714db324e6c6dd92223df54f",
+ "2023-10-05/llvm-tools-nightly-powerpc64-unknown-linux-gnu.tar.xz": "c16a18aad32a5b435f76981aca1b4522eee7ca2692b2af8d023171cd6441d6e8",
+ "2023-10-05/llvm-tools-nightly-powerpc64le-unknown-linux-gnu.tar.gz": "40162cdefbe7131a7d04c58b29552344071d5b14c26977935830e86c8d59979e",
+ "2023-10-05/llvm-tools-nightly-powerpc64le-unknown-linux-gnu.tar.xz": "2659d3562b1424c5a5e9932aee87b1e0fdc2809d9723e6e3daf210f5e995686a",
+ "2023-10-05/llvm-tools-nightly-riscv64gc-unknown-linux-gnu.tar.gz": "4d7f0bf509c961ee541dc5bb50f18de8c34d5d94aeb81c38fb29489f8c84560f",
+ "2023-10-05/llvm-tools-nightly-riscv64gc-unknown-linux-gnu.tar.xz": "ed7157234f185970ff1bfea2e358657a93183e2ec313d8c48a57c04f9c52628f",
+ "2023-10-05/llvm-tools-nightly-s390x-unknown-linux-gnu.tar.gz": "4fe4ad3575c922ebf9af061f00a834ca5913ac104f6a09475481c4ec1b951d68",
+ "2023-10-05/llvm-tools-nightly-s390x-unknown-linux-gnu.tar.xz": "9c9cd88c884b204af26b223ec30cc4144c0a8baa2f79795ca06733482eb3b3ae",
+ "2023-10-05/llvm-tools-nightly-x86_64-apple-darwin.tar.gz": "ab5c2e7825f925f0789aa5fcfb99522e27e8c37f89ab11567a97c4243bc67dce",
+ "2023-10-05/llvm-tools-nightly-x86_64-apple-darwin.tar.xz": "79ced5684d7fc72e5ee0a177234841d26e5ec0f0d24e70dc89877431abb8d198",
+ "2023-10-05/llvm-tools-nightly-x86_64-pc-windows-gnu.tar.gz": "00e9e3253950441bd2657c402694e4d548fce135a6a301e3841a9e29c7f611f3",
+ "2023-10-05/llvm-tools-nightly-x86_64-pc-windows-gnu.tar.xz": "22a86f94da2b9cd04211a5949926c58cbaeb4b9b9dee51581a78a69e34a30d47",
+ "2023-10-05/llvm-tools-nightly-x86_64-pc-windows-msvc.tar.gz": "a649b6361d4bdd40deb1b294f73a47c277ff1e24eeeb647a2aa581356dc83c6f",
+ "2023-10-05/llvm-tools-nightly-x86_64-pc-windows-msvc.tar.xz": "467a04732d2dc9f414da86d29b9bcb4fe8ec7e3a6951acf49ae11b4788704f38",
+ "2023-10-05/llvm-tools-nightly-x86_64-unknown-freebsd.tar.gz": "87bde64328c440a6eb486ad09c1cdbd9ce546473313576e1060f73e878231eee",
+ "2023-10-05/llvm-tools-nightly-x86_64-unknown-freebsd.tar.xz": "1614e6a56bec5dc81bac6161b961f95d7bc7c163fd49c9f848c41749d9a310fb",
+ "2023-10-05/llvm-tools-nightly-x86_64-unknown-illumos.tar.gz": "c11ffc738113116fb0517c826ac2e03b424846b78731f1107510432f94f7d3e0",
+ "2023-10-05/llvm-tools-nightly-x86_64-unknown-illumos.tar.xz": "5d5e104cb515deb569117a05aea1d5c5288838cb669ba6dba2a082bea8a54766",
+ "2023-10-05/llvm-tools-nightly-x86_64-unknown-linux-gnu.tar.gz": "dae6b5c75fd003ebb35bf8a276046a7c81e7a02b09addb35d4ec2ba32cd19b00",
+ "2023-10-05/llvm-tools-nightly-x86_64-unknown-linux-gnu.tar.xz": "b601e958ed58e62d757443870b03c883ea1d90e887392a8e92a89abfc658f94e",
+ "2023-10-05/llvm-tools-nightly-x86_64-unknown-linux-musl.tar.gz": "c77d9c2c8e9c757c2c161f7108baa3f8428fee22b7e1f7cbf41519dfbac1526f",
+ "2023-10-05/llvm-tools-nightly-x86_64-unknown-linux-musl.tar.xz": "2647923c1f0358ed64cbdd5ace1dee54b4dae7f61a1d21ee9384c924c7ac7a24",
+ "2023-10-05/llvm-tools-nightly-x86_64-unknown-netbsd.tar.gz": "f63170f2c15aaba33431b8307a3fb68d59a8a33ecd3811d026cfe26490729002",
+ "2023-10-05/llvm-tools-nightly-x86_64-unknown-netbsd.tar.xz": "390c3daf3b0bac861f2e55347e007c1b6d981417098f42cd3ce04abb1fcdf5c2",
+ "2023-10-05/rust-nightly-aarch64-apple-darwin.tar.gz": "a5b6dbeca27d949d2fe8ab59391b360e7d8a8b1b922c5c46957da614b42caa78",
+ "2023-10-05/rust-nightly-aarch64-apple-darwin.tar.xz": "fbcacb9b660a487f5035d854b3d80bd5d658c68b98879d65e98db90986c9f17d",
+ "2023-10-05/rust-nightly-aarch64-pc-windows-msvc.tar.gz": "24b1c883ae4e9b317be14c22bc8bf4f4089736d118033282153ec40a099e5952",
+ "2023-10-05/rust-nightly-aarch64-pc-windows-msvc.tar.xz": "95fa9b30d9c0c0d8e67dad24f50e80f7688615f2c8bb6f3993614fda650edb3b",
+ "2023-10-05/rust-nightly-aarch64-unknown-linux-gnu.tar.gz": "b3dad307cb80b7d3499ad0924792d1cac075680b2ba0590521740b4fa7d78d7d",
+ "2023-10-05/rust-nightly-aarch64-unknown-linux-gnu.tar.xz": "df3277638223a8d0a3e3e415f808ad3738757cc9fe9d952d5c48d57d373a905e",
+ "2023-10-05/rust-nightly-aarch64-unknown-linux-musl.tar.gz": "ec9ed9eb79263e4203946447233c3bd58cbe67a6424239dcdf35f0537a0d3eee",
+ "2023-10-05/rust-nightly-aarch64-unknown-linux-musl.tar.xz": "9cc3049b304e1215414704be683d1712f7f0fed9f5125ab9fa7b97593ab06173",
+ "2023-10-05/rust-nightly-arm-unknown-linux-gnueabi.tar.gz": "09b3c2b210399fcf853cb1f5964c3cb2a6acc73a86181444f4c943e347f954df",
+ "2023-10-05/rust-nightly-arm-unknown-linux-gnueabi.tar.xz": "7b444199decb22cf2ed7b5ad48c1d34d2bea5312d9caa7fbe8d378a7ce57a14e",
+ "2023-10-05/rust-nightly-arm-unknown-linux-gnueabihf.tar.gz": "00f32b2d672dc71475495595411ab9f666e8ba0ffcdd202c183c9c162af68546",
+ "2023-10-05/rust-nightly-arm-unknown-linux-gnueabihf.tar.xz": "da84913692b0aed0aafc25b2daa244039d98d99197882701d0697cbaa3831fb4",
+ "2023-10-05/rust-nightly-armv7-unknown-linux-gnueabihf.tar.gz": "105a0d4e019ed81ce2fe22d43e63850cd67633e729582a413d16f3afabf03016",
+ "2023-10-05/rust-nightly-armv7-unknown-linux-gnueabihf.tar.xz": "ca38e835771536eccbe4b61d502b939a17337d43163124bb3c13cde5e7af9a39",
+ "2023-10-05/rust-nightly-i686-pc-windows-gnu.tar.gz": "2e2cf20279b732f09c77dd66d6d8ad6ea7e241aabdff7c359f0f2f980803e6d1",
+ "2023-10-05/rust-nightly-i686-pc-windows-gnu.tar.xz": "5ba35e68375feffbc7855c3d9937ab074754ec80eeee924632c859c857bb6bb2",
+ "2023-10-05/rust-nightly-i686-pc-windows-msvc.tar.gz": "af7ff1b4e4641507c5684cfa496e32c3cfd7fcd250b1a6849e7e2e8f0caa686b",
+ "2023-10-05/rust-nightly-i686-pc-windows-msvc.tar.xz": "255576effe3e33bcbb70ec7c214d1eeef78765b6e87f7180263d52ab74f16844",
+ "2023-10-05/rust-nightly-i686-unknown-linux-gnu.tar.gz": "8ef97d0b780894090017fad1a44ee6759fa5773fcdb26620bb338223ad1b3a12",
+ "2023-10-05/rust-nightly-i686-unknown-linux-gnu.tar.xz": "b367482c8b8934a2a454bbc8bf57a1bac79c2214376f9bff040377bf538b6dce",
+ "2023-10-05/rust-nightly-powerpc-unknown-linux-gnu.tar.gz": "c6122e6a735f3b859562488e9fcdeb1bd4a5f130d34607aff2df195f7853eb71",
+ "2023-10-05/rust-nightly-powerpc-unknown-linux-gnu.tar.xz": "cdf8119271f3e403ec1d2fe9816d58497fd3761056fec959e684ffca86339d7e",
+ "2023-10-05/rust-nightly-powerpc64-unknown-linux-gnu.tar.gz": "d79730bbcd253531d0dca69996a5ef4b04f602765849709a670afeffdb6ed37b",
+ "2023-10-05/rust-nightly-powerpc64-unknown-linux-gnu.tar.xz": "2a0f76c1874926ae901dacd786d7987695c9bf66b225401b50f0bf15ef6991d6",
+ "2023-10-05/rust-nightly-powerpc64le-unknown-linux-gnu.tar.gz": "123a1a357b21ed15636babcad5af862ddeab51c2a1b3b1756742466e3a7343a0",
+ "2023-10-05/rust-nightly-powerpc64le-unknown-linux-gnu.tar.xz": "a4bf21bdf13d945780d7f8b59962bc975b908e88078905dada93866ba9ebfb6d",
+ "2023-10-05/rust-nightly-riscv64gc-unknown-linux-gnu.tar.gz": "c898edbd1c2927ce2c54d35571606672101c88df9bb0134f337a9b2024d9d779",
+ "2023-10-05/rust-nightly-riscv64gc-unknown-linux-gnu.tar.xz": "09a12ed02094b308a4ce4d05a1670262cb8a4c90f1ee2aa4c2f42c31003749d5",
+ "2023-10-05/rust-nightly-s390x-unknown-linux-gnu.tar.gz": "1c4b8ad67a4a75c6522f414314775f0b746cd1dc78357050c5a3d5125d2e3482",
+ "2023-10-05/rust-nightly-s390x-unknown-linux-gnu.tar.xz": "4475e4d81a81575e720b7eff9954faf7e7886bd118dbe570057c7fab391c98d5",
+ "2023-10-05/rust-nightly-x86_64-apple-darwin.tar.gz": "25dcffbbc3aa8ee4af874b63d4df8fdd637c183ebf3c53779071798ebff3275a",
+ "2023-10-05/rust-nightly-x86_64-apple-darwin.tar.xz": "e5ebd31dfd46a132202d0f1d133895f9f0518e7b24a6bfb74ba7c5cd9b591b58",
+ "2023-10-05/rust-nightly-x86_64-pc-windows-gnu.tar.gz": "e42bd0363cb3755c8d5b430d75b0da4cc7ce53dbda1693173e116d4d36b40508",
+ "2023-10-05/rust-nightly-x86_64-pc-windows-gnu.tar.xz": "13b12fe88e55c233df03da0de697fefe705e9c3892a27d5e612b7be7c685a791",
+ "2023-10-05/rust-nightly-x86_64-pc-windows-msvc.tar.gz": "81eca788b0c8e708189abcf664b417bd2f82790ae9e4ad1f0a59ad12a9263e74",
+ "2023-10-05/rust-nightly-x86_64-pc-windows-msvc.tar.xz": "5a92445c3807cf02f7e5d5986541e7cdf6f37cdb95fdd0d46690de7693328f3d",
+ "2023-10-05/rust-nightly-x86_64-unknown-freebsd.tar.gz": "ee97da86063069de2fcdeea3d3485d072558faf4b691cbd8649cb8824aa51335",
+ "2023-10-05/rust-nightly-x86_64-unknown-freebsd.tar.xz": "af919b2a5fe5b9aaf437fc1848ada7443b681b7cc699911329e68b8e1301e736",
+ "2023-10-05/rust-nightly-x86_64-unknown-illumos.tar.gz": "0b99080a4f573cb482c2278d6884be1de26b5519e90bd84297f3c8d46cbda711",
+ "2023-10-05/rust-nightly-x86_64-unknown-illumos.tar.xz": "4b359a53e169509cc09b1601c88ae80d5e3de9919b11771bb0f4ee1db1177f35",
+ "2023-10-05/rust-nightly-x86_64-unknown-linux-gnu.tar.gz": "dd6e5971f4c12f64dfc6e5cb11250ee688ed26a29239aa6cd6de7d46bc0190f6",
+ "2023-10-05/rust-nightly-x86_64-unknown-linux-gnu.tar.xz": "1a3388a54c17b500c988f8d6fe336571c87c78c17b7c1594c401c118ae050962",
+ "2023-10-05/rust-nightly-x86_64-unknown-linux-musl.tar.gz": "7b6e759cd66170d19f6890162e0470c4c54b73c4aa191e33000533c7324c457e",
+ "2023-10-05/rust-nightly-x86_64-unknown-linux-musl.tar.xz": "c0ed7907df0979e5d23396f0e02f0b5409a7a1081c68c8b67a2da4374af336f0",
+ "2023-10-05/rust-nightly-x86_64-unknown-netbsd.tar.gz": "8a4150d57405bec3401ce59e15fbb8ec6431ca0b4bf15ab010264cc2b0babf5a",
+ "2023-10-05/rust-nightly-x86_64-unknown-netbsd.tar.xz": "a0aab9a1cab16ebc5f0db35e2edff94f0b23893a5f482df5053b76d5b424cc03",
+ "2023-10-05/rust-std-nightly-aarch64-apple-darwin.tar.gz": "ceaccd00bf461b1a6631fb1898a8cc5a8645d42ccf1b8b3fb44bcc8b53f0a5b2",
+ "2023-10-05/rust-std-nightly-aarch64-apple-darwin.tar.xz": "10be108ba7051f98272f9381149c721dd6012249e5db341932db005d2cd79528",
+ "2023-10-05/rust-std-nightly-aarch64-apple-ios-sim.tar.gz": "f6cd57c93f3f7400ef6ef3e33bc2f71a879e694835ed0f09ad9cfd09860eb9c9",
+ "2023-10-05/rust-std-nightly-aarch64-apple-ios-sim.tar.xz": "7e08e758cbf9b5eeb45746ded30fae0cbc7e5f91f4eede5ff451b2a582baf50c",
+ "2023-10-05/rust-std-nightly-aarch64-apple-ios.tar.gz": "6cab2b94341f503a0e6b91569fa79eca398ac9ad66ac6f3db6e7cdc0d7f0b322",
+ "2023-10-05/rust-std-nightly-aarch64-apple-ios.tar.xz": "8dd99074787276c052b40932ac1d367919e31d13a005448413ca38ecd573c738",
+ "2023-10-05/rust-std-nightly-aarch64-linux-android.tar.gz": "68ea7006b412118ff7af60f1bc316e127b4315fa511885a693ada240bbbec73e",
+ "2023-10-05/rust-std-nightly-aarch64-linux-android.tar.xz": "2cfecd8652a3c306b393e6d8524966333533805f8ea9e4dc9e7b86bac67ed80c",
+ "2023-10-05/rust-std-nightly-aarch64-pc-windows-msvc.tar.gz": "8649492e7f11f6b46d93fa3fe24a55fb91183d5836010c3740dd001114d595d7",
+ "2023-10-05/rust-std-nightly-aarch64-pc-windows-msvc.tar.xz": "f5cf904e4335b1e340dc8905d9b30dbfef8dc9bc9876081403810a08b4c70b5a",
+ "2023-10-05/rust-std-nightly-aarch64-unknown-fuchsia.tar.gz": "9fcf1b4999059e64830f3b391659e368e33cedd3cafd93630a52648f6a3e6063",
+ "2023-10-05/rust-std-nightly-aarch64-unknown-fuchsia.tar.xz": "53f064e77d000ef379dd424926c4e444f5e7221dbee6d88822fece93df1c6fff",
+ "2023-10-05/rust-std-nightly-aarch64-unknown-linux-gnu.tar.gz": "f784c9d0e30f3b423a2af70aff2d58a0f76ccf0f6880bc89716470755bcfbdf2",
+ "2023-10-05/rust-std-nightly-aarch64-unknown-linux-gnu.tar.xz": "d34a67a19f5e8394ff289caa9f4fafea619f5b484e8f2b830f20b1c3d5b0a527",
+ "2023-10-05/rust-std-nightly-aarch64-unknown-linux-musl.tar.gz": "c31182c41adc8f317284cd1ef055b787ec89a6c2497bc91377925d0a7997d99e",
+ "2023-10-05/rust-std-nightly-aarch64-unknown-linux-musl.tar.xz": "df9da83c20aa1b847cd274efadfbae4af70d86470b3f4f40febf0b4de3b27122",
+ "2023-10-05/rust-std-nightly-aarch64-unknown-none-softfloat.tar.gz": "40238fdd902c3bb9bc103a8f049a8c3e476b6488941395200f6edb056b01459f",
+ "2023-10-05/rust-std-nightly-aarch64-unknown-none-softfloat.tar.xz": "b262c344e972c0c87a989aa2e01de2eb3b60634fcd977199c84b03a8cbf628f0",
+ "2023-10-05/rust-std-nightly-aarch64-unknown-none.tar.gz": "07576585fae97a66b107d247f5e4fe3bcc19a4bfb4e132f8fcff895053a088fd",
+ "2023-10-05/rust-std-nightly-aarch64-unknown-none.tar.xz": "b5e5830287dc900204fda96fc9c22a6981a3a3e986bd8839474b9df3d0728d9a",
+ "2023-10-05/rust-std-nightly-aarch64-unknown-uefi.tar.gz": "4203db318a99b5f7364ffc983015193cc8b9ef952a689548c347c4ef6d8e7945",
+ "2023-10-05/rust-std-nightly-aarch64-unknown-uefi.tar.xz": "b511fce8b77817b3ef0aeef530f095a546aa6278d3229e2ec5bdc0ee85188aff",
+ "2023-10-05/rust-std-nightly-arm-linux-androideabi.tar.gz": "1537774a8abeff2dc5578f3ca8e7b7493d91c721c6b7c6c1372dd0a54a6b7843",
+ "2023-10-05/rust-std-nightly-arm-linux-androideabi.tar.xz": "997eb7d0cf3ba1bb6e1d4861b301b844df08a0faeaf794affc08b4677778aec0",
+ "2023-10-05/rust-std-nightly-arm-unknown-linux-gnueabi.tar.gz": "2a4fdd3a16a52bd0c368f28f9cd42b8bb7f666c0c2bb59f2e7109e5f5c815721",
+ "2023-10-05/rust-std-nightly-arm-unknown-linux-gnueabi.tar.xz": "69cada17dad33ce2e541fc8c846abbed4e13fcac466f9fdeab18e36d27068234",
+ "2023-10-05/rust-std-nightly-arm-unknown-linux-gnueabihf.tar.gz": "cc7685a29cb3435e3ad03fe4cfd961e9d6ec468a97c5e369a1095ad9aeb32f96",
+ "2023-10-05/rust-std-nightly-arm-unknown-linux-gnueabihf.tar.xz": "b20d927c6f1493130a1095df4246a887a9d5db770fab9bfa0db49e57e68a3286",
+ "2023-10-05/rust-std-nightly-arm-unknown-linux-musleabi.tar.gz": "bd7acf890d813cf78254242db13f2da89c939b71b7fddab7c1bd46941ea4b8f4",
+ "2023-10-05/rust-std-nightly-arm-unknown-linux-musleabi.tar.xz": "965e66b4b9df39495c26b45596de37ef1c8776162fbf0645aa519d37319188db",
+ "2023-10-05/rust-std-nightly-arm-unknown-linux-musleabihf.tar.gz": "9b6bfde157b7eb41c425efba2446251fa791ca885ebe6169f36ad4e7db9e7043",
+ "2023-10-05/rust-std-nightly-arm-unknown-linux-musleabihf.tar.xz": "6ef9024bd665f11d1136a2ea29a5cae4d1c435af21cccb64ddfec0da943e1f0f",
+ "2023-10-05/rust-std-nightly-armebv7r-none-eabi.tar.gz": "4169ebbdda4783df0d05b8d30f8c05b4f1ceb88fd6326602a199f35752b30668",
+ "2023-10-05/rust-std-nightly-armebv7r-none-eabi.tar.xz": "11b02a61042e0d500f8ac155c49ba03e0bfbc30f83b7856d7613670eab0bfaf0",
+ "2023-10-05/rust-std-nightly-armebv7r-none-eabihf.tar.gz": "704405345a7c3fb49252ce4dbd139c68914d74ec1b6366d14aecd86e99fa5efa",
+ "2023-10-05/rust-std-nightly-armebv7r-none-eabihf.tar.xz": "a0863a17008d53b3d150b691a4fc314b1ebb6e1e4c3773c1c5e90bb7914d5a76",
+ "2023-10-05/rust-std-nightly-armv5te-unknown-linux-gnueabi.tar.gz": "b5e568bb5ae88379f75e009ff61ca288fdc5bf53bab05963a37b47a34cb35dbe",
+ "2023-10-05/rust-std-nightly-armv5te-unknown-linux-gnueabi.tar.xz": "a7a3f6b4e1e3fc5ae7719777de84d630f9282da77b5924fc66978a345e32a676",
+ "2023-10-05/rust-std-nightly-armv5te-unknown-linux-musleabi.tar.gz": "72a6d0e54f93c1bc63f57103cf8130b60f16869231e33571b39ccadaa33566ab",
+ "2023-10-05/rust-std-nightly-armv5te-unknown-linux-musleabi.tar.xz": "9f18cfe7212ae3064c2ccf0291a3cd47ed6b4e25b56d521a6c5bd2dbcb1a9206",
+ "2023-10-05/rust-std-nightly-armv7-linux-androideabi.tar.gz": "0df4e91f7320bbf9a329ed6561b43b91f6ca8cbf4d445a543f1c7dca00745b85",
+ "2023-10-05/rust-std-nightly-armv7-linux-androideabi.tar.xz": "99c9e383f753872ab12215fbca2d2b9ce0eb1a0b2ede18f28a0d8230c2292d85",
+ "2023-10-05/rust-std-nightly-armv7-unknown-linux-gnueabi.tar.gz": "0db84b256dcc46ae088985ac7d37427aa39062f1e4f7669b4fdacb66b7c1c70d",
+ "2023-10-05/rust-std-nightly-armv7-unknown-linux-gnueabi.tar.xz": "08823218a39faa19c5bdf5c2bfdf360d33e393a6cde08f8287e97f83ee14670c",
+ "2023-10-05/rust-std-nightly-armv7-unknown-linux-gnueabihf.tar.gz": "52a6aa61f833c209c7cb72a632ebbc6b125825acae87fb75729bfd1cc8ea75e0",
+ "2023-10-05/rust-std-nightly-armv7-unknown-linux-gnueabihf.tar.xz": "8bea053e37f79ad1bcbcf254a836430e29eaec819f1123068ff2ea7f1821d05f",
+ "2023-10-05/rust-std-nightly-armv7-unknown-linux-musleabi.tar.gz": "0e67d33b0d3cee1ee98fe64e840b6281f598957e8c7306245dcaaccececc6acc",
+ "2023-10-05/rust-std-nightly-armv7-unknown-linux-musleabi.tar.xz": "dab2e445fd209e91e9a8a321e356ed098c3a4e12b5fb7ec580afc6b8db2d1afd",
+ "2023-10-05/rust-std-nightly-armv7-unknown-linux-musleabihf.tar.gz": "db332904518733a540a24bc74e3f84f46071598c0d299dfc11e91a17fdc60cf8",
+ "2023-10-05/rust-std-nightly-armv7-unknown-linux-musleabihf.tar.xz": "37c1527c59ef905ff399c541addf2132cbd5bf55eff1116ecdb947e78b390dc4",
+ "2023-10-05/rust-std-nightly-armv7a-none-eabi.tar.gz": "140999cb6d37b1533d17f756dcbdb6df2f13b663f00a7e516049ede17de68e4c",
+ "2023-10-05/rust-std-nightly-armv7a-none-eabi.tar.xz": "940a54649064cbc7d32b56a93e8916f30ee36f4d77a257e130924a739b56547f",
+ "2023-10-05/rust-std-nightly-armv7r-none-eabi.tar.gz": "aad302c9c47633bc2cf9d6f018a69a8c25d4ae863aee3817ce5ddb488502123e",
+ "2023-10-05/rust-std-nightly-armv7r-none-eabi.tar.xz": "49a095f2458c703d2fd3a4b1625eaae821b231818c3b77ba4222cddc82539be2",
+ "2023-10-05/rust-std-nightly-armv7r-none-eabihf.tar.gz": "510200940967a9bdc0aefa4fe1cb4d7b3560a46508d946d0c360312cd8c598f9",
+ "2023-10-05/rust-std-nightly-armv7r-none-eabihf.tar.xz": "fd7cdc3c3f44ab57dfb25faec08429d10c0de5ce2227d58e2e7c84d514e19cd4",
+ "2023-10-05/rust-std-nightly-asmjs-unknown-emscripten.tar.gz": "09b28a830c5180502eeba337b5d4390e8e6216e0fa339be4d40c64323a53b777",
+ "2023-10-05/rust-std-nightly-asmjs-unknown-emscripten.tar.xz": "f1e875007917792eddcf83176e592aa8490d8d7e6ba541ce76cdbf0f24b46200",
+ "2023-10-05/rust-std-nightly-i586-pc-windows-msvc.tar.gz": "9628ce85ad0d6a804fb64580038fde2c194ca9deadfa0143a46f1ab8db79eba7",
+ "2023-10-05/rust-std-nightly-i586-pc-windows-msvc.tar.xz": "3a2a6994168c91b473c95237304be2660935471a5ffee657e185c689f745648f",
+ "2023-10-05/rust-std-nightly-i586-unknown-linux-gnu.tar.gz": "41a5cdd125054c4724358c1ceab3d37e78f7ac677f5de4f1f744cf76da607ff7",
+ "2023-10-05/rust-std-nightly-i586-unknown-linux-gnu.tar.xz": "9fb4bbd7addfa4c0f27d45eb9a427431966b8173a85d66d2054f69af3913c6c2",
+ "2023-10-05/rust-std-nightly-i586-unknown-linux-musl.tar.gz": "91a41d09612d09648402b66419047e2e65cade33ffbd03dcbdcde72d160c7534",
+ "2023-10-05/rust-std-nightly-i586-unknown-linux-musl.tar.xz": "c99fedb63f7bab19129a838fd9fe9c3bbb78151b5ff769722688e413c6d36987",
+ "2023-10-05/rust-std-nightly-i686-linux-android.tar.gz": "238ff444bda373963547aa9ca2b6e8fe46433ec87ae95996c3fa58cf5861ddca",
+ "2023-10-05/rust-std-nightly-i686-linux-android.tar.xz": "0244c69ec0e08bf670a60cd656fb6eaed978b3d4dd06f7cfb1b08f88c8500695",
+ "2023-10-05/rust-std-nightly-i686-pc-windows-gnu.tar.gz": "824a03d09a3093cf8cb2a2ee37e9fbd4fc25152cab911df0acbe7c89b21bbd7a",
+ "2023-10-05/rust-std-nightly-i686-pc-windows-gnu.tar.xz": "b2ae8e5c60016d6710d405f0dd663f29b834fe292c4e87ac501379da19f40eb1",
+ "2023-10-05/rust-std-nightly-i686-pc-windows-msvc.tar.gz": "f69283f086940947cd617b58745f65e6ae1269e73f4fae7cc4cf5ba5b926b3ce",
+ "2023-10-05/rust-std-nightly-i686-pc-windows-msvc.tar.xz": "7e268db5b1d0282c4129caffc61e6377332891a8ce0671e0ec73e08e656d58c8",
+ "2023-10-05/rust-std-nightly-i686-unknown-freebsd.tar.gz": "e545f440cdc87b9716337c551de450ffe2a00ddbe1af929d0cc54bc7b1d9692a",
+ "2023-10-05/rust-std-nightly-i686-unknown-freebsd.tar.xz": "4bd05d0d4c2cca4216eefb0221f477deab19fa2aad299ce33a9d1710eb4ab51b",
+ "2023-10-05/rust-std-nightly-i686-unknown-linux-gnu.tar.gz": "969c20422795254403692bf11ba6991353da823097c6cd9c22fe7f5796266d81",
+ "2023-10-05/rust-std-nightly-i686-unknown-linux-gnu.tar.xz": "f9a97c8f87dc85138071e4bc7ebc2031d5777c20fab88510726b0eb7d889c08a",
+ "2023-10-05/rust-std-nightly-i686-unknown-linux-musl.tar.gz": "cd6aa2864305308917afbcd82cd5aa4110fd7492cffcaf5ffff5120f9e9e7bbb",
+ "2023-10-05/rust-std-nightly-i686-unknown-linux-musl.tar.xz": "6adbc1ea5adbf9895b458dd2ffefbfb15095fb5d24f831d40ae0dbd1a7cc3556",
+ "2023-10-05/rust-std-nightly-i686-unknown-uefi.tar.gz": "5f2829c079c065baa2f7b4987c1e6db382f1785d13e6555eb62094c645a10d78",
+ "2023-10-05/rust-std-nightly-i686-unknown-uefi.tar.xz": "06a534a7b5b7a87a57a503e40d7c02d5e86cd9077ceb7c040e405cb39623f804",
+ "2023-10-05/rust-std-nightly-mips-unknown-linux-musl.tar.gz": "a9f3bce6b02f5976bdb1c6778a1d1d19620192b4d7cf1c9ad145aabea204aced",
+ "2023-10-05/rust-std-nightly-mips-unknown-linux-musl.tar.xz": "bb94fad4569ff133c2590bbd37ee967719f1f878dddb1c8d98a7e9a5a34701be",
+ "2023-10-05/rust-std-nightly-mips64-unknown-linux-muslabi64.tar.gz": "212f20c20c55a15a741fa7851c6d44c367709f1df23789e68d4d963fa49a1585",
+ "2023-10-05/rust-std-nightly-mips64-unknown-linux-muslabi64.tar.xz": "3fc15f48473fd46c3619cc543230c0cf6cbd2d0bcffdf39dae94034a4a4c8d2f",
+ "2023-10-05/rust-std-nightly-mips64el-unknown-linux-muslabi64.tar.gz": "dac3a2306a07a76593386a5eb23d209301134ef6ea3541b30225c5bec1c98d9a",
+ "2023-10-05/rust-std-nightly-mips64el-unknown-linux-muslabi64.tar.xz": "a82b1c4bbba37f7963b11e5443847cfbb79711018067fc47031b9e1fbd499205",
+ "2023-10-05/rust-std-nightly-mipsel-unknown-linux-musl.tar.gz": "156086988b179f84af3fe83e43bb530ed7526ffa790770e1e4ecdf508caf7185",
+ "2023-10-05/rust-std-nightly-mipsel-unknown-linux-musl.tar.xz": "fe98ed87bd578efd141cf9b739b244392af26deb24e42dda4968096f762ef85a",
+ "2023-10-05/rust-std-nightly-nvptx64-nvidia-cuda.tar.gz": "9a3ed9f54d6b806e228922be29a86f08437a99582c2ea083e4c46b3b59117fa0",
+ "2023-10-05/rust-std-nightly-nvptx64-nvidia-cuda.tar.xz": "5389075c9a5b6709100dc62b2aa265fbf785a555246afa28ce6d7e29952206ca",
+ "2023-10-05/rust-std-nightly-powerpc-unknown-linux-gnu.tar.gz": "ce1aa91906e0f0b1b712afae6332db438228c5a42eebbefe3a8b5dd70bc0244c",
+ "2023-10-05/rust-std-nightly-powerpc-unknown-linux-gnu.tar.xz": "fbffb3137ffa7667a1831713ac897b0f743285264037584d62b3ba57f65257bb",
+ "2023-10-05/rust-std-nightly-powerpc64-unknown-linux-gnu.tar.gz": "d6eddad97746f01ac65cc0ac402d91846e385e40be3a1de683e73541dbd203be",
+ "2023-10-05/rust-std-nightly-powerpc64-unknown-linux-gnu.tar.xz": "daf95077505153ce57f536854dbbd2515294a1af027cc726fcfcd63f611ac2bd",
+ "2023-10-05/rust-std-nightly-powerpc64le-unknown-linux-gnu.tar.gz": "7b3ca6a6a4627621c633834675b2ddf5209196fc9a30f7d40cef62f257dfe1b7",
+ "2023-10-05/rust-std-nightly-powerpc64le-unknown-linux-gnu.tar.xz": "d885b754d20e378612a776a946dcc09d29b0d84f9623d3e603e04c9e247707e0",
+ "2023-10-05/rust-std-nightly-riscv32i-unknown-none-elf.tar.gz": "3c3d626ba7e189ad74d97679197455a044c889bd2e5d1e4a76a67cba861ffb25",
+ "2023-10-05/rust-std-nightly-riscv32i-unknown-none-elf.tar.xz": "424cbe78250af5827780eeb0322f9e12a3c895221afcfdb56f18190aa8be7529",
+ "2023-10-05/rust-std-nightly-riscv32imac-unknown-none-elf.tar.gz": "bbf6b35221e75b0359faa13452e1b3dfa8bae96bbd380543dce5adcc75cefe91",
+ "2023-10-05/rust-std-nightly-riscv32imac-unknown-none-elf.tar.xz": "1b84dfff15352cb9e4a5cb76d92de49df8fb833b1f7b74736aa15687ce301ce1",
+ "2023-10-05/rust-std-nightly-riscv32imc-unknown-none-elf.tar.gz": "e70e1a969a0e050a333e2410aaa0f7237b3aaa82c01f18c95c0d45142db9f6de",
+ "2023-10-05/rust-std-nightly-riscv32imc-unknown-none-elf.tar.xz": "c5f5583dff3159aec70f9a75018c6e84ebb575810edd353602828513d4790f3f",
+ "2023-10-05/rust-std-nightly-riscv64gc-unknown-linux-gnu.tar.gz": "d4d540cb15bcd357e770c55992a9fdb8c2c709b7e9c28f469de372ef6bf4814e",
+ "2023-10-05/rust-std-nightly-riscv64gc-unknown-linux-gnu.tar.xz": "770b3bbc4df0539739717587e6d47681fe90311e6576e018f83d2cfb1760d426",
+ "2023-10-05/rust-std-nightly-riscv64gc-unknown-none-elf.tar.gz": "a8592ca07091fc07fd916f3cb5d5ee6dbe320b67e118e042322dee3530580893",
+ "2023-10-05/rust-std-nightly-riscv64gc-unknown-none-elf.tar.xz": "6bf72d282fbacae3f0d86a28da60d154c3f31cee489fba82bb3c511fc81d354c",
+ "2023-10-05/rust-std-nightly-riscv64imac-unknown-none-elf.tar.gz": "6a20d798fe2470d4beca35a6e18c55dfcb4d555e2470dcf3547b8dd217549513",
+ "2023-10-05/rust-std-nightly-riscv64imac-unknown-none-elf.tar.xz": "e120c36d5e6bb3d0e1da5778b1038ed30c3b08417bdbf83f47f34b61752e8256",
+ "2023-10-05/rust-std-nightly-s390x-unknown-linux-gnu.tar.gz": "639fa9522daf21501f81fd654c6223186c6f3ce035980e341881a9631e52b8a2",
+ "2023-10-05/rust-std-nightly-s390x-unknown-linux-gnu.tar.xz": "24a413fa781618c9f910d99562bd11afaa7252d24415c0528c6a1bfb51a71153",
+ "2023-10-05/rust-std-nightly-sparc64-unknown-linux-gnu.tar.gz": "e3684b65043eaadf8ba056c60afc399922750e5b526fdeb4ee8ea4cdd315c1e1",
+ "2023-10-05/rust-std-nightly-sparc64-unknown-linux-gnu.tar.xz": "8ff03469229ecf60bef48e0846be7fac1c074458bca319dfd7a43d3ba1d11e1e",
+ "2023-10-05/rust-std-nightly-sparcv9-sun-solaris.tar.gz": "f2cfa28565b7587cc1620b9e032e808b37221adc6998fb1fa03d47930b7e77fe",
+ "2023-10-05/rust-std-nightly-sparcv9-sun-solaris.tar.xz": "82d81abd944e3b2052e78fb4bf76d57e2c9ddeea8d2f0de95429c601fc2a09e0",
+ "2023-10-05/rust-std-nightly-thumbv6m-none-eabi.tar.gz": "9e6d8e3609a85dee9a4dddb20c4b0c9c931bc9535a8d1c25d7c6ba944f1f96a8",
+ "2023-10-05/rust-std-nightly-thumbv6m-none-eabi.tar.xz": "dcb3b541a4956c97a1b7d5c9747468d0d5fcb7572ac3b1de68a4f028188d37e9",
+ "2023-10-05/rust-std-nightly-thumbv7em-none-eabi.tar.gz": "46a9de0e98e2092a14819c3b4373418116c6e8a3810f304292f131612015a225",
+ "2023-10-05/rust-std-nightly-thumbv7em-none-eabi.tar.xz": "536a3a9a40eb2b30e52c64d29d495ba11fd9b8442d7b10ba248b173864b09c85",
+ "2023-10-05/rust-std-nightly-thumbv7em-none-eabihf.tar.gz": "2350507cb389b7a6bd9593536d0aeab1732d9f56ce03566bcab67ccaf693bbae",
+ "2023-10-05/rust-std-nightly-thumbv7em-none-eabihf.tar.xz": "2813f9c435ffc2126a28ff8010ff3a16eb983244a2494074b17bcaf33f9c61e4",
+ "2023-10-05/rust-std-nightly-thumbv7m-none-eabi.tar.gz": "e6e19db8d4ea0f4128e56d11c3a28c912612409d53baff800ce8b0aebede5c1e",
+ "2023-10-05/rust-std-nightly-thumbv7m-none-eabi.tar.xz": "17a268d2d37f71777c04185b25c9cb82acd8d8fe64cfc1679f326afb9f3fb674",
+ "2023-10-05/rust-std-nightly-thumbv7neon-linux-androideabi.tar.gz": "662e8c9137f6b707ee070cd7de174a1bba73ad538bc28eeb62c0d98a0a77a575",
+ "2023-10-05/rust-std-nightly-thumbv7neon-linux-androideabi.tar.xz": "e8ad7236fed306baeade441c99435c4b05a84889481491c70b6d042de6183d04",
+ "2023-10-05/rust-std-nightly-thumbv7neon-unknown-linux-gnueabihf.tar.gz": "138cb031de20d0ffb9b68b676fa0b935aefda0f7c8eb426eb1acf84d8145ce71",
+ "2023-10-05/rust-std-nightly-thumbv7neon-unknown-linux-gnueabihf.tar.xz": "dae074d3b0bb82176b888bbc8c65b2323c06a47790b71613a43472c034b8cda9",
+ "2023-10-05/rust-std-nightly-thumbv8m.base-none-eabi.tar.gz": "0fa71f7daf9157d8632fdced00c9ced54bf7329edffa5934f8adcfdd03696d42",
+ "2023-10-05/rust-std-nightly-thumbv8m.base-none-eabi.tar.xz": "2d013ea4a14f8495fd6953efa35e9dcd97b86c73edfa512d3bcfdc0052296b99",
+ "2023-10-05/rust-std-nightly-thumbv8m.main-none-eabi.tar.gz": "e617934abf04dbc8842424fddc5ab9816115ac540df0f3fc1a9dec56b9594402",
+ "2023-10-05/rust-std-nightly-thumbv8m.main-none-eabi.tar.xz": "f680cd635669863c82a9d583122ed0ea281a0927946224c8261f07e92518ef25",
+ "2023-10-05/rust-std-nightly-thumbv8m.main-none-eabihf.tar.gz": "e9d2a0ef6aa00fb0f7f90f8648e5169709bd52a5bb87175796124781332b6b02",
+ "2023-10-05/rust-std-nightly-thumbv8m.main-none-eabihf.tar.xz": "6f57b1f31fd75a699433d92fa798ee541bed42a6a1d2ed7128a890f3ab601c2f",
+ "2023-10-05/rust-std-nightly-wasm32-unknown-emscripten.tar.gz": "61f245a5a6aaff0a81f90bbf5495f24057072b138c24ae157dd36b881831eeaf",
+ "2023-10-05/rust-std-nightly-wasm32-unknown-emscripten.tar.xz": "dd5269eb8ad092fd9994c35d2629fb799661385133b13621ec6ac68402888e6e",
+ "2023-10-05/rust-std-nightly-wasm32-unknown-unknown.tar.gz": "2c9b75c91897030849fd77adf54e8487704d0d1a0ad4c552da1f045766b00b6c",
+ "2023-10-05/rust-std-nightly-wasm32-unknown-unknown.tar.xz": "1fdd9a3a85e97a864f343c422291c7fa87bd2c89beaef83f7db37b65b2828c0e",
+ "2023-10-05/rust-std-nightly-wasm32-wasi.tar.gz": "63342c048b0d6e31ff85fd6b1215783268a7d7801aa253125a0fd0a8d56db63c",
+ "2023-10-05/rust-std-nightly-wasm32-wasi.tar.xz": "de2ab98bb071439493ab388f32ce9357135cd5dc62c298ca3696b5e26cc9d55b",
+ "2023-10-05/rust-std-nightly-x86_64-apple-darwin.tar.gz": "ba5a362b09cb856365c4732910fd351148e4b39272ef56a012b6534e177b5d0c",
+ "2023-10-05/rust-std-nightly-x86_64-apple-darwin.tar.xz": "41372fd6a35893f3af0f83aebf026ea03d0e4c297da3a09930e181f8c14fa130",
+ "2023-10-05/rust-std-nightly-x86_64-apple-ios.tar.gz": "77af1f8dbd419adae63db462691b08ec042efbe26e96826cb92b1fc34e8787e2",
+ "2023-10-05/rust-std-nightly-x86_64-apple-ios.tar.xz": "9eecb1383560110d44c4502c46f0f20c980f9aab7c790a77e4ebaa4da27954fa",
+ "2023-10-05/rust-std-nightly-x86_64-fortanix-unknown-sgx.tar.gz": "f069eb00e298f26e44a21a44378700d9f4c2e92280bc9241b444a1984fb092b1",
+ "2023-10-05/rust-std-nightly-x86_64-fortanix-unknown-sgx.tar.xz": "c9da74f7ea1a2c5ff8d3dee500b821b2def765aa5947596c4dbe775bd4a6d2e5",
+ "2023-10-05/rust-std-nightly-x86_64-linux-android.tar.gz": "0683e7079a7265e9ca27e08022c8f3bdba562976c3eee5e595cabcb6e9a5f764",
+ "2023-10-05/rust-std-nightly-x86_64-linux-android.tar.xz": "aa3bbf7f1879c99a7e423cb43d7647d5e9dca3a5f7e3640bbad1b4718dd8e7ba",
+ "2023-10-05/rust-std-nightly-x86_64-pc-solaris.tar.gz": "03a9984ef3f375c83f726bf41457684898b5ac07be18e0bfc9ee3b893f7068bf",
+ "2023-10-05/rust-std-nightly-x86_64-pc-solaris.tar.xz": "8f0da6638ecfdae7ab090d3360c4804098f5b7380aadb4b24e57ab4ac1989bab",
+ "2023-10-05/rust-std-nightly-x86_64-pc-windows-gnu.tar.gz": "c2f2ec2216991720e5278f5e7be01b51a26ad751b2be0d90d9cc753df5fe15d4",
+ "2023-10-05/rust-std-nightly-x86_64-pc-windows-gnu.tar.xz": "9cddbbbacb24888fcf6f941491b3ade7170fb121063f1100e6b23e122857476c",
+ "2023-10-05/rust-std-nightly-x86_64-pc-windows-msvc.tar.gz": "8b69ad4944324b9ed722944fc45ef20736aacb202040208fc99b5ad3c88b52cb",
+ "2023-10-05/rust-std-nightly-x86_64-pc-windows-msvc.tar.xz": "0ab9e0c16e7d7cb3da9613107844b22e493a5e7fde10c61de68a58d0d5f20c98",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-freebsd.tar.gz": "8aafc949561f50fe3131b185212cda62f4d3621745b2f1f8830f2b6c000c045f",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-freebsd.tar.xz": "bab90d85ab1181508bb8a60c17815b8941773618e022bd61eac068838b99ac9b",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-fuchsia.tar.gz": "ef91a50723df53fd5b938e878b737290633119aed987a3544eadf137acf4edd1",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-fuchsia.tar.xz": "10dffbefcbcee25628ef0095c432494dc6b8c930071e9dc29629852df7e64148",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-illumos.tar.gz": "eaa868d6ce4b2aa5fe1c372396e248447d39fb56d68a732ece7557919f29d0ba",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-illumos.tar.xz": "c48ce87b48ba28874ec22315345fb17b376bdeab8ff610d8101ae1a27b2a7230",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-linux-gnu.tar.gz": "8360b585d280ff8adb6087a309f5b3bb28b0b594277b014d1dd5e093a321e10b",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-linux-gnu.tar.xz": "be85438caf0ee05d96cfdb7b4e5d0ff788881e26b29dff72d3952c815cec9c46",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-linux-gnux32.tar.gz": "e2b890e4ab0c8548c23ff3c271acbb6b1b6b4ece990b0a2a488e986fe46eb810",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-linux-gnux32.tar.xz": "f6363224a4a97d317387005733aa6f9a9bb5c7e084827e20211683c7ede4dbdb",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-linux-musl.tar.gz": "72d5873c9fb305b18ece26bf4c7bf8f6cb80b4c7baf8904fe74d0b556b464db5",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-linux-musl.tar.xz": "81abdafbc0bb274190560fb5fc9b7adc333e4d23a1b187285977ddb88a771ac6",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-netbsd.tar.gz": "ac8b29e17c4d65a9e191d8f7ab12791d73c2979ef37c6bbea6a8b9ceb9dd11f8",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-netbsd.tar.xz": "b283e18006552356fe8cf227b818921bbbca57087a0ea35de7dd2249a853aca3",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-none.tar.gz": "cc138addd504cad6520c1e25fb91b6fc76ee5b52187a58cc2a49db76455b730a",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-none.tar.xz": "70af886b44fe485b1a1596a13dcf1237bec27887b9204f5621f2368e4162de87",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-redox.tar.gz": "21b496dc73bd3652e822308a9b21d5f76508bddc3e97cf514e5c6c1ac39d0683",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-redox.tar.xz": "c15040e40aeb7ed900d3548ffffcb05ac5f6ee345eb28a4b37f9eb2f0135293a",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-uefi.tar.gz": "9ae4a929f52ce8e70025b758cd168407acc0c77f2724c3df05c690f7126f3c50",
+ "2023-10-05/rust-std-nightly-x86_64-unknown-uefi.tar.xz": "182fb8bb0c39e146a957ab6998df7e7fb83163be46c638d1258dd20e0b591dc3",
+ "2023-10-05/rustc-nightly-aarch64-apple-darwin.tar.gz": "7e0186547d5991db5dcac5187a6cb478ed74b3dd20fcfda90c69ec554d283dee",
+ "2023-10-05/rustc-nightly-aarch64-apple-darwin.tar.xz": "ad8284dfccbfc9f98e9075aa7d721963e26899639f4a68eca7a01465ebe64395",
+ "2023-10-05/rustc-nightly-aarch64-pc-windows-msvc.tar.gz": "08912ecd25b371ab520f8b2c8de30f5f754d095fe843642e56e2dbf11562b196",
+ "2023-10-05/rustc-nightly-aarch64-pc-windows-msvc.tar.xz": "753f38bf822b0a223df76e59917037ec7bbd937919af1063859b76ff14949852",
+ "2023-10-05/rustc-nightly-aarch64-unknown-linux-gnu.tar.gz": "7ecf83eac14100dd8e889f364d0cc17e3623fb667e0f2b75ba1f0b3c19c99b4b",
+ "2023-10-05/rustc-nightly-aarch64-unknown-linux-gnu.tar.xz": "2c4abc42c625387fe27c13ad8ae09130b9188e5a432d58c60c07fa0c5c4d4fbb",
+ "2023-10-05/rustc-nightly-aarch64-unknown-linux-musl.tar.gz": "6e0a844dfdffd5906b243fe5bbeeeb04b51d6fb066a04fae70b114284e327ad8",
+ "2023-10-05/rustc-nightly-aarch64-unknown-linux-musl.tar.xz": "4bd1117817ba94b55b4c0437ad42c2e787e2d2c9ad1d4c71725a766f44d4e7b5",
+ "2023-10-05/rustc-nightly-arm-unknown-linux-gnueabi.tar.gz": "bbee42ae02ce947c93a5d49c55c3556d0b69f917eea26e003635fcce7ac28d9d",
+ "2023-10-05/rustc-nightly-arm-unknown-linux-gnueabi.tar.xz": "5be5312d59eaf38b0cdce1a61a0766fd2b75ca189c01a47f26050bdea387ef10",
+ "2023-10-05/rustc-nightly-arm-unknown-linux-gnueabihf.tar.gz": "b02e3d444485441284e5d7cd39cd32c8801805557c88e5e9fcd95edd824252f7",
+ "2023-10-05/rustc-nightly-arm-unknown-linux-gnueabihf.tar.xz": "76398b1bfc8db073892217ec279c069c2c13de7145d3f8257af6f27560582fee",
+ "2023-10-05/rustc-nightly-armv7-unknown-linux-gnueabihf.tar.gz": "2badb2e33506c02feb395f23b02860070433906835bf10b0bad7956c5a28458e",
+ "2023-10-05/rustc-nightly-armv7-unknown-linux-gnueabihf.tar.xz": "52834b95489992ccab910d6595818f9ae32d4c98c4383dd44823475270cdacc1",
+ "2023-10-05/rustc-nightly-i686-pc-windows-gnu.tar.gz": "42debe991ca9740e981ef8981297346a757b0bc9db068f78663a488687cc9940",
+ "2023-10-05/rustc-nightly-i686-pc-windows-gnu.tar.xz": "374160c45286e5042e413eb7da84664026e20f9572563bd58a5c2671578bc6ed",
+ "2023-10-05/rustc-nightly-i686-pc-windows-msvc.tar.gz": "3f20500a33ff23e2e6ed42152e5960d6367e42558ea69a0fb069f0153570ff2f",
+ "2023-10-05/rustc-nightly-i686-pc-windows-msvc.tar.xz": "50b55fbdd39fbb837411b21a6ebb565cf5218fa21d4adbfe5311ab2c8b10c47e",
+ "2023-10-05/rustc-nightly-i686-unknown-linux-gnu.tar.gz": "6d6fad8877319b21535e077f06c21ce8ffb82337c451219a12181639ea9a379d",
+ "2023-10-05/rustc-nightly-i686-unknown-linux-gnu.tar.xz": "900ed7e077a4947ddbc9f68cbe1c46be4093394a84889cb470390eb538573109",
+ "2023-10-05/rustc-nightly-powerpc-unknown-linux-gnu.tar.gz": "0b5aaa35e8acb2fda0b931012df3f3577bdf8efb06d6242b3d634142481e0360",
+ "2023-10-05/rustc-nightly-powerpc-unknown-linux-gnu.tar.xz": "4be9e74ba6638365d039e9eb3d039c241533ccc7fe1d40004905ff92fe2b7fb7",
+ "2023-10-05/rustc-nightly-powerpc64-unknown-linux-gnu.tar.gz": "227d3088e88435b37e8fdb10298f55c6f17e9dc68d8430035f6318815db1b880",
+ "2023-10-05/rustc-nightly-powerpc64-unknown-linux-gnu.tar.xz": "0803832911ff69d3f7e0a8f4d270653827c1087640d3a33a96bf349f132e408d",
+ "2023-10-05/rustc-nightly-powerpc64le-unknown-linux-gnu.tar.gz": "56d2cce53f81c7e3f0a9c3f9dbdf9808d56d640dc3fcbe20220c0750ecd5fa97",
+ "2023-10-05/rustc-nightly-powerpc64le-unknown-linux-gnu.tar.xz": "6f5c02c686829be08e0425c523342ccb8e2b1db65dea7a7767a82e59ca149dd0",
+ "2023-10-05/rustc-nightly-riscv64gc-unknown-linux-gnu.tar.gz": "8920488d474a2ceb1d4de4ee26c38d7c5b9e6d208ecc64d844d0f952a980b895",
+ "2023-10-05/rustc-nightly-riscv64gc-unknown-linux-gnu.tar.xz": "49097944e7cfa291387b6c6125ddb933b6d686a24935f62740a586e9a218b332",
+ "2023-10-05/rustc-nightly-s390x-unknown-linux-gnu.tar.gz": "6113e37a8474b6998cfc0ff71e7f8fa8e0877efacd0b16cd4baf99be66392312",
+ "2023-10-05/rustc-nightly-s390x-unknown-linux-gnu.tar.xz": "10aba0221d0064009feedfaa12d647eed3cc6909e433c9136721cd2c8fe0c1de",
+ "2023-10-05/rustc-nightly-x86_64-apple-darwin.tar.gz": "69d30ae203300a610b569796bf68ddd5a9eff0d18671d8889f9bf0ed42cb5e4a",
+ "2023-10-05/rustc-nightly-x86_64-apple-darwin.tar.xz": "50e76c6da48559b0abb4f94b468028aec39fe3331424c14f195a8786267659d3",
+ "2023-10-05/rustc-nightly-x86_64-pc-windows-gnu.tar.gz": "6e71f78ac26e0bd031207f51b8a2d46b30c531608cf76c923f5d98b4150ab316",
+ "2023-10-05/rustc-nightly-x86_64-pc-windows-gnu.tar.xz": "2a848f62332f540a0bd587e93d0a57dd540926ce5b085c4d79d2797be4042fa1",
+ "2023-10-05/rustc-nightly-x86_64-pc-windows-msvc.tar.gz": "fbfe8a60b78faa873f81bbe368a4f2dc4609f55960c64d97c63c0f2ea66b8900",
+ "2023-10-05/rustc-nightly-x86_64-pc-windows-msvc.tar.xz": "2c2a4e39f71cdf24b2b4bd35f7b861c1774568781d8f278949b2ea43771fb5cc",
+ "2023-10-05/rustc-nightly-x86_64-unknown-freebsd.tar.gz": "6efd84cbe2069ebe92d612ad8c1942cda029a3e0a37970e397f34eeca1812cd7",
+ "2023-10-05/rustc-nightly-x86_64-unknown-freebsd.tar.xz": "ae8e17a5f79ca94e564cc0bb47a0262aac8a12dc38d0c815b6c86e61c4568adf",
+ "2023-10-05/rustc-nightly-x86_64-unknown-illumos.tar.gz": "843c3834efdd44652994ad1a5adb5eed32ce730e42bf0b18e27594ac430ea082",
+ "2023-10-05/rustc-nightly-x86_64-unknown-illumos.tar.xz": "4fcf297f81905132483cc6c93f203493819dcb570a656cda7bd3c17c7562ae8a",
+ "2023-10-05/rustc-nightly-x86_64-unknown-linux-gnu.tar.gz": "a16de679c8f9c564afa61f34cd758d5b26b01aafaa18130020887d6c6971f994",
+ "2023-10-05/rustc-nightly-x86_64-unknown-linux-gnu.tar.xz": "9b9c6dd8b66aad41f89be62a53df2a4e6a024234b51fb9b478b8ae75f6bed3f5",
+ "2023-10-05/rustc-nightly-x86_64-unknown-linux-musl.tar.gz": "287ef1c286b197d7e569e39f86c7b3f1551d39e35a1612475176a49fc6411fdd",
+ "2023-10-05/rustc-nightly-x86_64-unknown-linux-musl.tar.xz": "e335acccafa993a0b47946ec6a016e53ed295bf0d49bbfd3872f560856c948b2",
+ "2023-10-05/rustc-nightly-x86_64-unknown-netbsd.tar.gz": "763398ae8eda2e42907de94e118bb4bed676be141f341dd702146b4ada0f1e73",
+ "2023-10-05/rustc-nightly-x86_64-unknown-netbsd.tar.xz": "4342c2210e4a95cdadbd6356f4c9ed4a1eac64acf0d69f8b09c19d7737b76097",
+ "2023-10-05/rustfmt-nightly-aarch64-apple-darwin.tar.gz": "fcbd66e87c9d4dbc8a1d3fdd5f57d9bdbdc6b79ae3a0cb50d543bdb13a53c876",
+ "2023-10-05/rustfmt-nightly-aarch64-apple-darwin.tar.xz": "4e54b80654aeaabb24d3262ceb34a0571c579f6296d6cbdcda0cf240c4520a85",
+ "2023-10-05/rustfmt-nightly-aarch64-pc-windows-msvc.tar.gz": "fd56411390c19cbf1c1761f7ff3a4076cb0476157eff65414373bde027dfeb3f",
+ "2023-10-05/rustfmt-nightly-aarch64-pc-windows-msvc.tar.xz": "10b37387b9adbe727bdb5133fbf55c5d205da104d835fa9ff8163e011ca2e50d",
+ "2023-10-05/rustfmt-nightly-aarch64-unknown-linux-gnu.tar.gz": "c6f3814c08b7cac5d1cae16d264ff7cb105f18dcdc9bb319b1b3b951b9e78246",
+ "2023-10-05/rustfmt-nightly-aarch64-unknown-linux-gnu.tar.xz": "8493ee01a985974607b49bd6b780727a06b49c6ef9066678311c0be070543666",
+ "2023-10-05/rustfmt-nightly-aarch64-unknown-linux-musl.tar.gz": "8243dbbffca27c3ff7ee7fd3b7b97449488d18d88e3025e7fe59733357eed80c",
+ "2023-10-05/rustfmt-nightly-aarch64-unknown-linux-musl.tar.xz": "3490fbdb817ab16e8864301fd12156e48810ab90e96a1689bea4af85087deb4f",
+ "2023-10-05/rustfmt-nightly-arm-unknown-linux-gnueabi.tar.gz": "dc41e1f7b29025c32f6d3420df9013fdb663a8bcb7b8e4bffb8dba1121342921",
+ "2023-10-05/rustfmt-nightly-arm-unknown-linux-gnueabi.tar.xz": "3a4c25f60b56b85475611dfdcc716525e766dd63ffd72a9c8c18b946929caa4a",
+ "2023-10-05/rustfmt-nightly-arm-unknown-linux-gnueabihf.tar.gz": "59109fb6355bed614b87335d682ffa61b8a4c2424680fe1893ee7a89a4c39619",
+ "2023-10-05/rustfmt-nightly-arm-unknown-linux-gnueabihf.tar.xz": "f4c6a9e518a37712317346cc56391241e5407245f7f780235717f6365a2334c7",
+ "2023-10-05/rustfmt-nightly-armv7-unknown-linux-gnueabihf.tar.gz": "23005b30b698b74367293f5c97730344e6658ab4ae355effd06637b5f88ef397",
+ "2023-10-05/rustfmt-nightly-armv7-unknown-linux-gnueabihf.tar.xz": "2e7855fcc4adf73b369f6a6a6265701183bd2f6c1a9cfc096e5ddbce47ea3548",
+ "2023-10-05/rustfmt-nightly-i686-pc-windows-gnu.tar.gz": "4f47dd332befe5469941291a90ac01c41c8df0ef9aa4453c87a0ac7eae887caa",
+ "2023-10-05/rustfmt-nightly-i686-pc-windows-gnu.tar.xz": "9ba9d2ef8c081bca595ee49fe75401a35876d5472cdf3d6812a2e9df0dde0120",
+ "2023-10-05/rustfmt-nightly-i686-pc-windows-msvc.tar.gz": "9147f04a1dd486a960f00dcbd97545ffcf05d591b6381fc9ff1985068a122fe0",
+ "2023-10-05/rustfmt-nightly-i686-pc-windows-msvc.tar.xz": "1f915c1930aa3f8d5b5dc81d8f0d58ba83087c8536ab7e3722f87818b138dfde",
+ "2023-10-05/rustfmt-nightly-i686-unknown-linux-gnu.tar.gz": "212d76156259c84291b38e0e3ad672126de8f2cbee466436e6549934731974dc",
+ "2023-10-05/rustfmt-nightly-i686-unknown-linux-gnu.tar.xz": "deb03c0b159cf7ddeb2b63d6f918382589ad376ab0f6a5d733f69107a184508c",
+ "2023-10-05/rustfmt-nightly-powerpc-unknown-linux-gnu.tar.gz": "41c05c7b58378d0233d99a1a7bf7c892465e66a87e6c2d92cba990ed928c3fe7",
+ "2023-10-05/rustfmt-nightly-powerpc-unknown-linux-gnu.tar.xz": "266b8be0ce9e214eb88b6d90cec98320227275ba97832d1885ad7205fc498212",
+ "2023-10-05/rustfmt-nightly-powerpc64-unknown-linux-gnu.tar.gz": "fbeb3e6ae855d07bc18d28e16841d25fd12cccd64b968866cd628a3f735d8fed",
+ "2023-10-05/rustfmt-nightly-powerpc64-unknown-linux-gnu.tar.xz": "f971a167da6e29f0ab57ff79d2cb5cb6ef555c73810c91736d605db2bdbe87b0",
+ "2023-10-05/rustfmt-nightly-powerpc64le-unknown-linux-gnu.tar.gz": "43102284f91bcb93c8a73e04e6e3818b74d3f3295200610f17bda88fa9632631",
+ "2023-10-05/rustfmt-nightly-powerpc64le-unknown-linux-gnu.tar.xz": "62aa43aba1d3b68e4eea2fedc2dba21a7a180549c2935797ba8f43e8134a3ab2",
+ "2023-10-05/rustfmt-nightly-riscv64gc-unknown-linux-gnu.tar.gz": "ddc32aececd93d4a49e870ebf8db5cf5e533555ddfa2ad1cba470eac22391362",
+ "2023-10-05/rustfmt-nightly-riscv64gc-unknown-linux-gnu.tar.xz": "9ed4df0068313a507e235d1d6925b6178a39eb18a92d4431063ce9dfbce5a256",
+ "2023-10-05/rustfmt-nightly-s390x-unknown-linux-gnu.tar.gz": "6034e512da2fb54ff85c88a85aa53eec312fb6c2a3db255488ce6d95fda78f91",
+ "2023-10-05/rustfmt-nightly-s390x-unknown-linux-gnu.tar.xz": "fec6832caf029a3beca6e583705f126f17c7214cc2180f5bcbc18c24a0738634",
+ "2023-10-05/rustfmt-nightly-x86_64-apple-darwin.tar.gz": "6e0c4370cea94fbbacfc4614636bc6d95a4c6046938c0d78d0c3afa678a1afdc",
+ "2023-10-05/rustfmt-nightly-x86_64-apple-darwin.tar.xz": "6eb0ed8942cafec07b4f7792734dbe73c7cc039726771afa2ccc89586bdd991d",
+ "2023-10-05/rustfmt-nightly-x86_64-pc-windows-gnu.tar.gz": "74373a7375bf3ec377657b990d0909fe9c5ef60128000fc171a9ef28015d66a7",
+ "2023-10-05/rustfmt-nightly-x86_64-pc-windows-gnu.tar.xz": "4c0904064d22eb6e8459f4eb8a791ae09d0eb846a84d92e9cf0134fc05e7b688",
+ "2023-10-05/rustfmt-nightly-x86_64-pc-windows-msvc.tar.gz": "3847403ddeeedfac7896ea60eda0bc9b6464a3c396b4a89c18b80c7f621f9272",
+ "2023-10-05/rustfmt-nightly-x86_64-pc-windows-msvc.tar.xz": "b1507140c062ddaa6b315a35873f66b4a1a713789af83b0eca346128065f41c2",
+ "2023-10-05/rustfmt-nightly-x86_64-unknown-freebsd.tar.gz": "82a5cccfad9b0410865cd813e1d9f659a7b17860552377bb60c7ec02b2d91415",
+ "2023-10-05/rustfmt-nightly-x86_64-unknown-freebsd.tar.xz": "c44354381752f581bd3e97941400ef4ea70374373a9192a0ca528d545539a845",
+ "2023-10-05/rustfmt-nightly-x86_64-unknown-illumos.tar.gz": "ac4b8fcce7b92f7fff22bba191d466e138293b4612d503e64600912fbd59b407",
+ "2023-10-05/rustfmt-nightly-x86_64-unknown-illumos.tar.xz": "520ea0735c2aef0e705bc15942a22f5064955ee86cf59892cbbdfb4c7a051b7e",
+ "2023-10-05/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.gz": "4092f92e7d8107b1f61257d977ca60e17ac68512cf3dd9494162c80e91dbf63e",
+ "2023-10-05/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.xz": "e40e21138fee2cbeca91829453c1831767e7e6631e9e46d9d4c16aa9cd422b24",
+ "2023-10-05/rustfmt-nightly-x86_64-unknown-linux-musl.tar.gz": "e776df6e7cc514827b7d5a4220ab12ed4fe919c964399d03a59a7025a92c1874",
+ "2023-10-05/rustfmt-nightly-x86_64-unknown-linux-musl.tar.xz": "7c9f9a8b27a178a7aaef6b59cca70e505afe2fd7e73fc111ae5d69c80b9a0de4",
+ "2023-10-05/rustfmt-nightly-x86_64-unknown-netbsd.tar.gz": "719349725d2a0cdd947ef79f24923be327d96161e0bd173a3434a4d04ea0d78f",
+ "2023-10-05/rustfmt-nightly-x86_64-unknown-netbsd.tar.xz": "77bd84e31e9f790792a1f8b2c9ebc07b919b4151f791ae2a3ce152fb340bba60",
"cargo-1.48.0-aarch64-unknown-linux-gnu.tar.gz": "71347016f0da96d4250225f7b52701274df958870b1a65482badb87d661035f9",
"cargo-1.48.0-aarch64-unknown-linux-gnu.tar.xz": "9ea440709cf51cf28110847fd769e7fc937a01d03500edec5232408c4459fc80",
"cargo-1.48.0-aarch64-unknown-linux-musl.tar.gz": "873883a9f6eb2e0cae7dafdc6c4262157298b7bc6ac5c3ed899ed1f55cad7e82",
@@ -19036,6 +19482,52 @@ FILE_KEY_TO_SHA = {
"cargo-1.72.1-x86_64-unknown-linux-musl.tar.xz": "bb0df4909017dd2a144025c092710872aaf3db78cb01bb58bbeeb3269d4b6ce7",
"cargo-1.72.1-x86_64-unknown-netbsd.tar.gz": "eaf7e85ab216429be186144e06327c6b9f091b2eea31d55bb6a24403581cb27a",
"cargo-1.72.1-x86_64-unknown-netbsd.tar.xz": "76a55f2d85a56f44c52ab958dfdf819721edd033742d7d8b4d04fc134e88f44f",
+ "cargo-1.73.0-aarch64-apple-darwin.tar.gz": "370496a66ccadb3d07800949eee01f0088b3efb220fa80973a7ff7e68b1097c8",
+ "cargo-1.73.0-aarch64-apple-darwin.tar.xz": "caa855d28ade0ecb70567d886048d392b3b90f15a7751f9733d4c189ce67bb71",
+ "cargo-1.73.0-aarch64-pc-windows-msvc.tar.gz": "edb4cf81d70d5e70fe3b92a0369d153e82e0123131fc8176c90942b7b089861f",
+ "cargo-1.73.0-aarch64-pc-windows-msvc.tar.xz": "39b09645c9567ba17881f0af1be6ef4470dc0025254e5a921c1491341b82a860",
+ "cargo-1.73.0-aarch64-unknown-linux-gnu.tar.gz": "f0ef0b9e75613725357f526cd7ac259aac1da37927a8d919eff3eafb8f5087a7",
+ "cargo-1.73.0-aarch64-unknown-linux-gnu.tar.xz": "1195a1d37280802574d729cf00e0dadc63a7c9312a9ae3ef2cf99645f7be0a77",
+ "cargo-1.73.0-aarch64-unknown-linux-musl.tar.gz": "40b9db99e9d5bfbc54c39bbcedc9e900b086fe8d233f722268eb5d719eb1d9a9",
+ "cargo-1.73.0-aarch64-unknown-linux-musl.tar.xz": "aa3115a3cbf4f165436b0c8674d31163434030582971d378f86ff7fc7b1f49c0",
+ "cargo-1.73.0-arm-unknown-linux-gnueabi.tar.gz": "9cfbd484b4ff759060f552d60c08cc3ac547d4369449cc14154474104a3b3b33",
+ "cargo-1.73.0-arm-unknown-linux-gnueabi.tar.xz": "de830c829cff6a01de42ef621f7f1721dfec2036a729597f972b539cfc167798",
+ "cargo-1.73.0-arm-unknown-linux-gnueabihf.tar.gz": "ed5c1d55aff32a78583f641540eceddf98ee7f5a6f26f0fec49b97f25b03d2d7",
+ "cargo-1.73.0-arm-unknown-linux-gnueabihf.tar.xz": "fa81a1431d26d77e56c73c5c7360f851e6f3c60867f36dfb62088634fcf30f6e",
+ "cargo-1.73.0-armv7-unknown-linux-gnueabihf.tar.gz": "3f4d3e00b72d35681c66158f5e2af85f07916c422dfce62c3d1bcd4c6245e8f1",
+ "cargo-1.73.0-armv7-unknown-linux-gnueabihf.tar.xz": "74ef152b4088eb5ac0808c8e2a02dd399743fc05c607f9e2914fe8b6100d4d24",
+ "cargo-1.73.0-i686-pc-windows-gnu.tar.gz": "2c032fd5dc4bb7ba88cd7e4d00e069f65a8f7987af6f45642f00d3b06c2aaae4",
+ "cargo-1.73.0-i686-pc-windows-gnu.tar.xz": "8e4451380d0b60c2a5f1eedf878de149d526890da6aa778baf8087cb0add3b0c",
+ "cargo-1.73.0-i686-pc-windows-msvc.tar.gz": "ba9af54afb0f4f1e945cb1050810122d45f30ec8bc248979fb13fdd5071ef5e8",
+ "cargo-1.73.0-i686-pc-windows-msvc.tar.xz": "bca12d33241f4f8f97a4b20e971300022c267815cb52daf86208a005aa3d0284",
+ "cargo-1.73.0-i686-unknown-linux-gnu.tar.gz": "df6126fa404c9cd604f48aebc27f6d286957de282c96d84a6edc1c8129e7fd78",
+ "cargo-1.73.0-i686-unknown-linux-gnu.tar.xz": "8780f10eb3565b47f2616ccc1616c1a491a12a055976a25de551cb29e7f50390",
+ "cargo-1.73.0-powerpc-unknown-linux-gnu.tar.gz": "ec6b1acb6523da1d0dd26b738c2c180334f478214e7dbf2dcb9b56e85f452189",
+ "cargo-1.73.0-powerpc-unknown-linux-gnu.tar.xz": "ffa30a6e480b3e20cf42ca32266edcfd0b8e4f1b84da450937e4bca7ec3e88e8",
+ "cargo-1.73.0-powerpc64-unknown-linux-gnu.tar.gz": "4ad720bd1f0b21dee6d434d8bc6c8fc196e439a63d21b96469e8311f67254317",
+ "cargo-1.73.0-powerpc64-unknown-linux-gnu.tar.xz": "35454cd3778dac739da6a3fbbe278a2b6818bc4ca95600412e0d51c13f3fdc1f",
+ "cargo-1.73.0-powerpc64le-unknown-linux-gnu.tar.gz": "84492ddbff6353fe5a1630b6e27d713b07df0a8d20f63162dfbd5378e8e997a6",
+ "cargo-1.73.0-powerpc64le-unknown-linux-gnu.tar.xz": "14f74b06ddeebbec48098828d2de55e631ea4cacd7c7ebad8a96220d1a470e0a",
+ "cargo-1.73.0-riscv64gc-unknown-linux-gnu.tar.gz": "a7272b1ee8c47a87c6e9acc93c42c6aab11976ba9f20264ddf38b22d29e96766",
+ "cargo-1.73.0-riscv64gc-unknown-linux-gnu.tar.xz": "50d42893e2da56657a7c00ed17498417628793d8b2bceab829be7b2575478879",
+ "cargo-1.73.0-s390x-unknown-linux-gnu.tar.gz": "ab024854b1b5d91b906cd7c06b867c307cb3d88b159d5b3c4911980650dd6849",
+ "cargo-1.73.0-s390x-unknown-linux-gnu.tar.xz": "6035a925f3307c98d2caf0b1727fc401e7a64a09e6a7132a0cd882937720bda2",
+ "cargo-1.73.0-x86_64-apple-darwin.tar.gz": "1a69a767e0ecd3e4de896c653ff266b6f16400144fe30141eb83f785cd93945b",
+ "cargo-1.73.0-x86_64-apple-darwin.tar.xz": "94f9eb5836fe59a3ef1d1d4c99623d602b0cec48964c5676453be4205df3b28a",
+ "cargo-1.73.0-x86_64-pc-windows-gnu.tar.gz": "843a91924e42ae60b5dc27044980eaf0e873b94638cf81b7fca4fe8dd2ad2e15",
+ "cargo-1.73.0-x86_64-pc-windows-gnu.tar.xz": "349354cfbef7fd74768956a77a4c2ae51c1d1b6037e32e0e236b78046d7b5130",
+ "cargo-1.73.0-x86_64-pc-windows-msvc.tar.gz": "3e43e674ac10a3a1cd68770ca8934fd3e81d0a278c733961a62103a7e0f45f71",
+ "cargo-1.73.0-x86_64-pc-windows-msvc.tar.xz": "8adabe498c4012e4966eb386d5fc623e8dc62be24eb6f8576117546acebdd0ed",
+ "cargo-1.73.0-x86_64-unknown-freebsd.tar.gz": "04708cea978fd354a828a0f5ecc0a596067e8aaf333f75ab80c3409f99242eff",
+ "cargo-1.73.0-x86_64-unknown-freebsd.tar.xz": "6f72439338b48a7492bea15e82052108f1aef43a7524b7b570d58396c47d0e37",
+ "cargo-1.73.0-x86_64-unknown-illumos.tar.gz": "6fb7afe5a3b47ab8ae129dab8cfb5e00d79948b65acbf0caaf6f487a77d67b68",
+ "cargo-1.73.0-x86_64-unknown-illumos.tar.xz": "4ed00c28b689c12818c8e27d8a951d959bc4475c25c2c9ea52aacdd3ec20bc79",
+ "cargo-1.73.0-x86_64-unknown-linux-gnu.tar.gz": "78ad87102aebe101fb61d8fb6bb4b4da8674c57f0af810b3b3310f9f1a63d002",
+ "cargo-1.73.0-x86_64-unknown-linux-gnu.tar.xz": "7c3ce5738d570eaea97dd3d213ea73c8beda4f0c61e7486f95e497b7b10c4e2d",
+ "cargo-1.73.0-x86_64-unknown-linux-musl.tar.gz": "67088e733cd3570ae798d1f26a60eb4144219df894de15da10680456d68a9d14",
+ "cargo-1.73.0-x86_64-unknown-linux-musl.tar.xz": "7e17d4e03d5a949e73d02866589e2010e8a070e025ead08a2030d8d8dc002054",
+ "cargo-1.73.0-x86_64-unknown-netbsd.tar.gz": "69b68d94ab1a4e0819c779cb8751b737acb3d07fd6a28092d8dbea0d757f3e9d",
+ "cargo-1.73.0-x86_64-unknown-netbsd.tar.xz": "36dd97bf0d2bda2eaf4f01b9e6b9af33455efda86bed59c57dbfde3685c98a01",
"clippy-1.48.0-aarch64-unknown-linux-gnu.tar.gz": "2cc894bf75d938c0f7b96c7711d93b6d5a0befed5c09232cdd8413a57942ed88",
"clippy-1.48.0-aarch64-unknown-linux-gnu.tar.xz": "ff5fc4d3b4f1b6147f782d28669fa0e847b3660185fa147e4ebf4d9ace61cd4e",
"clippy-1.48.0-aarch64-unknown-linux-musl.tar.gz": "b3d740358470df6f4c1881a40db16c6fce4082bd251b012963147fdadab96879",
@@ -20908,6 +21400,52 @@ FILE_KEY_TO_SHA = {
"clippy-1.72.1-x86_64-unknown-linux-musl.tar.xz": "8c5c9883f7f04f3b9ba6baf042472fba001c4bb8b63c5a75f69f3d9b187c9298",
"clippy-1.72.1-x86_64-unknown-netbsd.tar.gz": "66fdcaf1b158db3e73f47f033edf09517621b2c8f4434f00e2e9283da8e4b3b5",
"clippy-1.72.1-x86_64-unknown-netbsd.tar.xz": "964800547862a2535609db3c24ee52da647d5aef60f087d90da32f0d8948f150",
+ "clippy-1.73.0-aarch64-apple-darwin.tar.gz": "762dcb2e02b91223dbb8044dd9ff47ec7a5e2e0f2b00cfa3f55df24aca3230c7",
+ "clippy-1.73.0-aarch64-apple-darwin.tar.xz": "a518439ec0bad48c5ff0decb1820ef20f89cd73e4561bb740e51fc00bcfcef8f",
+ "clippy-1.73.0-aarch64-pc-windows-msvc.tar.gz": "1fd7ad9d6bf30ffaf4f50937e6b7be50fd9ce77894a612b1cdbd43bd79e8b0ca",
+ "clippy-1.73.0-aarch64-pc-windows-msvc.tar.xz": "efb43b5422e312a553ae75f3144c49cc8c8899567bfe8924741e1c1d8679172e",
+ "clippy-1.73.0-aarch64-unknown-linux-gnu.tar.gz": "278c93d7f02e5aab6189147cb4f886db042c5ae891a00a0ed7345ccb6375479b",
+ "clippy-1.73.0-aarch64-unknown-linux-gnu.tar.xz": "719c8ea62658a94b3d2c26cceab322f5889be5b2dbe4e8f9683c4edcd49d2260",
+ "clippy-1.73.0-aarch64-unknown-linux-musl.tar.gz": "1af891117829c8d400130f0636d152c8a977b6b4d687de663ac3c66646673a20",
+ "clippy-1.73.0-aarch64-unknown-linux-musl.tar.xz": "fe527d58fd05759d85e4317ad523e4b046a810f3a3c80d1e81f86d0ce01a81e8",
+ "clippy-1.73.0-arm-unknown-linux-gnueabi.tar.gz": "d7f43aac462ff335f11ec83b9453fc412121195b4847ebd81ad662ad5a809053",
+ "clippy-1.73.0-arm-unknown-linux-gnueabi.tar.xz": "7ae5995cfb281321153c5ee0026d1311710922bd5b7b70871071e1c47547e642",
+ "clippy-1.73.0-arm-unknown-linux-gnueabihf.tar.gz": "c9e8711ed8919ef4d4c9fd32c83ae30b872465fac520ba9c51cf8cd015062c91",
+ "clippy-1.73.0-arm-unknown-linux-gnueabihf.tar.xz": "10ec1fec617927f4b81abff28ba3c0ef85ed3692c166e3efe670a7b0348ee875",
+ "clippy-1.73.0-armv7-unknown-linux-gnueabihf.tar.gz": "775f3d400da0ac750f5526be14ac2bb03028e430c5a60543298537d7f83dc466",
+ "clippy-1.73.0-armv7-unknown-linux-gnueabihf.tar.xz": "5cc7d45c7f5e25f40bc47f2b5ffb16c6f73d3b5ff9b00216c4c9f27eb8ae57d8",
+ "clippy-1.73.0-i686-pc-windows-gnu.tar.gz": "1558f85cb76e1178ca28493599022c4f80fcc4694e81883aaea807147ef7044c",
+ "clippy-1.73.0-i686-pc-windows-gnu.tar.xz": "6407d73c1e6c7937cffb78e0331e3f3c5d7f634cf912cfa8c9c70f6fd9fe29dd",
+ "clippy-1.73.0-i686-pc-windows-msvc.tar.gz": "7b5438d4070c2373cca9fd0ee1d22225f656374afdd260c54a254541f724bc90",
+ "clippy-1.73.0-i686-pc-windows-msvc.tar.xz": "f57bc74d1dec054d9c9c53ba3cfe437143b7ed4a7d1cb07fd907a6811808b0f9",
+ "clippy-1.73.0-i686-unknown-linux-gnu.tar.gz": "39f485bbcf28726d0647d7f5f830e084259a47e83faf69c52d67a5054fc20213",
+ "clippy-1.73.0-i686-unknown-linux-gnu.tar.xz": "bc97c291985b869c76ec060d5b8acddc349577a3b8f84c148d444c1dc2215ea1",
+ "clippy-1.73.0-powerpc-unknown-linux-gnu.tar.gz": "c60b011052e26be7aee61f07e353dd8874852e3467f0617e8e22827db8f7a341",
+ "clippy-1.73.0-powerpc-unknown-linux-gnu.tar.xz": "a69317c09bec7f3825d822551fea3020cd3e8046f23a5897083fadb6913280f4",
+ "clippy-1.73.0-powerpc64-unknown-linux-gnu.tar.gz": "683b8946ab0aedb09d452f60c2afde8f34ea11a1caab7f535095273712663256",
+ "clippy-1.73.0-powerpc64-unknown-linux-gnu.tar.xz": "f14383de9e8b962490a850952cc36d86737a0b70645be66e15cc205bc5c66f5f",
+ "clippy-1.73.0-powerpc64le-unknown-linux-gnu.tar.gz": "63f79e45ced51ccd37cd9eba4d2144748761b6b628a7c6fadda4f32f7fbba697",
+ "clippy-1.73.0-powerpc64le-unknown-linux-gnu.tar.xz": "149b32a21a7ced28b35461073448b8ad85cde6569d8b529981789f7554af7733",
+ "clippy-1.73.0-riscv64gc-unknown-linux-gnu.tar.gz": "d74e7a62a1dd8e69c3738ff42de31af5687a1228eff5e1262569367110ca9daf",
+ "clippy-1.73.0-riscv64gc-unknown-linux-gnu.tar.xz": "d4f9a3fea09b26c6c6a515c22fecc4643179fec8506377847c2eb305fb0b409d",
+ "clippy-1.73.0-s390x-unknown-linux-gnu.tar.gz": "4ab57b1b5a0aa9584bb1a696efaa1a5b08a3f4c4acab1c44380e9a33b0229ffd",
+ "clippy-1.73.0-s390x-unknown-linux-gnu.tar.xz": "3d9e91402f0a3eba02d3b2fdb218393a9651b057a25f3481de5c71572f915628",
+ "clippy-1.73.0-x86_64-apple-darwin.tar.gz": "c72f5f77261fab2b70d8d3527a2153bd2868026b3568879bfd216c2aa02908bf",
+ "clippy-1.73.0-x86_64-apple-darwin.tar.xz": "9f2bf5a8f56cfa616dc84bff96d4359fd08f23d764c22da95dcf6a95c081b0a4",
+ "clippy-1.73.0-x86_64-pc-windows-gnu.tar.gz": "f90a664de6af33067fed97a11d8726fdf2eece4a2998313842adcef941f57b35",
+ "clippy-1.73.0-x86_64-pc-windows-gnu.tar.xz": "cf7910e0e6a1cb3218c1418dddd634eb85ecd9856990d2332521663616beac61",
+ "clippy-1.73.0-x86_64-pc-windows-msvc.tar.gz": "544f705b8eedf1248dca62df4442e6c76fddd0a911ef3a624a132f33f4d5c4b5",
+ "clippy-1.73.0-x86_64-pc-windows-msvc.tar.xz": "c04184f273a69d8a68a7056d46b604fb1d4f8af429835451da071b652cf8d9df",
+ "clippy-1.73.0-x86_64-unknown-freebsd.tar.gz": "f01fc0ad4201f489f2b0151012aa31931a53cbce4c57d1a1886b8b5ad16f2e3a",
+ "clippy-1.73.0-x86_64-unknown-freebsd.tar.xz": "b9d1ed87d20123e0dbbf53132b5c2d0b1058ea815d8bf3eea597573b7e41c583",
+ "clippy-1.73.0-x86_64-unknown-illumos.tar.gz": "cb03583622af3dcdafa4780ec0008a680a77711a7c21f0eee38e4433ac26f56b",
+ "clippy-1.73.0-x86_64-unknown-illumos.tar.xz": "8e9fafcb607f2cac97067834e271db5d16a21bb1b1a45287b2c6ad68801a0d16",
+ "clippy-1.73.0-x86_64-unknown-linux-gnu.tar.gz": "dc0657ba673ec9f19696bcf7446506bae22b3a158d5930bfdc0345391dbd9917",
+ "clippy-1.73.0-x86_64-unknown-linux-gnu.tar.xz": "544338d375af7b6492a48574b76fa703dd79da5b9728a0223de2af4e7a5f97c8",
+ "clippy-1.73.0-x86_64-unknown-linux-musl.tar.gz": "cf610f34e0d89c472ca97c0fbbead974c0e8d8318f5b86f458661c644c17d020",
+ "clippy-1.73.0-x86_64-unknown-linux-musl.tar.xz": "aff277b91526c0a3c5bd55bfe6458d502373d08374ad49c1ac1e1defc9ec3ac1",
+ "clippy-1.73.0-x86_64-unknown-netbsd.tar.gz": "df8f14a45170c109907969caa4f09d31958586d95866b4a60c8a22694964b78d",
+ "clippy-1.73.0-x86_64-unknown-netbsd.tar.xz": "372331cf036ca7285fedc61babaabf7c073ae43a0e11e56867853e117f0e8c82",
"llvm-tools-1.36.0-aarch64-unknown-linux-gnu.tar.gz": "942856e49837a1c3b9c7d48b52cf0ac0fcb2bb31bb691fe53bfb934afb561c7f",
"llvm-tools-1.36.0-aarch64-unknown-linux-gnu.tar.xz": "e2671f3710f65642779023e46ad7402cc3bdaa15861ccfd6b48f1607e0b76ae1",
"llvm-tools-1.36.0-arm-unknown-linux-gnueabi.tar.gz": "53140ba7c55cb8ced80d136402de01b8b9ed8e2095b2343d4b41f963cc44069b",
@@ -23336,6 +23874,52 @@ FILE_KEY_TO_SHA = {
"llvm-tools-1.72.1-x86_64-unknown-linux-musl.tar.xz": "d6b2e3e3f7c777cacdf545b646a7b8f412eb5ab6b25979e8598e1070a42ff924",
"llvm-tools-1.72.1-x86_64-unknown-netbsd.tar.gz": "b313205030847f54ee231281cf40e2f04a88873718fbc6d2c54c9eb37ce4395c",
"llvm-tools-1.72.1-x86_64-unknown-netbsd.tar.xz": "9abba0a92e46ddfa1872b40e5e94286a59c9a9770f37d2cb9230d5b6de0a1f6e",
+ "llvm-tools-1.73.0-aarch64-apple-darwin.tar.gz": "cc6a363bb93ddfee8af974682462bca0919564d131d488052ac868bde6cbf5ba",
+ "llvm-tools-1.73.0-aarch64-apple-darwin.tar.xz": "6ecd7a3b8e089793b2cc4b81d23b996af361267dba8cdac05775217a71a35cfc",
+ "llvm-tools-1.73.0-aarch64-pc-windows-msvc.tar.gz": "7ef18315b5807da313cda2f81b0ffde99bb07ae922b73b298f2be2fa384a0867",
+ "llvm-tools-1.73.0-aarch64-pc-windows-msvc.tar.xz": "508bb5e4c136e6809c3f9163ae6056b991632e87bcdc90719c0756874a2fb8b9",
+ "llvm-tools-1.73.0-aarch64-unknown-linux-gnu.tar.gz": "ca92b9d6f1acf6292725bf546dcbb63d7acf3d3f0108928f83a7a727d0071a7a",
+ "llvm-tools-1.73.0-aarch64-unknown-linux-gnu.tar.xz": "bfe820284492ea068b0f7cdc37d69a255fbfb23adbc294ac39e00e6e5f6a76e3",
+ "llvm-tools-1.73.0-aarch64-unknown-linux-musl.tar.gz": "7bb38fde54a985ce92a9359e89b077fade2aad472e7c581334c2967034ea4054",
+ "llvm-tools-1.73.0-aarch64-unknown-linux-musl.tar.xz": "0177c2c8218d294ebe3cfa0fef9833c87a968327e654ea7b2a78bf6292890d11",
+ "llvm-tools-1.73.0-arm-unknown-linux-gnueabi.tar.gz": "03b96215bb6e48bcdab8f603845a53ff938fc2e17107fb57430a45684d054fa4",
+ "llvm-tools-1.73.0-arm-unknown-linux-gnueabi.tar.xz": "59f60413a3a304e4736d85f8af620c6632bbbb392d9bba79e6af3f3ae3011256",
+ "llvm-tools-1.73.0-arm-unknown-linux-gnueabihf.tar.gz": "5626432e654525f2c180224cfcc3b04bb5d328e5c7ed16ce754ed7cd0c1fe7a3",
+ "llvm-tools-1.73.0-arm-unknown-linux-gnueabihf.tar.xz": "eb629e6709f29e14ec9be0443c2f3ec07007fc1f73480722d858a6212b1bec05",
+ "llvm-tools-1.73.0-armv7-unknown-linux-gnueabihf.tar.gz": "6b24ed9a263e1d609959d9199687a75786127c135341d2a68f8c8dbc775398d8",
+ "llvm-tools-1.73.0-armv7-unknown-linux-gnueabihf.tar.xz": "b5e4aecdc885869e80e525f97290d4a56b04499ab764eedef35522cb4fbcc0e5",
+ "llvm-tools-1.73.0-i686-pc-windows-gnu.tar.gz": "675cc5a01de5978e2c5866293653db782eabcac4283a11cd835113696d11987e",
+ "llvm-tools-1.73.0-i686-pc-windows-gnu.tar.xz": "8332bcf86f5aab8c6b83b27c091fe5b61f1c5c70c6409ba496faface77265b8b",
+ "llvm-tools-1.73.0-i686-pc-windows-msvc.tar.gz": "0c9e2f1e6159f6f42b22ccba99e447100b22e0ab84ea892b09e0712ef1248ed9",
+ "llvm-tools-1.73.0-i686-pc-windows-msvc.tar.xz": "74e9c17e2b82bf69c15bbd5c4c38187e9843372c2b2c2af39b7b965936099772",
+ "llvm-tools-1.73.0-i686-unknown-linux-gnu.tar.gz": "e1ff2cf17fe7c61fb9b4228bf4d2153781c06591c14490292abe646cf0757449",
+ "llvm-tools-1.73.0-i686-unknown-linux-gnu.tar.xz": "b9442b31fe47f4e74946f6ee6208be3c08ef5db5fba47366345afe757ee11f7e",
+ "llvm-tools-1.73.0-powerpc-unknown-linux-gnu.tar.gz": "df43929427242a5c01191338c86b61696aa02d339eb2867da7104d8a12d3e764",
+ "llvm-tools-1.73.0-powerpc-unknown-linux-gnu.tar.xz": "86b0cc5cffa476883d63af2e571124e924d7b441086978ffcc6d4564ca3731f3",
+ "llvm-tools-1.73.0-powerpc64-unknown-linux-gnu.tar.gz": "2b5d9ebcdbc08919b437bc2992d379936e171d6b321296c3b36d4ba38a3f88ca",
+ "llvm-tools-1.73.0-powerpc64-unknown-linux-gnu.tar.xz": "eb9ba8e35f885ddad7395def5f4d9d92ba181a510b05b8f78ff3c86d1e51edd6",
+ "llvm-tools-1.73.0-powerpc64le-unknown-linux-gnu.tar.gz": "65a15451c02d4755fcca8107e5309c54c14ba7acdf76722a41b78113221d9b73",
+ "llvm-tools-1.73.0-powerpc64le-unknown-linux-gnu.tar.xz": "e28991404335781a9effc21602e0276cba6c255357b624ecdbf7c8a91afa79c2",
+ "llvm-tools-1.73.0-riscv64gc-unknown-linux-gnu.tar.gz": "f6aaa7b5c11252ad6dab2366eb5981595eea01e0e6c08093f04793f8950f682d",
+ "llvm-tools-1.73.0-riscv64gc-unknown-linux-gnu.tar.xz": "d359268ce8182ebc452862fc09ebecab76eaeff5fe9ad748fa0f2d59bce1ad21",
+ "llvm-tools-1.73.0-s390x-unknown-linux-gnu.tar.gz": "cce92a3b486f6d01f629450709f0de62dc7e00c2f02a4952988840d3cbf87622",
+ "llvm-tools-1.73.0-s390x-unknown-linux-gnu.tar.xz": "8e783c33a61c27ecdce4cebeeb657fb331749eb696820a18769c7b9063142c1e",
+ "llvm-tools-1.73.0-x86_64-apple-darwin.tar.gz": "76b554db364cc95af0d8c9a1640e152e7ab3168934bc703a14b726c76cf7a499",
+ "llvm-tools-1.73.0-x86_64-apple-darwin.tar.xz": "9350ff2affd5ce3964af393f0ca970439ce25d1c27a78ef258b5cf055be47066",
+ "llvm-tools-1.73.0-x86_64-pc-windows-gnu.tar.gz": "04fe17b6443e2ec6cc4ef4341e939cb38977b8103b10f61f0c81f3bef4c2af7c",
+ "llvm-tools-1.73.0-x86_64-pc-windows-gnu.tar.xz": "2b7b39254c5097491092e65e9f3b45f7caa3a5d55f3e359855111951215d5173",
+ "llvm-tools-1.73.0-x86_64-pc-windows-msvc.tar.gz": "3b9903f082af6c48488dfd5b8cdc78b0dcff9b37712109fb66ce01d6fe1a694f",
+ "llvm-tools-1.73.0-x86_64-pc-windows-msvc.tar.xz": "93bb9f00004250ff1f42319a859f1234218ef6dca8542ddf30fc6c2d2c4e6b55",
+ "llvm-tools-1.73.0-x86_64-unknown-freebsd.tar.gz": "32a318737f2b6698258ceaea40397ff91eb6dee9635ef8fdeceb4a1cc0e69c73",
+ "llvm-tools-1.73.0-x86_64-unknown-freebsd.tar.xz": "6a4e78b7ba359cf0cf0a7e4e5ace3b389e3d0f495880a9584989a7d8504d79cf",
+ "llvm-tools-1.73.0-x86_64-unknown-illumos.tar.gz": "9b4bfaaff77320563fd677c046246886687db1193cb110e272e2025036c582d2",
+ "llvm-tools-1.73.0-x86_64-unknown-illumos.tar.xz": "048c9ea3b1cf1b59e517e7a5f82e18160f6e7fdae92e16de8687b0a80b961f1c",
+ "llvm-tools-1.73.0-x86_64-unknown-linux-gnu.tar.gz": "7b5a3419eee9857808bc187e22b03c10ae33e3262a5f378869473264380f56a0",
+ "llvm-tools-1.73.0-x86_64-unknown-linux-gnu.tar.xz": "221c14802bfde29bd241d79c9f7be80a347615be395acb60908aa807231085ac",
+ "llvm-tools-1.73.0-x86_64-unknown-linux-musl.tar.gz": "c540bff7aeca478367ace55cdd634d6b296c454ea2bd0c2b2dc0e0c153ecb5d1",
+ "llvm-tools-1.73.0-x86_64-unknown-linux-musl.tar.xz": "a0aa9dbe80ad5ea2faca17bcb31556ed3706c2d77a0539bf28ef38a29287ccef",
+ "llvm-tools-1.73.0-x86_64-unknown-netbsd.tar.gz": "cc08c906852ee1e4725c052d130749ab9da74f6bc524d8a2e42e7207e5df7fb7",
+ "llvm-tools-1.73.0-x86_64-unknown-netbsd.tar.xz": "d5cdcc242c5ec5184498b5527e9b14bad45db7ec6f01889288f6025ce64a3e07",
"rust-1.26.0-aarch64-unknown-linux-gnu.tar.gz": "e12dc84bdb569cdb382268a5fe6ae6a8e2e53810cb890ec3a7133c20ba8451ac",
"rust-1.26.0-aarch64-unknown-linux-gnu.tar.xz": "773560f577d4bfc34efa69f035b0d397fc8f4d55835d163416bc4f2012a57a4a",
"rust-1.26.0-arm-unknown-linux-gnueabi.tar.gz": "6e11188bd58893c4af35790a73cca04cde3b9ecf5153e0df1ed14fafd983d183",
@@ -26558,6 +27142,52 @@ FILE_KEY_TO_SHA = {
"rust-1.72.1-x86_64-unknown-linux-musl.tar.xz": "9a2d348688ca524917dd71f30d9372a8f198712efd23f25bd34e94eebf960ea0",
"rust-1.72.1-x86_64-unknown-netbsd.tar.gz": "5778718c1742e792fc00f30ccbe7a9d345de98e80e5438ea384b7f8ab4f2ec40",
"rust-1.72.1-x86_64-unknown-netbsd.tar.xz": "41b97e86b42464708bc64fd7c9063f6b644499a4cefbb1a02168197b86f0b81f",
+ "rust-1.73.0-aarch64-apple-darwin.tar.gz": "9c96e4c57328fb438ee2d87aa75970ce89b4426b49780ccb3c16af0d7c617cc6",
+ "rust-1.73.0-aarch64-apple-darwin.tar.xz": "024c89f967d2c38d1bb35cbde91e7a79bb79bae5b5a4811107b567350b0d690a",
+ "rust-1.73.0-aarch64-pc-windows-msvc.tar.gz": "ea36179b1da415d8c4756885b698b5ba14e77c092bf7bfff5e7fdfbc899ffd78",
+ "rust-1.73.0-aarch64-pc-windows-msvc.tar.xz": "2c5e446c35778ed06ad24fce4305e1949fd9c3adfd151efb1362ec038d45ca9a",
+ "rust-1.73.0-aarch64-unknown-linux-gnu.tar.gz": "e54d7d886ba413ae573151f668e76ea537f9a44406d3d29598269a4a536d12f6",
+ "rust-1.73.0-aarch64-unknown-linux-gnu.tar.xz": "73917c45daaf4c3e990aed4ed77b721a06d82b660b081128d9f82e4c43c4ec5c",
+ "rust-1.73.0-aarch64-unknown-linux-musl.tar.gz": "f4e9ff895aa55558777585ad4debe2ccf3c0298cb5d65db67814f62428de4a5b",
+ "rust-1.73.0-aarch64-unknown-linux-musl.tar.xz": "4ed6dbfab0beb222757ceafde80352e01ade834a408307b726cb1d0057746178",
+ "rust-1.73.0-arm-unknown-linux-gnueabi.tar.gz": "92e43664c9578309c7ac867fae3ae270e1ecbb9c042e3a52f456360e8eaf5eb5",
+ "rust-1.73.0-arm-unknown-linux-gnueabi.tar.xz": "8734f2d6e9d3073fe431fba13b0032fab8679e59e8ba639c06ddc7897cb813b0",
+ "rust-1.73.0-arm-unknown-linux-gnueabihf.tar.gz": "9c29bb42786aedbb16ea71564eb06068a8b01cca6c6b8857f0c37f91dfba7134",
+ "rust-1.73.0-arm-unknown-linux-gnueabihf.tar.xz": "5086e77ebbb9ae875f0515774b7fc248692a4c4228ce49a4ba3a408bee91d49e",
+ "rust-1.73.0-armv7-unknown-linux-gnueabihf.tar.gz": "092b32b82c602c18279d76d9a96763e85030aa62cda64c1bc73fc1f6355bb99c",
+ "rust-1.73.0-armv7-unknown-linux-gnueabihf.tar.xz": "b4da7f09cd6722d2e98dae24c4ee93efc13bae851d3b4415ec37286cc88c2214",
+ "rust-1.73.0-i686-pc-windows-gnu.tar.gz": "7b703658fb5c55ed74d79a75229a34fc6de23383dec39bfcc65ed9b106bf1f5d",
+ "rust-1.73.0-i686-pc-windows-gnu.tar.xz": "27f56e727d417c1437da74b1e0de5b01e683a1a08d28cb1bb691fadd6d556557",
+ "rust-1.73.0-i686-pc-windows-msvc.tar.gz": "985dcae82e154e662d78a03df637339b679120bb92acd34401e9d33c5b1156dc",
+ "rust-1.73.0-i686-pc-windows-msvc.tar.xz": "b98f0429aee08b9c3f8ff7feb965514a110157d2ae62e6361e9eb363626b493a",
+ "rust-1.73.0-i686-unknown-linux-gnu.tar.gz": "6a088acbbda734d27e8b431499f1d746de7781673b88fead3aeae072be1d1a5a",
+ "rust-1.73.0-i686-unknown-linux-gnu.tar.xz": "60960c340f75c4baad60486a23dfab33b3f704332e690323697d50a418af2a83",
+ "rust-1.73.0-powerpc-unknown-linux-gnu.tar.gz": "1581f1a569c42946081f2ed81113a00af9bf9c86180a6587848903f4229838c8",
+ "rust-1.73.0-powerpc-unknown-linux-gnu.tar.xz": "494f179660cfaea57d7a2c5b4c6908d351cd215b23b414deb8f0dc5fcd9f6a97",
+ "rust-1.73.0-powerpc64-unknown-linux-gnu.tar.gz": "5bff0143a2c2a7511312f25b1907310bf70d87e7ee1451cd2b6e934365539c7b",
+ "rust-1.73.0-powerpc64-unknown-linux-gnu.tar.xz": "c0677cb87996c1e55438bcba12ee9c6557e423aae44a51bf0b89230fac21c1cd",
+ "rust-1.73.0-powerpc64le-unknown-linux-gnu.tar.gz": "8fa215ee3e274fb64364e7084613bc570369488fa22cf5bc8e0fe6dc810fe2b9",
+ "rust-1.73.0-powerpc64le-unknown-linux-gnu.tar.xz": "f381c0dae2a93b287c036083fe586a72083b16ede994bf526c5f807d6d4791a3",
+ "rust-1.73.0-riscv64gc-unknown-linux-gnu.tar.gz": "381379a2381835428b2e7a396b3046581517356b7cc851e39e385aebd5700623",
+ "rust-1.73.0-riscv64gc-unknown-linux-gnu.tar.xz": "c9580e99d2f8d758c7bd9c19769d073d10acd99a320fab7c3ffd31161786b1c5",
+ "rust-1.73.0-s390x-unknown-linux-gnu.tar.gz": "e671cb9dcde4ce37a6f97c4ee7ec9be6cf8012ac2df54f1b1d48738484cc87fe",
+ "rust-1.73.0-s390x-unknown-linux-gnu.tar.xz": "25ae2d09f4430233dc07b66393fc54b2dc403aaf82bf5f23dbf28cc45a3a717b",
+ "rust-1.73.0-x86_64-apple-darwin.tar.gz": "ece9646bb153d4bc0f7f1443989de0cbcd8989a7d0bf3b7fb9956e1223954f0c",
+ "rust-1.73.0-x86_64-apple-darwin.tar.xz": "f6488a32cab29a517b657965e707c736147a7b08356c53c837c70ca21a58f094",
+ "rust-1.73.0-x86_64-pc-windows-gnu.tar.gz": "801f159f8e1959301583abb167ffbcf28a6ce01671c67570415a45b39aa017d4",
+ "rust-1.73.0-x86_64-pc-windows-gnu.tar.xz": "73df66dccf5dcdef54e0d4726409d866f40fcbaa8c479ac170618ecc3cbbb67f",
+ "rust-1.73.0-x86_64-pc-windows-msvc.tar.gz": "d6b0db0acc5ffef638ffb7bfc0497381ffa41d5935a1115230c34db6c6f1ab20",
+ "rust-1.73.0-x86_64-pc-windows-msvc.tar.xz": "af6e6ae148aef9db23ff2c43a3eeb95f67bba4e2c1b9f9290cd501e77014648a",
+ "rust-1.73.0-x86_64-unknown-freebsd.tar.gz": "f13b2c1c84aab582f963af135e8b410bc19d372eaf0e1540773a24bfbcfafa7f",
+ "rust-1.73.0-x86_64-unknown-freebsd.tar.xz": "0c0718cadc65091e41cfdd0a428dea0e85b6231482febb5bf59d35f4ac6e7a01",
+ "rust-1.73.0-x86_64-unknown-illumos.tar.gz": "093a0b741928377fb130bfd0319d43acdfb15ba77882a58ac916eeda07104160",
+ "rust-1.73.0-x86_64-unknown-illumos.tar.xz": "5af5717a30cfdb0c11429d35bd6d217f07e1dde02260cc1c9ee699510725a1e2",
+ "rust-1.73.0-x86_64-unknown-linux-gnu.tar.gz": "aa4cf0b7e66a9f5b7c623d4b340bb1ac2864a5f2c2b981f39f796245dc84f2cb",
+ "rust-1.73.0-x86_64-unknown-linux-gnu.tar.xz": "45a6fabaea481d27165a05ed1d6706ee452f6d3e74f50d8a00533cfb00fe355f",
+ "rust-1.73.0-x86_64-unknown-linux-musl.tar.gz": "c888457d106ccd40288ca8db1cb966b23d719c9a128daca701ecc574c53773d4",
+ "rust-1.73.0-x86_64-unknown-linux-musl.tar.xz": "a9080831c10dcdea551874bc94b698cef3bd11d99e2c0a56ad904f586bdc8da4",
+ "rust-1.73.0-x86_64-unknown-netbsd.tar.gz": "667f93b465747183561c9507a68a78ac7854ed6b808ca79ec2901e1ef219d464",
+ "rust-1.73.0-x86_64-unknown-netbsd.tar.xz": "8ad2d346995fc65ffcfdcd49860e2491aac2a626e162baad8423f9494d60afa7",
"rust-src-1.26.0.tar.gz": "d02fe6fd5c0f330656e9ff0a290ebf23cab7c909f96ce1838247fadc117eb1dd",
"rust-src-1.26.0.tar.xz": "7d313fdecb23afd07826b62360f63c40ca8c12730b00b7cecf2c53098039e326",
"rust-src-1.26.1.tar.gz": "19ef8113ae53ec7ea8f6772a5c9ce5a3dfc28b1bddd800841fb5bbec33fa3619",
@@ -26688,6 +27318,8 @@ FILE_KEY_TO_SHA = {
"rust-src-1.72.0.tar.xz": "b21a44e3cb46a73d2e2d0441a92c401396d4ba6e11d798e5adec4d3b8fc423e6",
"rust-src-1.72.1.tar.gz": "fb5629b21129c940daeb04a325df34b5dd7d6053c93fe3b3460794ef82012d69",
"rust-src-1.72.1.tar.xz": "fbf7cca0dcb83d4fd0a037804d0ed9db7a486435cb86645a5608b02ccbbc30e0",
+ "rust-src-1.73.0.tar.gz": "6efb21f20258c7e5867ece2ccd8d747b2351e5403a288d4454d26e82d1efadb8",
+ "rust-src-1.73.0.tar.xz": "e587179add7469da7ae38237be7fa9d04c37535a7a75a01772a05e822f2aff71",
"rust-std-1.26.0-aarch64-apple-ios.tar.gz": "3a7e296ad2ca8d400beb6b66da3584c09f5876b81df930e24f8859ab2dd7084f",
"rust-std-1.26.0-aarch64-apple-ios.tar.xz": "f0ba507d29d36f420b525a3f8466408c2e0b3730c38eae7ef5fa33229beca45f",
"rust-std-1.26.0-aarch64-linux-android.tar.gz": "4f19063a4872a68cb26c9008508e470a68360227b834b1930278b2df420e63e1",
@@ -36650,6 +37282,176 @@ FILE_KEY_TO_SHA = {
"rust-std-1.72.1-x86_64-unknown-redox.tar.xz": "4b49257abf15a99167c8a18424dc32c27fce39e29ba2f33e37788ab942ba89f5",
"rust-std-1.72.1-x86_64-unknown-uefi.tar.gz": "526e811add4eabd7d5498f713d4e5e21aa9ab75e0ec1ea73b8e769e44ae5b9de",
"rust-std-1.72.1-x86_64-unknown-uefi.tar.xz": "92ad3f577c2b256c569d09ed960253ec973f78b08be87f95cef5fd275ec41145",
+ "rust-std-1.73.0-aarch64-apple-darwin.tar.gz": "651d9ccf5282c67b4f5bcf0eb194b0d29750667271144c3921016a018e33e3c5",
+ "rust-std-1.73.0-aarch64-apple-darwin.tar.xz": "25818c9b2ca878076892504bfc9504a24f638be3de23691a548dc094f08c0172",
+ "rust-std-1.73.0-aarch64-apple-ios-sim.tar.gz": "ea324a61b86a1bfc0cc9e777d2f7c466e4862f164d54f897ebe519d0f8418670",
+ "rust-std-1.73.0-aarch64-apple-ios-sim.tar.xz": "3fbe2a9e31f30f6f8c7b106faaf5ca2a1a6db6bfc4a469d5a295985e65f7eb54",
+ "rust-std-1.73.0-aarch64-apple-ios.tar.gz": "1facbc739ff729baaf5770182e5298f0a582180e5b8933f3618c0695d1fe380b",
+ "rust-std-1.73.0-aarch64-apple-ios.tar.xz": "b88b04feb469772d210e20ff2e811f5ca6f0c899e11f37a4e31bb23b3d495989",
+ "rust-std-1.73.0-aarch64-linux-android.tar.gz": "5eaddfcd2094dc402bd36fb9e5ce0d1706f5295fca6cef139c896607d516328f",
+ "rust-std-1.73.0-aarch64-linux-android.tar.xz": "88c2b5a3024f2a52b8470b8f19ab39c1d2efbab3077a27032bcf7bf4c909c7b7",
+ "rust-std-1.73.0-aarch64-pc-windows-msvc.tar.gz": "63e8ef371f6536df347c2a3ccd0a94dd00298fd9762da0e2af48b29a05f841ba",
+ "rust-std-1.73.0-aarch64-pc-windows-msvc.tar.xz": "654b0c7a33f96ed7c94b381b2b4096527532dff7b3b6d8a696f17201f95d2acb",
+ "rust-std-1.73.0-aarch64-unknown-fuchsia.tar.gz": "de39017a43282149d8371009e763cc3a428e28ecac47198a62084ce8a78b72d8",
+ "rust-std-1.73.0-aarch64-unknown-fuchsia.tar.xz": "f30595abbe82afca60fcc96f4db42e7b5466b69018ca590183770704a9b0af82",
+ "rust-std-1.73.0-aarch64-unknown-linux-gnu.tar.gz": "47f2f904befca10a5f6dd68271a343b3700e651c67e25e723d4a4a0e2b4e445b",
+ "rust-std-1.73.0-aarch64-unknown-linux-gnu.tar.xz": "cbaa2549b3accc63b424251fadc3a66d922541df22e736a355246d81998f4252",
+ "rust-std-1.73.0-aarch64-unknown-linux-musl.tar.gz": "ea4a46131c39b27a4d8a74e3ee0d63a70df7995683828f87fad08fccf5592fd8",
+ "rust-std-1.73.0-aarch64-unknown-linux-musl.tar.xz": "bedb1879079a06b6f4fd75caa77ef6919fbcf646d945d4ce4a0cbfd4d3d1411a",
+ "rust-std-1.73.0-aarch64-unknown-none-softfloat.tar.gz": "1f63c641dfc3fbb3beb3189bb3e15a7d82d90362f5b63e78c6c9118ed6bcaf85",
+ "rust-std-1.73.0-aarch64-unknown-none-softfloat.tar.xz": "642de87868928e3ef63b896e54459b23d0fcd3eb7e6966ef3d431ea1eb39e5d0",
+ "rust-std-1.73.0-aarch64-unknown-none.tar.gz": "ec16910716ebf19e3d360f21aed857bf4218cd8b3a783f243c04653f1331485b",
+ "rust-std-1.73.0-aarch64-unknown-none.tar.xz": "1e4b01bcd667f37e93e933feab6cb245a3cb67aa21ebbecd92d773738b68a46c",
+ "rust-std-1.73.0-aarch64-unknown-uefi.tar.gz": "bb5cec68529fcae069c2ae3a3c769b14d3d5f0f1257ada2034b76473546671b4",
+ "rust-std-1.73.0-aarch64-unknown-uefi.tar.xz": "df624b39267712327688302248a334309f9d034dab3a10aa0e6eb3f4f3e97489",
+ "rust-std-1.73.0-arm-linux-androideabi.tar.gz": "85c2b28e3c1dcc694612c8212441bd210b9eb216f9b0e2850e12176f48fc08d1",
+ "rust-std-1.73.0-arm-linux-androideabi.tar.xz": "344907791142ba3d3a73aad6bf7461d1f0467b49a631a56d9c84aa91f5a6989e",
+ "rust-std-1.73.0-arm-unknown-linux-gnueabi.tar.gz": "00b26559bff1532b8c2a2adf9f39447f0d40ee18152382d01dc77a8bbf1a9bad",
+ "rust-std-1.73.0-arm-unknown-linux-gnueabi.tar.xz": "ff3e3c592a3ee552b8c0c4130fb276db3d79bfad2f479c5b64a9cac48e2d0ada",
+ "rust-std-1.73.0-arm-unknown-linux-gnueabihf.tar.gz": "4f2e613aba4053abf0d3e519bc366420922dc48b175f6d30ee449355ca2a786f",
+ "rust-std-1.73.0-arm-unknown-linux-gnueabihf.tar.xz": "5e21a4776d5bf00f9f938da43dcbfd0246932f9d23a5c0e670f917319dc93182",
+ "rust-std-1.73.0-arm-unknown-linux-musleabi.tar.gz": "876d1a2e5e79865c96413592264832bb04b56d5c92b3eb46f56d7b189df24674",
+ "rust-std-1.73.0-arm-unknown-linux-musleabi.tar.xz": "0dac8ae3a12c0f24970225779d3a3a74aa58d61b1e6caff776d27bea3c277a13",
+ "rust-std-1.73.0-arm-unknown-linux-musleabihf.tar.gz": "f10a744d05a39e048794818ead20fa5482ef5001d04262d49a83d9bff8e8dafe",
+ "rust-std-1.73.0-arm-unknown-linux-musleabihf.tar.xz": "e8cb2aa3fe45561ddabac0651169c51458197043beac0a98977740c8933aa4cb",
+ "rust-std-1.73.0-armebv7r-none-eabi.tar.gz": "93ef36b006ccac218ee77ff28c7fcd5774bb4fe228f832d33d7ec77634176d21",
+ "rust-std-1.73.0-armebv7r-none-eabi.tar.xz": "0d3d290d2238b392909e4759e693bbc423c3085845d8190a5d07145c2c7992e9",
+ "rust-std-1.73.0-armebv7r-none-eabihf.tar.gz": "12b941f90848dec3eee75e572e816724bdb4c53784aa7919631f7eff647b7822",
+ "rust-std-1.73.0-armebv7r-none-eabihf.tar.xz": "45e961a4b7e3da572e847edf9c86969c239e84998764912a2110aa9d0fa528c2",
+ "rust-std-1.73.0-armv5te-unknown-linux-gnueabi.tar.gz": "0819db0eb290d52c1c2329a81120bf9c903af14467694c250c5f1051be2faf0d",
+ "rust-std-1.73.0-armv5te-unknown-linux-gnueabi.tar.xz": "1458293c9c03ba145d80e270f6d8c6c88342cac47a4251913e9c935024d32bb2",
+ "rust-std-1.73.0-armv5te-unknown-linux-musleabi.tar.gz": "c0aa0452a3ccdc6eab70b4e6f09a00fae1ae8c205c21d68607d8c70319403ce8",
+ "rust-std-1.73.0-armv5te-unknown-linux-musleabi.tar.xz": "56076706cf46aa207d267fb866c6336318a05a7219eb897a9cab08e270d9b3ba",
+ "rust-std-1.73.0-armv7-linux-androideabi.tar.gz": "2759afc98b442cf0151646763bbc22f8bf4f99653d118d972cc9dd963bfab102",
+ "rust-std-1.73.0-armv7-linux-androideabi.tar.xz": "59fb2c3b4d0cd0383707d48ba787f917cbc64907ef1d994d0756e877a9c09939",
+ "rust-std-1.73.0-armv7-unknown-linux-gnueabi.tar.gz": "5122ce0b8daf1fb06eec01858a098da252bb4fc5811e134b0538ab365a421a2a",
+ "rust-std-1.73.0-armv7-unknown-linux-gnueabi.tar.xz": "3a7a5f702c775c7b331b75e1b4d114c6c30982c21319c15af74bb16bf68fdb74",
+ "rust-std-1.73.0-armv7-unknown-linux-gnueabihf.tar.gz": "d6b645f127517c9553af2eeb919e120a59d84b2b035334a11a734f2ddc7775ca",
+ "rust-std-1.73.0-armv7-unknown-linux-gnueabihf.tar.xz": "a2603ddc66fca8e94ab961c27cca7c7838292be683684b71f47b89d2dd0daee1",
+ "rust-std-1.73.0-armv7-unknown-linux-musleabi.tar.gz": "f28247ee917af2a39369c4e3c64320f63dd4d0396d0e1db6001763a22784412d",
+ "rust-std-1.73.0-armv7-unknown-linux-musleabi.tar.xz": "bced22d26e4614e272efb5dcbe27d724fbc7d8e012ca6b4738ad217ad9f09d0d",
+ "rust-std-1.73.0-armv7-unknown-linux-musleabihf.tar.gz": "b314174907b4f4127e61f8c61580be4dcdd8354dff471c39d6e3573742142402",
+ "rust-std-1.73.0-armv7-unknown-linux-musleabihf.tar.xz": "f6210eb6a81e5a31f7555596a58e010e3d5df1ce4e1caba14fb52daa82da1d30",
+ "rust-std-1.73.0-armv7a-none-eabi.tar.gz": "43908a23e03011e2e4235d3988d3bfab7b149b333026034a3f5605f7fa488643",
+ "rust-std-1.73.0-armv7a-none-eabi.tar.xz": "d17b4ed053164e778dfa99d89c26fe8ec9976129fc29c1cd6c4b65efc3b873eb",
+ "rust-std-1.73.0-armv7r-none-eabi.tar.gz": "ebfd8cd8778a3c5ea7f3308b2da98cc260602218105cebb77ff567718178a182",
+ "rust-std-1.73.0-armv7r-none-eabi.tar.xz": "1a6cc3497d73239e8866405e846b020c4aaf249bbfd81c81a1d16f2e1caaf6b9",
+ "rust-std-1.73.0-armv7r-none-eabihf.tar.gz": "ad78f4221805356cb8277bd2cb2d90fa2d4ce207a97d5e94074b25f4d271e4fd",
+ "rust-std-1.73.0-armv7r-none-eabihf.tar.xz": "90ee8b68bd20b8e8350cee613689773755f887a84e7f0f32899be41e6c5fd6b8",
+ "rust-std-1.73.0-asmjs-unknown-emscripten.tar.gz": "5840125b5f17c582192ac5b6d59429e656c73ec95b52880664d542e5ccac3634",
+ "rust-std-1.73.0-asmjs-unknown-emscripten.tar.xz": "9b050088caa4e56814d2d4c7ee7a60ba1fd8b9811181b816c0c46f84cb88ede0",
+ "rust-std-1.73.0-i586-pc-windows-msvc.tar.gz": "21cd82e7447232c655097a9b939798b8a09ad20b79936b50919e8742cbd88854",
+ "rust-std-1.73.0-i586-pc-windows-msvc.tar.xz": "7e9b0e25c9659eba254cbc56bbfc156bd5d988ce0a56895103b1a1eb950986c8",
+ "rust-std-1.73.0-i586-unknown-linux-gnu.tar.gz": "36d540407f298067b66048101a84551ef819c5d6aa20fbadc81ebf7eb0fa7f52",
+ "rust-std-1.73.0-i586-unknown-linux-gnu.tar.xz": "02cfcb9bae68c406b5cab9aad74ac8631fa4fdd9246aac2e4d4c0aeafbcad42a",
+ "rust-std-1.73.0-i586-unknown-linux-musl.tar.gz": "b22bd5785b56015721dd6ec929201345473aeba6642cb9caee1b4925ce005f8d",
+ "rust-std-1.73.0-i586-unknown-linux-musl.tar.xz": "8e890effc060db56d4768d8a8e5dc8119773e2b015ecf4ad1491f3abb37156b9",
+ "rust-std-1.73.0-i686-linux-android.tar.gz": "11edc3ac59dbad950e8526a48eef238b1c337ac32d2135d9d879bd0e8595321c",
+ "rust-std-1.73.0-i686-linux-android.tar.xz": "b8f026f1e36740a3cc0372fec9ac1b72ed826a75985ba27f9961bd351f9ff270",
+ "rust-std-1.73.0-i686-pc-windows-gnu.tar.gz": "07ec6d91ae4866c13238b3bd81653c0693169d86b31cacf6978e45138525e33d",
+ "rust-std-1.73.0-i686-pc-windows-gnu.tar.xz": "ce72b620b02914bd8cbb4f084a9e01da50d4ae14e089badd961e9a784ae2ab99",
+ "rust-std-1.73.0-i686-pc-windows-msvc.tar.gz": "447ff95ae36a626e47b9b8b21663f1858b3869152ea1dc4b2b979d68bb8fde58",
+ "rust-std-1.73.0-i686-pc-windows-msvc.tar.xz": "0b8515a871cce30a2e887914d3f95379652a0cdcd9339d6ab1648478d8de8f57",
+ "rust-std-1.73.0-i686-unknown-freebsd.tar.gz": "b97901e7d01e1e6386f28bf8d59d09ceed1248368109f09fc02e2ee6de2ae772",
+ "rust-std-1.73.0-i686-unknown-freebsd.tar.xz": "5a4c6818d53497fe011cde3cc0db97194dd33e29a807ef05b72271cf07bc32ba",
+ "rust-std-1.73.0-i686-unknown-linux-gnu.tar.gz": "75f92f0e33c6724cb1876625289126fcf2d101fc6e30ab5a34309e618d6e06a5",
+ "rust-std-1.73.0-i686-unknown-linux-gnu.tar.xz": "c46936bf3c921c90593b6ea77a08b1ec8b240c8184b287fd89fea636ac437b25",
+ "rust-std-1.73.0-i686-unknown-linux-musl.tar.gz": "e76a24f65256ec1d00101ddbd3b91434d7a4029d0e68ba36574b61f7e30056ba",
+ "rust-std-1.73.0-i686-unknown-linux-musl.tar.xz": "661abedfa02937b0a80fb0a9c95c329c6557445e14bce0a38cf1eaa52bd0b2db",
+ "rust-std-1.73.0-i686-unknown-uefi.tar.gz": "855f31d5dbaf03d4d3281a7dacb813a0f803c6c76fe065027a3b59133ff0f167",
+ "rust-std-1.73.0-i686-unknown-uefi.tar.xz": "2a20aa6399db99c9a0ef109c259247d3f5f3d7e93892884101e9ea3168a33d33",
+ "rust-std-1.73.0-mips-unknown-linux-musl.tar.gz": "a022d67fead972a75c06a357e093326c446049129fd8333dcad4842a13b48f5d",
+ "rust-std-1.73.0-mips-unknown-linux-musl.tar.xz": "18077459bb25f288dee41330dfc53990cdb878991346181f44247e8132609988",
+ "rust-std-1.73.0-mips64-unknown-linux-muslabi64.tar.gz": "fb70dd02ecda2983a8ea1a2efa0741cbf70f153dea6b1b76fd30dfd5aadcbcf3",
+ "rust-std-1.73.0-mips64-unknown-linux-muslabi64.tar.xz": "536f17c440c68c566f467a94c762d5ebc604b60c729e55d74cccbd07a4ff848a",
+ "rust-std-1.73.0-mips64el-unknown-linux-muslabi64.tar.gz": "472cf11a105d8a04cb7681ff15d0f640938aff722ac8d6f22c473bc19184f8f0",
+ "rust-std-1.73.0-mips64el-unknown-linux-muslabi64.tar.xz": "cf81ece0565ba8afda0ce59098d8bf208e7d5c0f6d0a26e93c9184e41857ab0c",
+ "rust-std-1.73.0-mipsel-unknown-linux-musl.tar.gz": "c4f0d0ee36a05f8bbe7d95dc495a9ed071589ed2916a64953589829f0744b3c4",
+ "rust-std-1.73.0-mipsel-unknown-linux-musl.tar.xz": "a7a1cc9bb8314b64c50ee69d8722ba4fd2b00344646f0e7783b17d341dd3a10a",
+ "rust-std-1.73.0-nvptx64-nvidia-cuda.tar.gz": "2c9480db356bcda33bb00c3849ee27e29437db8c55fdb00e4cce766702aac63f",
+ "rust-std-1.73.0-nvptx64-nvidia-cuda.tar.xz": "7d18b15f6fb5f33800ba279b761f4acfdb1e199fda04f5d444a42eb1435cc896",
+ "rust-std-1.73.0-powerpc-unknown-linux-gnu.tar.gz": "49692419b05e82adf1099ebc17468f9bc3d411f5d42d39ec77c13473f2b5ea2c",
+ "rust-std-1.73.0-powerpc-unknown-linux-gnu.tar.xz": "bed705726b356d318a0fc34bbf1a1bc4cacb61bfc20889bdfb77d3aaebbd406a",
+ "rust-std-1.73.0-powerpc64-unknown-linux-gnu.tar.gz": "43bb5f678682f1d7e87eca812c8612f900ecb6f8d907def65ea423d96a0b7638",
+ "rust-std-1.73.0-powerpc64-unknown-linux-gnu.tar.xz": "c7bb65f4b7b59f65e4db8a0877192f59dce12021c866e2ef86014d99d18a23f5",
+ "rust-std-1.73.0-powerpc64le-unknown-linux-gnu.tar.gz": "3541ba35884afdc7d88c3fca1fa6bebb9b0dea768592316e842c95d9df0db400",
+ "rust-std-1.73.0-powerpc64le-unknown-linux-gnu.tar.xz": "a74d300dbf1fbf2d4af80995db19501211e2bd25572ab45748b48df4448d4656",
+ "rust-std-1.73.0-riscv32i-unknown-none-elf.tar.gz": "0b1ef8c786331fc829734d8f68308391f260083f2d69c3bac831562e575977ac",
+ "rust-std-1.73.0-riscv32i-unknown-none-elf.tar.xz": "ebca371337af8ebfa291a8bc01a84c791791d92da7a2167810b93eac94a68eb5",
+ "rust-std-1.73.0-riscv32imac-unknown-none-elf.tar.gz": "4bbbb4f474be024e67d3863edcfa72b612ddf8e544827470d4406e19d2e07a20",
+ "rust-std-1.73.0-riscv32imac-unknown-none-elf.tar.xz": "4ae953c4af46a4286f13bd24c67e0a7756265c3ee412ad0aedd1a194e19daf47",
+ "rust-std-1.73.0-riscv32imc-unknown-none-elf.tar.gz": "e92d10ad99d96083d6c54382f449de3f35b816c72ffe341e6453999150193f4d",
+ "rust-std-1.73.0-riscv32imc-unknown-none-elf.tar.xz": "0133978b2cf68c8b9a3e9bc1c01295a4d394998f8801445e854ecfce3f57cb94",
+ "rust-std-1.73.0-riscv64gc-unknown-linux-gnu.tar.gz": "18438669633be274ac50011bd4c8b9ae2d94174c9eb5a219569ad9add7429e23",
+ "rust-std-1.73.0-riscv64gc-unknown-linux-gnu.tar.xz": "8b58ae17468f2f2768b470f532a1ba9668dc778c242cc9dfc022ea1ebc962f63",
+ "rust-std-1.73.0-riscv64gc-unknown-none-elf.tar.gz": "4109e997234957866753504e7f62802fbfa2f9e73e66b75db9f0db84eed54585",
+ "rust-std-1.73.0-riscv64gc-unknown-none-elf.tar.xz": "4bdd977bcfb629731956188cd5670050afdacb3c48265f15a055cb6f701739dd",
+ "rust-std-1.73.0-riscv64imac-unknown-none-elf.tar.gz": "98b944ff9738a1760c679e639f9fa134253f5f115af5b52c878e41a6b246bc30",
+ "rust-std-1.73.0-riscv64imac-unknown-none-elf.tar.xz": "53303c963ba923ef4e57838e49fe617dfcf5fce084893413e0a9f4dd541bc105",
+ "rust-std-1.73.0-s390x-unknown-linux-gnu.tar.gz": "537c6e932cafbdbfb8c5365dee7b80bff69b4fd7aa4426c4997f1aa9839ad1e3",
+ "rust-std-1.73.0-s390x-unknown-linux-gnu.tar.xz": "545b97978470135f8726fb82970acb882b9d57a724c2462ee90efee47429fc84",
+ "rust-std-1.73.0-sparc64-unknown-linux-gnu.tar.gz": "d611d45bc18e95f88d62231602cea88c4f818649a0ac99e6043042da59e11482",
+ "rust-std-1.73.0-sparc64-unknown-linux-gnu.tar.xz": "717846830d95a689fb44dbafc4f4e09285bf7bc2c37bcc70f6d17785c21f4569",
+ "rust-std-1.73.0-sparcv9-sun-solaris.tar.gz": "6c2c503eb925badce557ae47e29d808ce1b842d009b69a371fa387685ad05106",
+ "rust-std-1.73.0-sparcv9-sun-solaris.tar.xz": "856dd0969ad1de3631ebaab7dd0bee4d4bb57df9fad7b94750fb3a2a8d3d191f",
+ "rust-std-1.73.0-thumbv6m-none-eabi.tar.gz": "b9c232a7926feb3704feb14903829eabc71ba2910657a314115f7bca1041330b",
+ "rust-std-1.73.0-thumbv6m-none-eabi.tar.xz": "47a6e78841c9e1b0f4cd11251a9ee6aaa8c42e5c491a41842738befe84d3467a",
+ "rust-std-1.73.0-thumbv7em-none-eabi.tar.gz": "1003f9923c56efe846504b890ebfa442fac08b898fc8d0d4dc5ee4d3a717baf9",
+ "rust-std-1.73.0-thumbv7em-none-eabi.tar.xz": "ccc60a7d07010a3414112adccc5e46958333d54ad8c8282e11b8be8aa1d08d9c",
+ "rust-std-1.73.0-thumbv7em-none-eabihf.tar.gz": "9a5c605744f5132c89d8270cfca662e4cb39a5e43f86348fff8ef712a553321d",
+ "rust-std-1.73.0-thumbv7em-none-eabihf.tar.xz": "b5d8eed543402f4f147c4a1848517089f56d0bed9dd42404efb3f7feca3aa322",
+ "rust-std-1.73.0-thumbv7m-none-eabi.tar.gz": "289cd380e185675598e45645d8d12d97a45f02cd2cbf900ff36d3587314f04a1",
+ "rust-std-1.73.0-thumbv7m-none-eabi.tar.xz": "a62b36d3c510324666d11cf138cf9c15f6e1c35f6738bc4fc2aff711be747dc6",
+ "rust-std-1.73.0-thumbv7neon-linux-androideabi.tar.gz": "329af84c913b3a84a137542ca0a42a537ff7046ba0397639dd6725b3068b2cae",
+ "rust-std-1.73.0-thumbv7neon-linux-androideabi.tar.xz": "4ede4a8ba3c56f95fa33fb3ceac7e8488d7dd248a83786b76e5d9f5fedd3c2ea",
+ "rust-std-1.73.0-thumbv7neon-unknown-linux-gnueabihf.tar.gz": "12a862561090e64606bcdb0fee285a4316b6fffc7f231b36f700e69e8e99a3fb",
+ "rust-std-1.73.0-thumbv7neon-unknown-linux-gnueabihf.tar.xz": "3417c665a0b8fa532b93ceddaa5a0cf540b3d6d76cc6717ec1888e76e363c491",
+ "rust-std-1.73.0-thumbv8m.base-none-eabi.tar.gz": "b47e09c25c012545bee76ace1a634148c6f8301937481e3d1d9c864ba84b4cfc",
+ "rust-std-1.73.0-thumbv8m.base-none-eabi.tar.xz": "2402e54f11bca414f6627b92cfc9ca011ac1e141a95e73c48c320eb2c9bf2585",
+ "rust-std-1.73.0-thumbv8m.main-none-eabi.tar.gz": "a4886e73b84ee1d65db545d55165f74df16dc2276ba59e3c87e60fb672f7865f",
+ "rust-std-1.73.0-thumbv8m.main-none-eabi.tar.xz": "52086549988734b2568c39061521e989592d144bc5ba7a737d7e7fb69c19e429",
+ "rust-std-1.73.0-thumbv8m.main-none-eabihf.tar.gz": "451033af0c2526b55614d1f271bf10e059c5c3acc202e8f7aaa98cb90e486b3e",
+ "rust-std-1.73.0-thumbv8m.main-none-eabihf.tar.xz": "5ad7fbeb80a020976e0a314eb72f860c530019608111abda455a5d8775a68cb0",
+ "rust-std-1.73.0-wasm32-unknown-emscripten.tar.gz": "3e1a17c71d3eaf113d6d09b0a5560eda7541c29c71d694d25daa25dbdc936cfa",
+ "rust-std-1.73.0-wasm32-unknown-emscripten.tar.xz": "4158dbfa17168685b1334eece9feccd0c0be4650770b218cceb8e0119ec7baf0",
+ "rust-std-1.73.0-wasm32-unknown-unknown.tar.gz": "f5b840b93f00db0785c32f5193b6e3492fe4c626e148a5ebffe07184b6435104",
+ "rust-std-1.73.0-wasm32-unknown-unknown.tar.xz": "466336ff685a0d864b0aa8f6ac2d2c242eae6c67ad746857e523b9351eee2a37",
+ "rust-std-1.73.0-wasm32-wasi.tar.gz": "d439a6c28eea3a1972acd2b66d943048ac22a81e4389d50b2a1d7612d75c550c",
+ "rust-std-1.73.0-wasm32-wasi.tar.xz": "fa4d9105f9da44f8c5852335e52378bda44c3edaafdd11ec4c672c39f00d7d5b",
+ "rust-std-1.73.0-x86_64-apple-darwin.tar.gz": "1726086f74e6348a95286dde2810c5da6f9591cd5989f38178026fcd4b720b9c",
+ "rust-std-1.73.0-x86_64-apple-darwin.tar.xz": "18055852bd8c0cc325bc94847a814678e98703a0301b46497dafc6cef7aa2f8d",
+ "rust-std-1.73.0-x86_64-apple-ios.tar.gz": "95f8300e5421141f9f9a8f45b866106724e00d9f307d7b880a046cddce5f73d4",
+ "rust-std-1.73.0-x86_64-apple-ios.tar.xz": "698a4afd48f154d7bbd224198f332491b1d34af6c86dc6e37bd5a862b4fc4032",
+ "rust-std-1.73.0-x86_64-fortanix-unknown-sgx.tar.gz": "8fce2acee651ef36195c2e2b075877c153e1d14f8f83c2d764eb78ff1b90b2af",
+ "rust-std-1.73.0-x86_64-fortanix-unknown-sgx.tar.xz": "6e2b43723a386e5de74eb2c9f61eba966f4534ff2b00a0e925eb861b80416808",
+ "rust-std-1.73.0-x86_64-linux-android.tar.gz": "2c07f989cfb5596b69c70681049337299298ab0823c8a06f099545317460520d",
+ "rust-std-1.73.0-x86_64-linux-android.tar.xz": "a0bb99d568c7a9ffe56917fca64c8c2536e07316498aeb2b8f4c72cc03590f2e",
+ "rust-std-1.73.0-x86_64-pc-solaris.tar.gz": "6d4f1be71630d038eeb61c071270ee0075f712528e683e9b07a873cb287d7bc5",
+ "rust-std-1.73.0-x86_64-pc-solaris.tar.xz": "ba15bd84d3635c8ed2912595f5ee79b6ce0d09059a671e14b420bb8d20e1079d",
+ "rust-std-1.73.0-x86_64-pc-windows-gnu.tar.gz": "e896226c1b9807b6f4b059a30e2a85d26d808b53f13a2e28fd5c77d60d32aa18",
+ "rust-std-1.73.0-x86_64-pc-windows-gnu.tar.xz": "3e957e062a607b317f55bb72efe4265e22d3ed0897b227f74c403cbb42b9025f",
+ "rust-std-1.73.0-x86_64-pc-windows-msvc.tar.gz": "ea7da24247ce6d39bb3fd3fa7f4b50b297d06d53ebfee8c97c5393399963a907",
+ "rust-std-1.73.0-x86_64-pc-windows-msvc.tar.xz": "5e50b20108e036e8176bef4223a09adea310253ea774003b64154bee6e83464c",
+ "rust-std-1.73.0-x86_64-unknown-freebsd.tar.gz": "44856b9d812c0b66be580da51d668d3b802c7513bf79a23ee9e56ca9dd56ae84",
+ "rust-std-1.73.0-x86_64-unknown-freebsd.tar.xz": "c34d6635b714f56a040532e05f0949a1bf2dd1ea105c12a591dc338db97a5e29",
+ "rust-std-1.73.0-x86_64-unknown-fuchsia.tar.gz": "4cc3ebd6eb9dcb86c7b5c5f5bcc6b4f6f1f90c47716424b89b1fa46519459362",
+ "rust-std-1.73.0-x86_64-unknown-fuchsia.tar.xz": "fdd2258f3515e170faacec7bfeacc20e807f691fe715413487e8a371f6306f40",
+ "rust-std-1.73.0-x86_64-unknown-illumos.tar.gz": "7d963975b386c9aec11fb9a98297ec4d96812adad9275b9334e53fa40273203d",
+ "rust-std-1.73.0-x86_64-unknown-illumos.tar.xz": "88a3500c8050b1a3dd65c02e1d71edd674dca90b2b3f3508fcc9ff67a13da906",
+ "rust-std-1.73.0-x86_64-unknown-linux-gnu.tar.gz": "9e941972c8679c2d852addf979455afd61e3ec33000cbc2421b162bcb05897a6",
+ "rust-std-1.73.0-x86_64-unknown-linux-gnu.tar.xz": "96efb163a57b400152c357be0ea3a0dd902b56cc0df662b9ac951403c7c7b15b",
+ "rust-std-1.73.0-x86_64-unknown-linux-gnux32.tar.gz": "1cac7e5c3f51357b0f9ccd1b890b3f9ec98512130f47b4a8fee84ea7edfacc55",
+ "rust-std-1.73.0-x86_64-unknown-linux-gnux32.tar.xz": "7538151d6051c2d81947e23756ad944e6bfdecbef656afcc272f8c16a62896b7",
+ "rust-std-1.73.0-x86_64-unknown-linux-musl.tar.gz": "3a0fd7481cf66c4d2e237e07a4b84887efe6099cdcb948c7cd7409ebd56d54be",
+ "rust-std-1.73.0-x86_64-unknown-linux-musl.tar.xz": "c89f5164edffbda4a21212c1e74260021634bda43fbe6d5e4fe9f7e85a79320c",
+ "rust-std-1.73.0-x86_64-unknown-netbsd.tar.gz": "6c65b43d365aede858cbea7b4bc3ae3ca922a6c84ef2a1a80d7a057bd238a871",
+ "rust-std-1.73.0-x86_64-unknown-netbsd.tar.xz": "56a7e9a6040246b592a22299cff485e59ffd7edaacd4214b7fa1382f0f4ab39e",
+ "rust-std-1.73.0-x86_64-unknown-none.tar.gz": "0eccf976aad1b951b92effaa4ca6c62bc0e0a065ab63a13c597bb7a09027464e",
+ "rust-std-1.73.0-x86_64-unknown-none.tar.xz": "159f55c4957bc39d3ab0900ca8fdb50d7fe03f659e984bb9411108478d669765",
+ "rust-std-1.73.0-x86_64-unknown-redox.tar.gz": "acb10b1ecba550c6c41804c0deae2643375f0c83bbc692d23c0e6e6286c2724a",
+ "rust-std-1.73.0-x86_64-unknown-redox.tar.xz": "c0d0a93a8003a4096b745eeccd338e79262c59ae0e6292d80673c868ffbfca29",
+ "rust-std-1.73.0-x86_64-unknown-uefi.tar.gz": "f9fb7f7cbe6d4279cefb7e9715dd41b6b086b8fed010a405b4d824fb31d1a7f2",
+ "rust-std-1.73.0-x86_64-unknown-uefi.tar.xz": "eab427bfcdcedb896d77f38f43a19b7d7fe7eed4d1d333da7cb35cb5304dfa6e",
"rustc-1.26.0-aarch64-unknown-linux-gnu.tar.gz": "ddddaddb585b95d81854171ac4e02d07790505853cee3034f199c8b7897f32e2",
"rustc-1.26.0-aarch64-unknown-linux-gnu.tar.xz": "859daf94bd0f9c14aa58af41c30b5105c49f28860bcebba3ddcd9699813954cb",
"rustc-1.26.0-arm-unknown-linux-gnueabi.tar.gz": "592e16e2dd90a897e753bd6158fa7ce4552273f5be618004f038cc2f3103bce7",
@@ -39872,6 +40674,52 @@ FILE_KEY_TO_SHA = {
"rustc-1.72.1-x86_64-unknown-linux-musl.tar.xz": "aa54389cd1b4a005987d3cbbcff0be89a09125803bd36c4fe0c4bb77e4a9272a",
"rustc-1.72.1-x86_64-unknown-netbsd.tar.gz": "71db9cd66786ab0bb06260ad1860f1d65269c06ac0bcbeee8f6b78534d3020ca",
"rustc-1.72.1-x86_64-unknown-netbsd.tar.xz": "5b7648b63e1fe209fe815e63627eaabd1a295be5f0b7139bd0870ce004fdb5fb",
+ "rustc-1.73.0-aarch64-apple-darwin.tar.gz": "f5c938b2aedaf3451e41b696875aab7f66c435d8245af3af1f61ec636b0e64ee",
+ "rustc-1.73.0-aarch64-apple-darwin.tar.xz": "a0cb60d97d18064a816fc4e1d55faef51aec807606fc467b99451355584e5763",
+ "rustc-1.73.0-aarch64-pc-windows-msvc.tar.gz": "b763325d37471e502daa7be88b811f2c80eed52c51161a917ce1397161b8ecde",
+ "rustc-1.73.0-aarch64-pc-windows-msvc.tar.xz": "83330743feed9dc75b4e98cf46d447ac89afb7e50aec17ece47f4268201f3fc1",
+ "rustc-1.73.0-aarch64-unknown-linux-gnu.tar.gz": "5f7141617b833f84a279b19e7c349b95e839d924e2a3ed3ae545b2d4ab55ce05",
+ "rustc-1.73.0-aarch64-unknown-linux-gnu.tar.xz": "628f57a45eb8143a7ac1acd5d6d01e3ae3cdf1ad11d151795ed765f6e5f3047e",
+ "rustc-1.73.0-aarch64-unknown-linux-musl.tar.gz": "26daef406cbde47dbd3d4ce463c66d91a25b8243eac31309735a9daf17ec9dd4",
+ "rustc-1.73.0-aarch64-unknown-linux-musl.tar.xz": "efd94902e11e173714160e44dc843af42e0c7b8820c41851982497bc9a616763",
+ "rustc-1.73.0-arm-unknown-linux-gnueabi.tar.gz": "099d9511c34f062b0db7614fa23af1552d2ecabcbe58e31c32bc329529d7088f",
+ "rustc-1.73.0-arm-unknown-linux-gnueabi.tar.xz": "6f6ab466fd67cefd7eaa2ceaa339cd80bfcc693c1b6b2c9fc3cc3cb893fa0850",
+ "rustc-1.73.0-arm-unknown-linux-gnueabihf.tar.gz": "9f6eb085a1795cf897b831e5c507b126fead0e5286e524307112a92942b84aa8",
+ "rustc-1.73.0-arm-unknown-linux-gnueabihf.tar.xz": "117a67a06e74de1ad386b340a50332ffd5cce3aac58d07b972091c94eee10d51",
+ "rustc-1.73.0-armv7-unknown-linux-gnueabihf.tar.gz": "31ba70b4cefeccf2a2300fc46fbfd3fc1c82239e483161da5c840f5130df9d65",
+ "rustc-1.73.0-armv7-unknown-linux-gnueabihf.tar.xz": "d326ee86d9acb29543053692f41cddd31a9f89cb3e25f58a57a38635d6c93532",
+ "rustc-1.73.0-i686-pc-windows-gnu.tar.gz": "9d2b55ad39289e646fdee02adddad49f7eee195eb62d14955bce7520cd2aebf5",
+ "rustc-1.73.0-i686-pc-windows-gnu.tar.xz": "a4546c61ce631e4fb45188f54682278f1813b068fadff4dabc4f209ba1592ce8",
+ "rustc-1.73.0-i686-pc-windows-msvc.tar.gz": "f7061c8789fc54329bea6f6188d7feff07eddc7776393ce0163dab49af2fe637",
+ "rustc-1.73.0-i686-pc-windows-msvc.tar.xz": "0b92409bec5c59d5bf5c34c9bf0717464d94ce1f8acd626a43cb2951c47744c7",
+ "rustc-1.73.0-i686-unknown-linux-gnu.tar.gz": "5399791a11a3d8617f680f02fc7f1c14fba1a0d27a1cc3a256e31678853763a1",
+ "rustc-1.73.0-i686-unknown-linux-gnu.tar.xz": "3d98a27c50ae79de7c7956506d649e169312e76b4fc2314a975b45ebd1dea5b9",
+ "rustc-1.73.0-powerpc-unknown-linux-gnu.tar.gz": "871f3de34a538c365bddb18da149aea11ae8b2bb270a65df842c694fcc4dc8f9",
+ "rustc-1.73.0-powerpc-unknown-linux-gnu.tar.xz": "2ed995d178158b8447b68c8642cffed2402fc7502c0d5475b7c9fdfa895dd037",
+ "rustc-1.73.0-powerpc64-unknown-linux-gnu.tar.gz": "0cc7bd1af776d29242fb7c7110629f956eab7fb6631d9bebcdffb7a8a3dcf5b9",
+ "rustc-1.73.0-powerpc64-unknown-linux-gnu.tar.xz": "9458ea1308e88ceb88dbc38d9d4918dc665d3c148a39789de417b0668fc45a3f",
+ "rustc-1.73.0-powerpc64le-unknown-linux-gnu.tar.gz": "50e85c6d60fb5e61b58ce51451849d4d8b882a72faf68647719e39b1c3cf9cf7",
+ "rustc-1.73.0-powerpc64le-unknown-linux-gnu.tar.xz": "c52d6f28d370e7bd30e07655d534a3aad21afc6c32f0c80e8a0f7249d2b86b29",
+ "rustc-1.73.0-riscv64gc-unknown-linux-gnu.tar.gz": "2e546d836fccce65edc50acc3b00216bda25fe5d9da012fec9f9d2ca3dff4133",
+ "rustc-1.73.0-riscv64gc-unknown-linux-gnu.tar.xz": "fee4b06850574de4821d335e622ca0607753e042848ba00ada826f8c8ca4b44a",
+ "rustc-1.73.0-s390x-unknown-linux-gnu.tar.gz": "564dd4d3b647eed655bebf9c1e3540bd6d411bec5b5c65a07281b192a5a20068",
+ "rustc-1.73.0-s390x-unknown-linux-gnu.tar.xz": "0ca1d450f10f2d87b630c5a19f3aad13f0e39aec63f253654ad9f68c7bf1872e",
+ "rustc-1.73.0-x86_64-apple-darwin.tar.gz": "4ef3199cbdb16f1001db1fcb880c1cc0c8a898b915f03faed7e5d1d553ceaf83",
+ "rustc-1.73.0-x86_64-apple-darwin.tar.xz": "eb2aefe3251967ceb9278a05317d3731e60f2c65b81feb0d74abe65d80683a54",
+ "rustc-1.73.0-x86_64-pc-windows-gnu.tar.gz": "b34895c82c7dac52054830b32a1e9856b734c6538959637727a4251810241742",
+ "rustc-1.73.0-x86_64-pc-windows-gnu.tar.xz": "95b11b8f8c96f7b2e4e0530fb36b9d28e0f6c71bfeb2b8509b87cc7cb09dfb99",
+ "rustc-1.73.0-x86_64-pc-windows-msvc.tar.gz": "86236a424befed9bcc93192dc1fb0ef83398460e94381834d095bae7cc61951b",
+ "rustc-1.73.0-x86_64-pc-windows-msvc.tar.xz": "be819e0210df90598fcc80bd3e80fef815a0e7c9363b7e130b1d133f4f5e6686",
+ "rustc-1.73.0-x86_64-unknown-freebsd.tar.gz": "2649e2612aefdda63f8ac70118632229b7739f863bf5f80d3ef4324ceab3add2",
+ "rustc-1.73.0-x86_64-unknown-freebsd.tar.xz": "e706d75704bc8b900ba7efaad5696e7b905ba6436175c6b58d0bf6854409d21a",
+ "rustc-1.73.0-x86_64-unknown-illumos.tar.gz": "53f8ff1bcf0834e861d0d0cc719561c4ce24c3cf8da9d3c0b9c10ee59d0eeee6",
+ "rustc-1.73.0-x86_64-unknown-illumos.tar.xz": "ab4854508c4dab64602779f269cf3f42ce13d80ce76aca6a6d66383014e25934",
+ "rustc-1.73.0-x86_64-unknown-linux-gnu.tar.gz": "31be7397a8a70fcb48e119925c9ff05554e2094140889ef9760b70a724d56346",
+ "rustc-1.73.0-x86_64-unknown-linux-gnu.tar.xz": "14f383eb4d6e65ce01cc99f2c5cf5a78744239f29704f72fe84f11095af779f5",
+ "rustc-1.73.0-x86_64-unknown-linux-musl.tar.gz": "406511c06def9be54dadbb738b748f93f7c991423a3f8b7ce47a131c5da0f0b2",
+ "rustc-1.73.0-x86_64-unknown-linux-musl.tar.xz": "e885398a10f5f4697dfb2b4e399bf9a0805ee8c11b9f9365ba4d803fef34d779",
+ "rustc-1.73.0-x86_64-unknown-netbsd.tar.gz": "7bc775b8edbb7bc3868a1a6e74725d3d335bea4d0eb93396d00d24fbcf6c6c33",
+ "rustc-1.73.0-x86_64-unknown-netbsd.tar.xz": "e2976be295c1d96b95b1c2c8e2226965ea3d25dac4b8e33566481cc86c2edabe",
"rustfmt-1.48.0-aarch64-unknown-linux-gnu.tar.gz": "28f7d1ef37c034033eb0e30a13e5f0ad5bbc506adb8a8a9c03adce2b0d4842d5",
"rustfmt-1.48.0-aarch64-unknown-linux-gnu.tar.xz": "24f5e32213cd81bbb854f836c4da44e31652b4f6dff3a9b5455d5433bffacf9f",
"rustfmt-1.48.0-aarch64-unknown-linux-musl.tar.gz": "e6efa0fae347f97dca3b892565302d35b4cedfee7cb6e2b5fcdb2801074fe018",
@@ -41744,4 +42592,50 @@ FILE_KEY_TO_SHA = {
"rustfmt-1.72.1-x86_64-unknown-linux-musl.tar.xz": "96cf10474616b0db54daf8c6ca64fd3d4b01dfd4788ae79c29bd9c22ec4e4493",
"rustfmt-1.72.1-x86_64-unknown-netbsd.tar.gz": "5f1772d9b05d136ef83483667cb8c274c5c1dc447e7af707476d82dc73b227e5",
"rustfmt-1.72.1-x86_64-unknown-netbsd.tar.xz": "c2b54aaca9fcefd9e81c0720ba504f7d3c4f7c244e3968357bbc770361635eb7",
+ "rustfmt-1.73.0-aarch64-apple-darwin.tar.gz": "ff5c456274433b57eb1676bcca289359d53aa4ae111f0e0fe71234f99a3b94fd",
+ "rustfmt-1.73.0-aarch64-apple-darwin.tar.xz": "445644e5b86e751e37a59b2a447d288ac74c11647829f3bd226328a5d1f96f04",
+ "rustfmt-1.73.0-aarch64-pc-windows-msvc.tar.gz": "75b5ac9fc6b845c02604ecf18b589127a939ba8add724bae221328561633cbc2",
+ "rustfmt-1.73.0-aarch64-pc-windows-msvc.tar.xz": "1ab1e0ef7727f153b6dd14ea36c71160b5558e722d5cadd9bed4bf69127ca0cc",
+ "rustfmt-1.73.0-aarch64-unknown-linux-gnu.tar.gz": "1f639d1f5d7fa1d3ef6031142ddf62f208e398c0fe5eab0849ce0c5e823be37d",
+ "rustfmt-1.73.0-aarch64-unknown-linux-gnu.tar.xz": "40f20c1fd8df568960464657d2cfcb472f96ec4b4a6c458df36987e14f894dbc",
+ "rustfmt-1.73.0-aarch64-unknown-linux-musl.tar.gz": "ace3f7a317f01f2c3e3ca1c06afaef5671bb2e5f0632530239c20b8768639367",
+ "rustfmt-1.73.0-aarch64-unknown-linux-musl.tar.xz": "1093857c0819d1defaf3583ab6531b3680df21edf32857842aa64223f77ef11f",
+ "rustfmt-1.73.0-arm-unknown-linux-gnueabi.tar.gz": "8d3e9ac46a50c8a26c8b9165d6d9ccb0521f8978cce5e398f790f39af363c9a7",
+ "rustfmt-1.73.0-arm-unknown-linux-gnueabi.tar.xz": "a3743bdb0c3450161df6db8e3281a3097fb828e28c41acedbd7dd0871395ad6f",
+ "rustfmt-1.73.0-arm-unknown-linux-gnueabihf.tar.gz": "0ee6a26eff962afa0e996f14076ec9aa5a8ed9265b473a57a9d96a20c83c7ec6",
+ "rustfmt-1.73.0-arm-unknown-linux-gnueabihf.tar.xz": "da92f695ce6d8ee42042cf061577b8c9985433f3113633bf08da65a9283e0176",
+ "rustfmt-1.73.0-armv7-unknown-linux-gnueabihf.tar.gz": "d364e733ba908e1c1fb90fc2ffd3b6ced347dd4acc3d0a6c913c54d3e356bd69",
+ "rustfmt-1.73.0-armv7-unknown-linux-gnueabihf.tar.xz": "0c6514c8a10c1aba0c1715f407f65dc82f68df4c39225269b2de95143c3adc34",
+ "rustfmt-1.73.0-i686-pc-windows-gnu.tar.gz": "9ff53bc50d6a15cb5de27c35439524ca8f87a872b06e39ed1ec8c6bffe6a3ca0",
+ "rustfmt-1.73.0-i686-pc-windows-gnu.tar.xz": "5e7211894371c1898399ff426600f0e1d44931b11bccc1f50981ff3d9f8a1c7d",
+ "rustfmt-1.73.0-i686-pc-windows-msvc.tar.gz": "b3ab61f996a24c13d175117eb89418b75e8f0244f992a75ee6da023e64ed2ea8",
+ "rustfmt-1.73.0-i686-pc-windows-msvc.tar.xz": "cf512483506987f0f60223d85484faade496d6b462ab8c3014eb2142ff865d1f",
+ "rustfmt-1.73.0-i686-unknown-linux-gnu.tar.gz": "864de190ad3c4fe72f2bedaa50578832799b1447b251123b8d443f7f40c6e689",
+ "rustfmt-1.73.0-i686-unknown-linux-gnu.tar.xz": "c9aeec80a6a41cd920d7e1bb616e0b54bf5d119b2510094f8b283ca9c188c72e",
+ "rustfmt-1.73.0-powerpc-unknown-linux-gnu.tar.gz": "87afae1c20399f6085554c6e696cf8f408079942c2a43ba11d87ac0f8cc42b19",
+ "rustfmt-1.73.0-powerpc-unknown-linux-gnu.tar.xz": "964cb465cffb33940eb0de8e7622c9f77e9957e150bfca1c0484bc32310b8b3b",
+ "rustfmt-1.73.0-powerpc64-unknown-linux-gnu.tar.gz": "e290325772631fbb26bc3df072a7444cb7085ad4edd5f99d65439b7945fc53b7",
+ "rustfmt-1.73.0-powerpc64-unknown-linux-gnu.tar.xz": "94a2f5ad2ce8d6e80242feac00d39bd119cbd8e80d76510645550f42b59bb83b",
+ "rustfmt-1.73.0-powerpc64le-unknown-linux-gnu.tar.gz": "35c6772274cd8abd5424317a313ac9a42c7b1322df247f5e2f22e894af57c12e",
+ "rustfmt-1.73.0-powerpc64le-unknown-linux-gnu.tar.xz": "912534cffa6ab58169d2065bbb29f898524c7cb6594f39d50487175c3d87fd66",
+ "rustfmt-1.73.0-riscv64gc-unknown-linux-gnu.tar.gz": "c8f6316f902987f9473bf4b164c4762b14e068ca80c41d081aa2ecea78c4d376",
+ "rustfmt-1.73.0-riscv64gc-unknown-linux-gnu.tar.xz": "4b5b8e4b503fa4f4e0cbbabcecde9362794c0afec3f52908f0e07758b5358e7a",
+ "rustfmt-1.73.0-s390x-unknown-linux-gnu.tar.gz": "ea47bd6a67f9b14bd074a828e515fff2745e15992a06c10ba09f8078afcfb3cd",
+ "rustfmt-1.73.0-s390x-unknown-linux-gnu.tar.xz": "321bcc2bdfd88e3e4e3bf4cd4526d4c11c387653d48c92e3b3560bcdc4ab6307",
+ "rustfmt-1.73.0-x86_64-apple-darwin.tar.gz": "4aca7d071ef96667cb37bb8f4e27824039e44ac5f77c894ba9b33a2029dcf51f",
+ "rustfmt-1.73.0-x86_64-apple-darwin.tar.xz": "5095ef47042af611677870cf064758573a065a7538f3238aad48282ea87958ef",
+ "rustfmt-1.73.0-x86_64-pc-windows-gnu.tar.gz": "fbf75d86afb3229aa0de21c6797f5bfe9b887fc71efa2191d15122f9eb045b6a",
+ "rustfmt-1.73.0-x86_64-pc-windows-gnu.tar.xz": "a9b9baf761c8211e84fdfdf4619455a2b343e76ae8d8cc9a2942926278443cbb",
+ "rustfmt-1.73.0-x86_64-pc-windows-msvc.tar.gz": "590443613dee659ba9e33d996e857bd1d72c383d8a5482556f32a6783614585b",
+ "rustfmt-1.73.0-x86_64-pc-windows-msvc.tar.xz": "00457875c5049c4136efaaa94de29744bcfa8b85f08f9b95d77cfa3dc34caec6",
+ "rustfmt-1.73.0-x86_64-unknown-freebsd.tar.gz": "04fd88e2805ab26efd6f0ef5ee8b335413db537cd6391752542c114698136775",
+ "rustfmt-1.73.0-x86_64-unknown-freebsd.tar.xz": "8374e537235b850c1769c557140a9a9016a8b4d114b5ae03585814a05c859117",
+ "rustfmt-1.73.0-x86_64-unknown-illumos.tar.gz": "2508145f965bffa8c19605f2ed1891f50cdfae96a8ac7d860009ed2d930e57ab",
+ "rustfmt-1.73.0-x86_64-unknown-illumos.tar.xz": "0c1461ad7f05cfd06a8d4a39e5bc9492d6274d74db044db5166a1f3cf17e9aea",
+ "rustfmt-1.73.0-x86_64-unknown-linux-gnu.tar.gz": "d2596c44946cd4c3d454d0ad60d57956faa9e940c01fe656c092af852792835c",
+ "rustfmt-1.73.0-x86_64-unknown-linux-gnu.tar.xz": "aa84061bc53fd3fc0d2b90c8b405ef58328171e0baa9e688f27160e9adbbaf3e",
+ "rustfmt-1.73.0-x86_64-unknown-linux-musl.tar.gz": "15547219b51a665ee81956f4b5ccb7a2b233a859b193d27a07e354047a9069fc",
+ "rustfmt-1.73.0-x86_64-unknown-linux-musl.tar.xz": "9f92d2b448c9b8485b9ce21bf287fbac4cad0c7588a131046158f9800bc4762a",
+ "rustfmt-1.73.0-x86_64-unknown-netbsd.tar.gz": "af3ff21d7a4548091bc0d1735c128e8e640671ac55537af1e0e627a224d0e2e5",
+ "rustfmt-1.73.0-x86_64-unknown-netbsd.tar.xz": "37a6bb378810030540dc5dda76543a8756c6f78a12adf8b2d77d27d34ac45e40",
}
diff --git a/rust/platform/triple.bzl b/rust/platform/triple.bzl
index 2c993638..1d07ce2e 100644
--- a/rust/platform/triple.bzl
+++ b/rust/platform/triple.bzl
@@ -67,73 +67,19 @@ def triple(triple):
str = triple,
)
-_CPU_ARCH_ERROR_MSG = """\
-Command failed with exit code '{code}': {args}
-----------stdout:
-{stdout}
-----------stderr:
-{stderr}
-"""
-
-def _query_cpu_architecture(repository_ctx, expected_archs, is_windows = False):
- """Detect the host CPU architecture
+def _validate_cpu_architecture(arch, expected_archs):
+ """Validate the host CPU architecture
Args:
- repository_ctx (repository_ctx): The repository_rule's context object
+ arch (string): a CPU architecture
expected_archs (list): A list of expected architecture strings
- is_windows (bool, optional): If true, the cpu lookup will use the windows method (`wmic` vs `uname`)
-
- Returns:
- str: The host's CPU architecture
"""
- if is_windows:
- arguments = ["wmic", "os", "get", "osarchitecture"]
- else:
- arguments = ["uname", "-m"]
-
- result = repository_ctx.execute(arguments)
-
- if result.return_code:
- fail(_CPU_ARCH_ERROR_MSG.format(
- code = result.return_code,
- args = arguments,
- stdout = result.stdout,
- stderr = result.stderr,
- ))
-
- if is_windows:
- # Example output:
- # OSArchitecture
- # 64-bit
- #
- # In some cases windows can return the same but with an uppercase b
- # OSArchitecture
- # 64-Bit
- lines = result.stdout.split("\n")
- arch = lines[1].strip().lower()
-
- # Translate 64-bit to a compatible rust platform
- # https://doc.rust-lang.org/nightly/rustc/platform-support.html
- if arch.startswith("arm 64-bit"):
- arch = "aarch64"
- elif arch == "64-bit":
- arch = "x86_64"
- else:
- arch = result.stdout.strip("\n")
-
- # Correct the arm architecture for macos
- if "mac" in repository_ctx.os.name and arch == "arm64":
- arch = "aarch64"
-
- if not arch in expected_archs:
- fail("{} is not a expected cpu architecture {}\n{}".format(
+ if arch not in expected_archs:
+ fail("{} is not a expected cpu architecture {}".format(
arch,
expected_archs,
- result.stdout,
))
- return arch
-
def get_host_triple(repository_ctx, abi = None):
"""Query host information for the appropriate triple to use with load_arbitrary_tool or the crate_universe resolver
@@ -173,21 +119,25 @@ def get_host_triple(repository_ctx, abi = None):
"windows": ["aarch64", "x86_64"],
}
+ arch = repository_ctx.os.arch
+ if arch == "amd64":
+ arch = "x86_64"
+
if "linux" in repository_ctx.os.name:
- cpu = _query_cpu_architecture(repository_ctx, supported_architectures["linux"])
+ _validate_cpu_architecture(arch, supported_architectures["linux"])
return triple("{}-unknown-linux-{}".format(
- cpu,
+ arch,
abi or "gnu",
))
if "mac" in repository_ctx.os.name:
- cpu = _query_cpu_architecture(repository_ctx, supported_architectures["macos"])
- return triple("{}-apple-darwin".format(cpu))
+ _validate_cpu_architecture(arch, supported_architectures["macos"])
+ return triple("{}-apple-darwin".format(arch))
if "win" in repository_ctx.os.name:
- cpu = _query_cpu_architecture(repository_ctx, supported_architectures["windows"], True)
+ _validate_cpu_architecture(arch, supported_architectures["windows"])
return triple("{}-pc-windows-{}".format(
- cpu,
+ arch,
abi or "msvc",
))
diff --git a/rust/private/clippy.bzl b/rust/private/clippy.bzl
index 071ca29c..d124c71f 100644
--- a/rust/private/clippy.bzl
+++ b/rust/private/clippy.bzl
@@ -126,6 +126,7 @@ def _clippy_aspect_impl(target, ctx):
build_env_files = build_env_files,
build_flags_files = build_flags_files,
emit = ["dep-info", "metadata"],
+ skip_expanding_rustc_env = True,
)
if crate_info.is_test:
@@ -178,6 +179,7 @@ See https://github.com/bazelbuild/rules_rust/pull/1264#discussion_r853241339 for
tools = [toolchain.clippy_driver],
arguments = args.all,
mnemonic = "Clippy",
+ toolchain = "@rules_rust//rust:toolchain_type",
)
return [
diff --git a/rust/private/common.bzl b/rust/private/common.bzl
index 8aee5ca0..ca26c16f 100644
--- a/rust/private/common.bzl
+++ b/rust/private/common.bzl
@@ -31,9 +31,9 @@ load(":providers.bzl", "CrateGroupInfo", "CrateInfo", "DepInfo", "DepVariantInfo
#
# Note: Code in `.github/workflows/crate_universe.yaml` looks for this line, if
# you remove it or change its format, you will also need to update that code.
-DEFAULT_RUST_VERSION = "1.72.1"
+DEFAULT_RUST_VERSION = "1.73.0"
-DEFAULT_NIGHTLY_ISO_DATE = "2023-09-19"
+DEFAULT_NIGHTLY_ISO_DATE = "2023-10-05"
def _create_crate_info(**kwargs):
"""A constructor for a `CrateInfo` provider
diff --git a/rust/private/providers.bzl b/rust/private/providers.bzl
index e4db9c9f..b2fced74 100644
--- a/rust/private/providers.bzl
+++ b/rust/private/providers.bzl
@@ -41,6 +41,8 @@ CrateInfo = provider(
"str, optional: The original crate type for targets generated using a previously defined " +
"crate (typically tests using the `rust_test::crate` attribute)"
),
+ # TODO: Remove `_rustc_env_attr` after refactoring rust_test to only rely on rustc_env
+ "_rustc_env_attr": "Dict[String, String]: Additional `\"key\": \"value\"` environment variables to set for rustc.",
},
)
diff --git a/rust/private/rust.bzl b/rust/private/rust.bzl
index 014d8d0d..2914f4cc 100644
--- a/rust/private/rust.bzl
+++ b/rust/private/rust.bzl
@@ -24,12 +24,16 @@ load(
"compute_crate_name",
"crate_root_src",
"dedent",
+ "determine_lib_name",
"determine_output_hash",
"expand_dict_value_locations",
"find_toolchain",
+ "get_edition",
"get_import_macro_deps",
"transform_deps",
+ "transform_sources",
)
+
# TODO(marco): Separate each rule into its own file.
def _assert_no_deprecated_attributes(_ctx):
@@ -66,129 +70,6 @@ def _assert_correct_dep_mapping(ctx):
),
)
-def _determine_lib_name(name, crate_type, toolchain, lib_hash = None):
- """See https://github.com/bazelbuild/rules_rust/issues/405
-
- Args:
- name (str): The name of the current target
- crate_type (str): The `crate_type`
- toolchain (rust_toolchain): The current `rust_toolchain`
- lib_hash (str, optional): The hashed crate root path
-
- Returns:
- str: A unique library name
- """
- extension = None
- prefix = ""
- if crate_type in ("dylib", "cdylib", "proc-macro"):
- extension = toolchain.dylib_ext
- elif crate_type == "staticlib":
- extension = toolchain.staticlib_ext
- elif crate_type in ("lib", "rlib"):
- # All platforms produce 'rlib' here
- extension = ".rlib"
- prefix = "lib"
- elif crate_type == "bin":
- fail("crate_type of 'bin' was detected in a rust_library. Please compile " +
- "this crate as a rust_binary instead.")
-
- if not extension:
- fail(("Unknown crate_type: {}. If this is a cargo-supported crate type, " +
- "please file an issue!").format(crate_type))
-
- prefix = "lib"
- if toolchain.target_triple and toolchain.target_os == "windows" and crate_type not in ("lib", "rlib"):
- prefix = ""
- if toolchain.target_arch == "wasm32" and crate_type == "cdylib":
- prefix = ""
-
- return "{prefix}{name}{lib_hash}{extension}".format(
- prefix = prefix,
- name = name,
- lib_hash = "-" + lib_hash if lib_hash else "",
- extension = extension,
- )
-
-def get_edition(attr, toolchain, label):
- """Returns the Rust edition from either the current rule's attirbutes or the current `rust_toolchain`
-
- Args:
- attr (struct): The current rule's attributes
- toolchain (rust_toolchain): The `rust_toolchain` for the current target
- label (Label): The label of the target being built
-
- Returns:
- str: The target Rust edition
- """
- if getattr(attr, "edition"):
- return attr.edition
- elif not toolchain.default_edition:
- fail("Attribute `edition` is required for {}.".format(label))
- else:
- return toolchain.default_edition
-
-def _symlink_for_non_generated_source(ctx, src_file, package_root):
- """Creates and returns a symlink for non-generated source files.
-
- This rule uses the full path to the source files and the rule directory to compute
- the relative paths. This is needed, instead of using `short_path`, because of non-generated
- source files in external repositories possibly returning relative paths depending on the
- current version of Bazel.
-
- Args:
- ctx (struct): The current rule's context.
- src_file (File): The source file.
- package_root (File): The full path to the directory containing the current rule.
-
- Returns:
- File: The created symlink if a non-generated file, or the file itself.
- """
-
- if src_file.is_source or src_file.root.path != ctx.bin_dir.path:
- src_short_path = paths.relativize(src_file.path, src_file.root.path)
- src_symlink = ctx.actions.declare_file(paths.relativize(src_short_path, package_root))
- ctx.actions.symlink(
- output = src_symlink,
- target_file = src_file,
- progress_message = "Creating symlink to source file: {}".format(src_file.path),
- )
- return src_symlink
- else:
- return src_file
-
-def _transform_sources(ctx, srcs, crate_root):
- """Creates symlinks of the source files if needed.
-
- Rustc assumes that the source files are located next to the crate root.
- In case of a mix between generated and non-generated source files, this
- we violate this assumption, as part of the sources will be located under
- bazel-out/... . In order to allow for targets that contain both generated
- and non-generated source files, we generate symlinks for all non-generated
- files.
-
- Args:
- ctx (struct): The current rule's context.
- srcs (List[File]): The sources listed in the `srcs` attribute
- crate_root (File): The file specified in the `crate_root` attribute,
- if it exists, otherwise None
-
- Returns:
- Tuple(List[File], File): The transformed srcs and crate_root
- """
- has_generated_sources = len([src for src in srcs if not src.is_source]) > 0
-
- if not has_generated_sources:
- return srcs, crate_root
-
- package_root = paths.dirname(paths.join(ctx.label.workspace_root, ctx.build_file_path))
- generated_sources = [_symlink_for_non_generated_source(ctx, src, package_root) for src in srcs if src != crate_root]
- generated_root = crate_root
- if crate_root:
- generated_root = _symlink_for_non_generated_source(ctx, crate_root, package_root)
- generated_sources.append(generated_root)
-
- return generated_sources, generated_root
-
def _rust_library_impl(ctx):
"""The implementation of the `rust_library` rule.
@@ -262,10 +143,12 @@ def _rust_library_common(ctx, crate_type):
toolchain = find_toolchain(ctx)
+ crate_name = compute_crate_name(ctx.workspace_name, ctx.label, toolchain, ctx.attr.crate_name)
+
crate_root = getattr(ctx.file, "crate_root", None)
if not crate_root:
crate_root = crate_root_src(ctx.attr.name, ctx.files.srcs, crate_type)
- srcs, crate_root = _transform_sources(ctx, ctx.files.srcs, crate_root)
+ srcs, crate_root = transform_sources(ctx, ctx.files.srcs, crate_root)
# Determine unique hash for this rlib.
# Note that we don't include a hash for `cdylib` and `staticlib` since they are meant to be consumed externally
@@ -277,15 +160,13 @@ def _rust_library_common(ctx, crate_type):
else:
output_hash = determine_output_hash(crate_root, ctx.label)
- crate_name = compute_crate_name(ctx.workspace_name, ctx.label, toolchain, ctx.attr.crate_name)
- rust_lib_name = _determine_lib_name(
+ rust_lib_name = determine_lib_name(
crate_name,
crate_type,
toolchain,
output_hash,
)
rust_lib = ctx.actions.declare_file(rust_lib_name)
-
rust_metadata = None
if can_build_metadata(toolchain, ctx, crate_type) and not ctx.attr.disable_pipelining:
rust_metadata = ctx.actions.declare_file(
@@ -300,7 +181,8 @@ def _rust_library_common(ctx, crate_type):
ctx = ctx,
attr = ctx.attr,
toolchain = toolchain,
- crate_info = rust_common.create_crate_info(
+ output_hash = output_hash,
+ crate_info_dict = dict(
name = crate_name,
type = crate_type,
root = crate_root,
@@ -318,8 +200,8 @@ def _rust_library_common(ctx, crate_type):
compile_data = depset(ctx.files.compile_data),
compile_data_targets = depset(ctx.attr.compile_data),
owner = ctx.label,
+ _rustc_env_attr = ctx.attr.rustc_env,
),
- output_hash = output_hash,
)
def _rust_binary_impl(ctx):
@@ -343,13 +225,13 @@ def _rust_binary_impl(ctx):
crate_root = getattr(ctx.file, "crate_root", None)
if not crate_root:
crate_root = crate_root_src(ctx.attr.name, ctx.files.srcs, ctx.attr.crate_type)
- srcs, crate_root = _transform_sources(ctx, ctx.files.srcs, crate_root)
+ srcs, crate_root = transform_sources(ctx, ctx.files.srcs, crate_root)
return rustc_compile_action(
ctx = ctx,
attr = ctx.attr,
toolchain = toolchain,
- crate_info = rust_common.create_crate_info(
+ crate_info_dict = dict(
name = crate_name,
type = ctx.attr.crate_type,
root = crate_root,
@@ -359,6 +241,7 @@ def _rust_binary_impl(ctx):
aliases = ctx.attr.aliases,
output = output,
edition = get_edition(ctx.attr, toolchain, ctx.label),
+ _rustc_env_attr = ctx.attr.rustc_env,
rustc_env = ctx.attr.rustc_env,
rustc_env_files = ctx.files.rustc_env_files,
is_test = False,
@@ -399,7 +282,7 @@ def _rust_test_impl(ctx):
),
)
- srcs, crate_root = _transform_sources(ctx, ctx.files.srcs, getattr(ctx.file, "crate_root", None))
+ srcs, crate_root = transform_sources(ctx, ctx.files.srcs, getattr(ctx.file, "crate_root", None))
# Optionally join compile data
if crate.compile_data:
@@ -411,11 +294,19 @@ def _rust_test_impl(ctx):
else:
compile_data_targets = depset(ctx.attr.compile_data)
rustc_env_files = ctx.files.rustc_env_files + crate.rustc_env_files
- rustc_env = dict(crate.rustc_env)
- rustc_env.update(**ctx.attr.rustc_env)
+
+ rustc_env = dict(crate._rustc_env_attr)
+
+ # crate.rustc_env is already expanded upstream in rust_library rule implementation
+ data_paths = depset(direct = getattr(ctx.attr, "data", [])).to_list()
+ rustc_env.update(expand_dict_value_locations(
+ ctx,
+ ctx.attr.rustc_env,
+ data_paths,
+ ))
# Build the test binary using the dependency's srcs.
- crate_info = rust_common.create_crate_info(
+ crate_info_dict = dict(
name = crate.name,
type = crate_type,
root = crate.root,
@@ -426,6 +317,7 @@ def _rust_test_impl(ctx):
output = output,
edition = crate.edition,
rustc_env = rustc_env,
+ _rustc_env_attr = ctx.attr.rustc_env,
rustc_env_files = rustc_env_files,
is_test = True,
compile_data = compile_data,
@@ -439,7 +331,7 @@ def _rust_test_impl(ctx):
if not crate_root:
crate_root_type = "lib" if ctx.attr.use_libtest_harness else "bin"
crate_root = crate_root_src(ctx.attr.name, ctx.files.srcs, crate_root_type)
- srcs, crate_root = _transform_sources(ctx, ctx.files.srcs, crate_root)
+ srcs, crate_root = transform_sources(ctx, ctx.files.srcs, crate_root)
output_hash = determine_output_hash(crate_root, ctx.label)
output = ctx.actions.declare_file(
@@ -450,8 +342,15 @@ def _rust_test_impl(ctx):
),
)
+ data_paths = depset(direct = getattr(ctx.attr, "data", [])).to_list()
+ rustc_env = expand_dict_value_locations(
+ ctx,
+ ctx.attr.rustc_env,
+ data_paths,
+ )
+
# Target is a standalone crate. Build the test binary as its own crate.
- crate_info = rust_common.create_crate_info(
+ crate_info_dict = dict(
name = compute_crate_name(ctx.workspace_name, ctx.label, toolchain, ctx.attr.crate_name),
type = crate_type,
root = crate_root,
@@ -461,7 +360,8 @@ def _rust_test_impl(ctx):
aliases = ctx.attr.aliases,
output = output,
edition = get_edition(ctx.attr, toolchain, ctx.label),
- rustc_env = ctx.attr.rustc_env,
+ rustc_env = rustc_env,
+ _rustc_env_attr = ctx.attr.rustc_env,
rustc_env_files = ctx.files.rustc_env_files,
is_test = True,
compile_data = depset(ctx.files.compile_data),
@@ -473,8 +373,9 @@ def _rust_test_impl(ctx):
ctx = ctx,
attr = ctx.attr,
toolchain = toolchain,
- crate_info = crate_info,
+ crate_info_dict = crate_info_dict,
rust_flags = ["--test"] if ctx.attr.use_libtest_harness else ["--cfg", "test"],
+ skip_expanding_rustc_env = True,
)
data = getattr(ctx.attr, "data", [])
diff --git a/rust/private/rust_analyzer.bzl b/rust/private/rust_analyzer.bzl
index 3eea6c08..323944db 100644
--- a/rust/private/rust_analyzer.bzl
+++ b/rust/private/rust_analyzer.bzl
@@ -116,7 +116,7 @@ def _rust_analyzer_aspect_impl(target, ctx):
rust_analyzer_info = RustAnalyzerInfo(
crate = crate_info,
cfgs = cfgs,
- env = getattr(ctx.rule.attr, "rustc_env", {}),
+ env = crate_info.rustc_env,
deps = dep_infos,
crate_specs = depset(direct = [crate_spec], transitive = [dep.crate_specs for dep in dep_infos]),
proc_macro_dylib_path = find_proc_macro_dylib_path(toolchain, target),
diff --git a/rust/private/rustc.bzl b/rust/private/rustc.bzl
index e76c20bd..c972e478 100644
--- a/rust/private/rustc.bzl
+++ b/rust/private/rustc.bzl
@@ -787,7 +787,8 @@ def construct_arguments(
remap_path_prefix = "",
use_json_output = False,
build_metadata = False,
- force_depend_on_objects = False):
+ force_depend_on_objects = False,
+ skip_expanding_rustc_env = False):
"""Builds an Args object containing common rustc flags
Args:
@@ -817,6 +818,7 @@ def construct_arguments(
use_json_output (bool): Have rustc emit json and process_wrapper parse json messages to output rendered output.
build_metadata (bool): Generate CLI arguments for building *only* .rmeta files. This requires use_json_output.
force_depend_on_objects (bool): Force using `.rlib` object files instead of metadata (`.rmeta`) files even if they are available.
+ skip_expanding_rustc_env (bool): Whether to skip expanding CrateInfo.rustc_env_attr
Returns:
tuple: A tuple of the following items
@@ -1027,11 +1029,14 @@ def construct_arguments(
env.update(toolchain.env)
# Update environment with user provided variables.
- env.update(expand_dict_value_locations(
- ctx,
- crate_info.rustc_env,
- data_paths,
- ))
+ if skip_expanding_rustc_env:
+ env.update(crate_info.rustc_env)
+ else:
+ env.update(expand_dict_value_locations(
+ ctx,
+ crate_info._rustc_env_attr,
+ data_paths,
+ ))
# Ensure the sysroot is set for the target platform
env["SYSROOT"] = toolchain.sysroot
@@ -1079,21 +1084,23 @@ def rustc_compile_action(
ctx,
attr,
toolchain,
- crate_info,
- output_hash = None,
rust_flags = [],
- force_all_deps_direct = False):
+ output_hash = None,
+ force_all_deps_direct = False,
+ crate_info_dict = None,
+ skip_expanding_rustc_env = False):
"""Create and run a rustc compile action based on the current rule's attributes
Args:
ctx (ctx): The rule's context object
attr (struct): Attributes to use for the rust compile action
toolchain (rust_toolchain): The current `rust_toolchain`
- crate_info (CrateInfo): The CrateInfo provider for the current target.
output_hash (str, optional): The hashed path of the crate root. Defaults to None.
rust_flags (list, optional): Additional flags to pass to rustc. Defaults to [].
force_all_deps_direct (bool, optional): Whether to pass the transitive rlibs with --extern
to the commandline as opposed to -L.
+ crate_info_dict: A mutable dict used to create CrateInfo provider
+ skip_expanding_rustc_env (bool, optional): Whether to expand CrateInfo.rustc_env
Returns:
list: A list of the following providers:
@@ -1101,7 +1108,11 @@ def rustc_compile_action(
- (DepInfo): The transitive dependencies of this crate.
- (DefaultInfo): The output file for this crate, and its runfiles.
"""
- build_metadata = getattr(crate_info, "metadata", None)
+ crate_info = rust_common.create_crate_info(**crate_info_dict)
+
+ build_metadata = None
+ if "metadata" in crate_info_dict:
+ build_metadata = crate_info_dict["metadata"]
cc_toolchain, feature_configuration = find_cc_toolchain(ctx)
@@ -1119,9 +1130,9 @@ def rustc_compile_action(
experimental_use_cc_common_link = toolchain._experimental_use_cc_common_link
dep_info, build_info, linkstamps = collect_deps(
- deps = crate_info.deps,
- proc_macro_deps = crate_info.proc_macro_deps,
- aliases = crate_info.aliases,
+ deps = crate_info_dict["deps"],
+ proc_macro_deps = crate_info_dict["proc_macro_deps"],
+ aliases = crate_info_dict["aliases"],
are_linkstamps_supported = _are_linkstamps_supported(
feature_configuration = feature_configuration,
has_grep_includes = hasattr(ctx.attr, "_use_grep_includes"),
@@ -1181,6 +1192,7 @@ def rustc_compile_action(
force_all_deps_direct = force_all_deps_direct,
stamp = stamp,
use_json_output = bool(build_metadata),
+ skip_expanding_rustc_env = skip_expanding_rustc_env,
)
args_metadata = None
@@ -1210,6 +1222,8 @@ def rustc_compile_action(
)
env = dict(ctx.configuration.default_shell_env)
+
+ # this is the final list of env vars
env.update(env_from_args)
if hasattr(attr, "version") and attr.version != "0.0.0":
@@ -1268,6 +1282,7 @@ def rustc_compile_action(
formatted_version,
len(crate_info.srcs.to_list()),
),
+ toolchain = "@rules_rust//rust:toolchain_type",
)
if args_metadata:
ctx.actions.run(
@@ -1283,6 +1298,7 @@ def rustc_compile_action(
formatted_version,
len(crate_info.srcs.to_list()),
),
+ toolchain = "@rules_rust//rust:toolchain_type",
)
else:
# Run without process_wrapper
@@ -1301,6 +1317,7 @@ def rustc_compile_action(
formatted_version,
len(crate_info.srcs.to_list()),
),
+ toolchain = "@rules_rust//rust:toolchain_type",
)
if experimental_use_cc_common_link:
@@ -1418,6 +1435,12 @@ def rustc_compile_action(
),
]
+ if crate_info_dict != None:
+ crate_info_dict.update({
+ "rustc_env": env,
+ })
+ crate_info = rust_common.create_crate_info(**crate_info_dict)
+
if crate_info.type in ["staticlib", "cdylib"]:
# These rules are not supposed to be depended on by other rust targets, and
# as such they shouldn't provide a CrateInfo. However, one may still want to
diff --git a/rust/private/rustdoc.bzl b/rust/private/rustdoc.bzl
index aa2634d9..dac24b3e 100644
--- a/rust/private/rustdoc.bzl
+++ b/rust/private/rustdoc.bzl
@@ -39,6 +39,7 @@ def _strip_crate_info_output(crate_info):
output = None,
metadata = None,
edition = crate_info.edition,
+ _rustc_env_attr = crate_info._rustc_env_attr,
rustc_env = crate_info.rustc_env,
rustc_env_files = crate_info.rustc_env_files,
is_test = crate_info.is_test,
@@ -125,6 +126,7 @@ def rustdoc_compile_action(
remap_path_prefix = None,
rustdoc = True,
force_depend_on_objects = is_test,
+ skip_expanding_rustc_env = True,
)
# Because rustdoc tests compile tests outside of the sandbox, the sysroot
@@ -321,6 +323,9 @@ rust_doc = rule(
cfg = "exec",
executable = True,
),
+ "_error_format": attr.label(
+ default = Label("//:error_format"),
+ ),
"_process_wrapper": attr.label(
doc = "A process wrapper for running rustdoc on all platforms",
default = Label("@rules_rust//util/process_wrapper"),
diff --git a/rust/private/rustdoc_test.bzl b/rust/private/rustdoc_test.bzl
index 79b0f4dd..f580c27a 100644
--- a/rust/private/rustdoc_test.bzl
+++ b/rust/private/rustdoc_test.bzl
@@ -122,6 +122,7 @@ def _rust_doc_test_impl(ctx):
output = crate.output,
edition = crate.edition,
rustc_env = crate.rustc_env,
+ _rustc_env_attr = crate._rustc_env_attr,
rustc_env_files = crate.rustc_env_files,
is_test = True,
compile_data = crate.compile_data,
diff --git a/rust/private/utils.bzl b/rust/private/utils.bzl
index 879e2b62..7b0fe23e 100644
--- a/rust/private/utils.bzl
+++ b/rust/private/utils.bzl
@@ -14,6 +14,7 @@
"""Utility functions not specific to the rust toolchain."""
+load("@bazel_skylib//lib:paths.bzl", "paths")
load("@bazel_tools//tools/cpp:toolchain_utils.bzl", find_rules_cc_toolchain = "find_cpp_toolchain")
load(":providers.bzl", "BuildInfo", "CrateGroupInfo", "CrateInfo", "DepInfo", "DepVariantInfo")
@@ -725,3 +726,126 @@ def _shortest_src_with_basename(srcs, basename):
if not shortest or len(f.dirname) < len(shortest.dirname):
shortest = f
return shortest
+
+def determine_lib_name(name, crate_type, toolchain, lib_hash = None):
+ """See https://github.com/bazelbuild/rules_rust/issues/405
+
+ Args:
+ name (str): The name of the current target
+ crate_type (str): The `crate_type`
+ toolchain (rust_toolchain): The current `rust_toolchain`
+ lib_hash (str, optional): The hashed crate root path
+
+ Returns:
+ str: A unique library name
+ """
+ extension = None
+ prefix = ""
+ if crate_type in ("dylib", "cdylib", "proc-macro"):
+ extension = toolchain.dylib_ext
+ elif crate_type == "staticlib":
+ extension = toolchain.staticlib_ext
+ elif crate_type in ("lib", "rlib"):
+ # All platforms produce 'rlib' here
+ extension = ".rlib"
+ prefix = "lib"
+ elif crate_type == "bin":
+ fail("crate_type of 'bin' was detected in a rust_library. Please compile " +
+ "this crate as a rust_binary instead.")
+
+ if not extension:
+ fail(("Unknown crate_type: {}. If this is a cargo-supported crate type, " +
+ "please file an issue!").format(crate_type))
+
+ prefix = "lib"
+ if toolchain.target_triple and toolchain.target_os == "windows" and crate_type not in ("lib", "rlib"):
+ prefix = ""
+ if toolchain.target_arch == "wasm32" and crate_type == "cdylib":
+ prefix = ""
+
+ return "{prefix}{name}{lib_hash}{extension}".format(
+ prefix = prefix,
+ name = name,
+ lib_hash = "-" + lib_hash if lib_hash else "",
+ extension = extension,
+ )
+
+def transform_sources(ctx, srcs, crate_root):
+ """Creates symlinks of the source files if needed.
+
+ Rustc assumes that the source files are located next to the crate root.
+ In case of a mix between generated and non-generated source files, this
+ we violate this assumption, as part of the sources will be located under
+ bazel-out/... . In order to allow for targets that contain both generated
+ and non-generated source files, we generate symlinks for all non-generated
+ files.
+
+ Args:
+ ctx (struct): The current rule's context.
+ srcs (List[File]): The sources listed in the `srcs` attribute
+ crate_root (File): The file specified in the `crate_root` attribute,
+ if it exists, otherwise None
+
+ Returns:
+ Tuple(List[File], File): The transformed srcs and crate_root
+ """
+ has_generated_sources = len([src for src in srcs if not src.is_source]) > 0
+
+ if not has_generated_sources:
+ return srcs, crate_root
+
+ package_root = paths.dirname(paths.join(ctx.label.workspace_root, ctx.build_file_path))
+ generated_sources = [_symlink_for_non_generated_source(ctx, src, package_root) for src in srcs if src != crate_root]
+ generated_root = crate_root
+ if crate_root:
+ generated_root = _symlink_for_non_generated_source(ctx, crate_root, package_root)
+ generated_sources.append(generated_root)
+
+ return generated_sources, generated_root
+
+def get_edition(attr, toolchain, label):
+ """Returns the Rust edition from either the current rule's attributes or the current `rust_toolchain`
+
+ Args:
+ attr (struct): The current rule's attributes
+ toolchain (rust_toolchain): The `rust_toolchain` for the current target
+ label (Label): The label of the target being built
+
+ Returns:
+ str: The target Rust edition
+ """
+ if getattr(attr, "edition"):
+ return attr.edition
+ elif not toolchain.default_edition:
+ fail("Attribute `edition` is required for {}.".format(label))
+ else:
+ return toolchain.default_edition
+
+def _symlink_for_non_generated_source(ctx, src_file, package_root):
+ """Creates and returns a symlink for non-generated source files.
+
+ This rule uses the full path to the source files and the rule directory to compute
+ the relative paths. This is needed, instead of using `short_path`, because of non-generated
+ source files in external repositories possibly returning relative paths depending on the
+ current version of Bazel.
+
+ Args:
+ ctx (struct): The current rule's context.
+ src_file (File): The source file.
+ package_root (File): The full path to the directory containing the current rule.
+
+ Returns:
+ File: The created symlink if a non-generated file, or the file itself.
+ """
+
+ if src_file.is_source or src_file.root.path != ctx.bin_dir.path:
+ src_short_path = paths.relativize(src_file.path, src_file.root.path)
+ src_symlink = ctx.actions.declare_file(paths.relativize(src_short_path, package_root))
+ ctx.actions.symlink(
+ output = src_symlink,
+ target_file = src_file,
+ progress_message = "Creating symlink to source file: {}".format(src_file.path),
+ )
+ return src_symlink
+ else:
+ return src_file
diff --git a/rust/repositories.bzl b/rust/repositories.bzl
index 7be13752..7e2082ee 100644
--- a/rust/repositories.bzl
+++ b/rust/repositories.bzl
@@ -60,8 +60,9 @@ def rules_rust_dependencies():
maybe(
http_archive,
name = "rules_cc",
- urls = ["https://github.com/bazelbuild/rules_cc/releases/download/0.0.1/rules_cc-0.0.1.tar.gz"],
- sha256 = "4dccbfd22c0def164c8f47458bd50e0c7148f3d92002cdb459c2a96a68498241",
+ urls = ["https://github.com/bazelbuild/rules_cc/releases/download/0.0.9/rules_cc-0.0.9.tar.gz"],
+ sha256 = "2037875b9a4456dce4a79d112a8ae885bbc4aad968e6587dca6e64f3a0900cdf",
+ strip_prefix = "rules_cc-0.0.9",
)
maybe(
@@ -381,6 +382,7 @@ rust_toolchain_tools_repository = repository_rule(
attrs = {
"allocator_library": attr.string(
doc = "Target that provides allocator functions when rust_library targets are embedded in a cc_binary.",
+ default = "@rules_rust//ffi/cc/allocator_library",
),
"auth": attr.string_dict(
doc = (
@@ -410,6 +412,7 @@ rust_toolchain_tools_repository = repository_rule(
),
"global_allocator_library": attr.string(
doc = "Target that provides allocator functions when a global allocator is used with cc_common.link.",
+ default = "@rules_rust//ffi/cc/global_allocator_library",
),
"iso_date": attr.string(
doc = "The date of the tool (or None, if the version is a specific version).",
diff --git a/rust/toolchain.bzl b/rust/toolchain.bzl
index af34e8fb..3a59d49d 100644
--- a/rust/toolchain.bzl
+++ b/rust/toolchain.bzl
@@ -654,6 +654,7 @@ rust_toolchain = rule(
attrs = {
"allocator_library": attr.label(
doc = "Target that provides allocator functions when rust_library targets are embedded in a cc_binary.",
+ default = "@rules_rust//ffi/cc/allocator_library",
),
"binary_ext": attr.string(
doc = "The extension for binaries created from rustc.",
@@ -709,6 +710,7 @@ rust_toolchain = rule(
),
"global_allocator_library": attr.label(
doc = "Target that provides allocator functions for when a global allocator is present.",
+ default = "@rules_rust//ffi/cc/global_allocator_library",
),
"llvm_cov": attr.label(
doc = "The location of the `llvm-cov` binary. Can be a direct source or a filegroup containing one item. If None, rust code is not instrumented for coverage.",
diff --git a/test/cargo_build_script/tools_exec/BUILD.bazel b/test/cargo_build_script/tools_exec/BUILD.bazel
index 83b0f11d..a2ea240c 100644
--- a/test/cargo_build_script/tools_exec/BUILD.bazel
+++ b/test/cargo_build_script/tools_exec/BUILD.bazel
@@ -15,6 +15,7 @@ cargo_build_script(
"TOOL": "$(execpath :tool)",
},
edition = "2018",
+ links = "beep",
# Add a flag to test that they're exposed to the build script
rustc_flags = ["--verbose"],
toolchains = ["//rust/toolchain:current_rust_toolchain"],
diff --git a/test/cargo_build_script/tools_exec/build.rs b/test/cargo_build_script/tools_exec/build.rs
index 727b53e0..6c09da42 100644
--- a/test/cargo_build_script/tools_exec/build.rs
+++ b/test/cargo_build_script/tools_exec/build.rs
@@ -55,4 +55,6 @@ fn main() {
for env_var in &["CFLAGS", "CXXFLAGS", "LDFLAGS"] {
assert!(std::env::var(env_var).is_ok());
}
+
+ assert_eq!(std::env::var("CARGO_MANIFEST_LINKS").unwrap(), "beep");
}
diff --git a/test/cc_common_link/BUILD.bazel b/test/cc_common_link/BUILD.bazel
index ef952e2f..f66146be 100644
--- a/test/cc_common_link/BUILD.bazel
+++ b/test/cc_common_link/BUILD.bazel
@@ -8,18 +8,6 @@ load(
)
cc_library(
- name = "allocator_library",
- srcs = ["allocator_library.cc"],
- visibility = ["//visibility:public"],
-)
-
-cc_library(
- name = "global_allocator_library",
- srcs = ["global_allocator_library.cc"],
- visibility = ["//visibility:public"],
-)
-
-cc_library(
name = "cclinkstampdep",
linkstamp = "cclinkstampdep.cc",
)
diff --git a/test/cc_common_link/WORKSPACE.bazel b/test/cc_common_link/WORKSPACE.bazel
index e45b8f8a..c725ffe7 100644
--- a/test/cc_common_link/WORKSPACE.bazel
+++ b/test/cc_common_link/WORKSPACE.bazel
@@ -10,7 +10,6 @@ load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_regi
rules_rust_dependencies()
rust_register_toolchains(
- allocator_library = "@test_cc_common_link//:allocator_library",
edition = "2018",
)
diff --git a/test/cc_common_link/allocator_library.cc b/test/cc_common_link/allocator_library.cc
deleted file mode 100644
index b058f282..00000000
--- a/test/cc_common_link/allocator_library.cc
+++ /dev/null
@@ -1,58 +0,0 @@
-#include <stdint.h>
-
-// This file has some exciting magic to get Rust code linking in a cc_binary.
-// The Rust compiler generates some similar symbol aliases when it links, so we
-// have to do it manually. We mark all our symbols as weak so that linking this
-// via Rust tooling to produce a binary with a Rust main works.
-//
-// It is intended to be used in rust_toolchain.allocator_library.
-//
-// https://github.com/rust-lang/rust/blob/master/library/alloc/src/alloc.rs
-// and https://github.com/rust-lang/rust/blob/master/library/std/src/alloc.rs
-// are the best source of docs I've found on these functions and variables.
-// https://doc.rust-lang.org/std/alloc/index.html talks about how this is
-// intended to be used.
-//
-// Also note
-// https://rust-lang.github.io/unsafe-code-guidelines/layout/scalars.html for
-// the sizes of the various integer types.
-//
-// This file strongly assumes that the default allocator is used. It will
-// not work with any other allocated switched in via `#[global_allocator]`.
-
-// New feature as of https://github.com/rust-lang/rust/pull/88098.
-__attribute__((weak)) uint8_t __rust_alloc_error_handler_should_panic = 0;
-
-extern "C" uint8_t *__rdl_alloc(uintptr_t size, uintptr_t align);
-extern "C" __attribute__((weak)) uint8_t *__rust_alloc(uintptr_t size,
- uintptr_t align) {
- return __rdl_alloc(size, align);
-}
-extern "C" void __rdl_dealloc(uint8_t *ptr, uintptr_t size, uintptr_t align);
-extern "C" __attribute__((weak)) void __rust_dealloc(uint8_t *ptr,
- uintptr_t size,
- uintptr_t align) {
- __rdl_dealloc(ptr, size, align);
-}
-extern "C" uint8_t *__rdl_realloc(uint8_t *ptr, uintptr_t old_size,
- uintptr_t align, uintptr_t new_size);
-extern "C" __attribute__((weak)) uint8_t *__rust_realloc(uint8_t *ptr,
- uintptr_t old_size,
- uintptr_t align,
- uintptr_t new_size) {
- return __rdl_realloc(ptr, old_size, align, new_size);
-}
-extern "C" uint8_t *__rdl_alloc_zeroed(uintptr_t size, uintptr_t align);
-extern "C" __attribute__((weak)) uint8_t *__rust_alloc_zeroed(uintptr_t size,
- uintptr_t align) {
- return __rdl_alloc_zeroed(size, align);
-}
-extern "C" void __rdl_oom(uintptr_t size, uintptr_t align);
-extern "C" __attribute__((weak)) void __rust_alloc_error_handler(
- uintptr_t size, uintptr_t align) {
- __rdl_oom(size, align);
-}
-
-// New requirement as of Rust 1.71.0. For more details see
-// https://github.com/rust-lang/rust/issues/73632.
-__attribute__((weak)) uint8_t __rust_no_alloc_shim_is_unstable = 0;
diff --git a/test/cc_common_link/with_global_alloc/WORKSPACE.bazel b/test/cc_common_link/with_global_alloc/WORKSPACE.bazel
index 6e5f2eb8..06116840 100644
--- a/test/cc_common_link/with_global_alloc/WORKSPACE.bazel
+++ b/test/cc_common_link/with_global_alloc/WORKSPACE.bazel
@@ -15,9 +15,7 @@ load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_regi
rules_rust_dependencies()
rust_register_toolchains(
- allocator_library = "@test_cc_common_link//:allocator_library",
edition = "2018",
- global_allocator_library = "@test_cc_common_link//:global_allocator_library",
)
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
diff --git a/test/no_std/WORKSPACE.bazel b/test/no_std/WORKSPACE.bazel
index 531cbb27..6f44bffd 100644
--- a/test/no_std/WORKSPACE.bazel
+++ b/test/no_std/WORKSPACE.bazel
@@ -15,9 +15,7 @@ load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_regi
rules_rust_dependencies()
rust_register_toolchains(
- allocator_library = "@test_cc_common_link//:allocator_library",
edition = "2021",
- global_allocator_library = "@test_cc_common_link//:global_allocator_library",
versions = [
"nightly/2023-04-20",
"1.68.0",
diff --git a/test/toolchain/toolchain_test.bzl b/test/toolchain/toolchain_test.bzl
index 2b820e7b..cfa429eb 100644
--- a/test/toolchain/toolchain_test.bzl
+++ b/test/toolchain/toolchain_test.bzl
@@ -41,7 +41,7 @@ def _toolchain_adds_rustc_flags_impl(ctx):
toolchain_adds_rustc_flags_test = analysistest.make(
_toolchain_adds_rustc_flags_impl,
config_settings = {
- "@//:extra_rustc_flags": [CONFIG_FLAG],
+ str(Label("//:extra_rustc_flags")): [CONFIG_FLAG],
},
)
diff --git a/test/unit/cc_info/cc_info_test.bzl b/test/unit/cc_info/cc_info_test.bzl
index 443a90a8..2848ab3c 100644
--- a/test/unit/cc_info/cc_info_test.bzl
+++ b/test/unit/cc_info/cc_info_test.bzl
@@ -51,7 +51,7 @@ def _collect_user_link_flags(env, tut):
def _rlib_provides_cc_info_test_impl(ctx):
env = analysistest.begin(ctx)
tut = analysistest.target_under_test(env)
- _assert_cc_info_has_library_to_link(env, tut, "rlib", 3)
+ _assert_cc_info_has_library_to_link(env, tut, "rlib", 4)
return analysistest.end(env)
def _rlib_with_dep_only_has_stdlib_linkflags_once_test_impl(ctx):
diff --git a/test/unit/channel_transitions/channel_transiitons_test.bzl b/test/unit/channel_transitions/channel_transiitons_test.bzl
index f11e5aa3..f0bc1658 100644
--- a/test/unit/channel_transitions/channel_transiitons_test.bzl
+++ b/test/unit/channel_transitions/channel_transiitons_test.bzl
@@ -31,7 +31,7 @@ nightly_transition_test = analysistest.make(
_nightly_transition_test_impl,
doc = "Test that targets can be forced to use a nightly toolchain",
config_settings = {
- "@//rust/toolchain/channel:channel": "nightly",
+ str(Label("//rust/toolchain/channel:channel")): "nightly",
},
)
@@ -42,7 +42,7 @@ stable_transition_test = analysistest.make(
_stable_transition_test_impl,
doc = "Test that targets can be forced to use a stable toolchain",
config_settings = {
- "@//rust/toolchain/channel:channel": "stable",
+ str(Label("//rust/toolchain/channel:channel")): "stable",
},
)
diff --git a/test/unit/clippy/clippy_test.bzl b/test/unit/clippy/clippy_test.bzl
index 37e95920..e0e6ff71 100644
--- a/test/unit/clippy/clippy_test.bzl
+++ b/test/unit/clippy/clippy_test.bzl
@@ -84,7 +84,12 @@ def make_clippy_aspect_unittest(impl, **kwargs):
binary_clippy_aspect_action_has_warnings_flag_test = make_clippy_aspect_unittest(_binary_clippy_aspect_action_has_warnings_flag_test_impl)
library_clippy_aspect_action_has_warnings_flag_test = make_clippy_aspect_unittest(_library_clippy_aspect_action_has_warnings_flag_test_impl)
test_clippy_aspect_action_has_warnings_flag_test = make_clippy_aspect_unittest(_test_clippy_aspect_action_has_warnings_flag_test_impl)
-clippy_aspect_with_explicit_flags_test = make_clippy_aspect_unittest(_clippy_aspect_with_explicit_flags_test_impl, config_settings = {"@//:clippy_flags": _CLIPPY_EXPLICIT_FLAGS})
+clippy_aspect_with_explicit_flags_test = make_clippy_aspect_unittest(
+ _clippy_aspect_with_explicit_flags_test_impl,
+ config_settings = {
+ str(Label("//:clippy_flags")): _CLIPPY_EXPLICIT_FLAGS,
+ },
+)
def clippy_test_suite(name):
"""Entry-point macro called from the BUILD file.
diff --git a/test/unit/consistent_crate_name/with_modified_crate_name.bzl b/test/unit/consistent_crate_name/with_modified_crate_name.bzl
index f06ddab5..7a3bca60 100644
--- a/test/unit/consistent_crate_name/with_modified_crate_name.bzl
+++ b/test/unit/consistent_crate_name/with_modified_crate_name.bzl
@@ -1,7 +1,5 @@
"""A custom rule that threats all its dependencies as direct dependencies."""
-load("//rust:defs.bzl", "rust_common")
-
# buildifier: disable=bzl-visibility
load("//rust/private:providers.bzl", "BuildInfo", "CrateInfo", "DepInfo", "DepVariantInfo")
@@ -35,7 +33,7 @@ def _with_modified_crate_name_impl(ctx):
ctx = ctx,
attr = ctx.attr,
toolchain = toolchain,
- crate_info = rust_common.create_crate_info(
+ crate_info_dict = dict(
name = crate_name,
type = crate_type,
root = crate_root,
@@ -49,6 +47,7 @@ def _with_modified_crate_name_impl(ctx):
compile_data = depset([]),
compile_data_targets = depset([]),
rustc_env = {},
+ _rustc_env_attr = {},
is_test = False,
),
output_hash = output_hash,
diff --git a/test/unit/extra_rustc_flags/extra_rustc_flags_test.bzl b/test/unit/extra_rustc_flags/extra_rustc_flags_test.bzl
index 8e245801..c2055415 100644
--- a/test/unit/extra_rustc_flags/extra_rustc_flags_test.bzl
+++ b/test/unit/extra_rustc_flags/extra_rustc_flags_test.bzl
@@ -54,7 +54,7 @@ extra_rustc_flags_present_test = analysistest.make(
),
},
config_settings = {
- "@//:extra_rustc_flags": [EXTRA_FLAG],
+ str(Label("//:extra_rustc_flags")): [EXTRA_FLAG],
},
)
@@ -67,8 +67,8 @@ extra_rustc_flag_present_test = analysistest.make(
),
},
config_settings = {
- "@//:extra_rustc_flag": [EXTRA_FLAG],
- "@//:extra_rustc_flags": [],
+ str(Label("//:extra_rustc_flag")): [EXTRA_FLAG],
+ str(Label("//:extra_rustc_flags")): [],
},
)
diff --git a/test/unit/force_all_deps_direct/generator.bzl b/test/unit/force_all_deps_direct/generator.bzl
index 571b47e8..959687c6 100644
--- a/test/unit/force_all_deps_direct/generator.bzl
+++ b/test/unit/force_all_deps_direct/generator.bzl
@@ -1,9 +1,6 @@
"""A custom rule that threats all its dependencies as direct dependencies."""
# buildifier: disable=bzl-visibility
-load("//rust/private:common.bzl", "rust_common")
-
-# buildifier: disable=bzl-visibility
load("//rust/private:providers.bzl", "BuildInfo", "CrateInfo", "DepInfo", "DepVariantInfo")
# buildifier: disable=bzl-visibility
@@ -52,7 +49,7 @@ EOF
ctx = ctx,
attr = ctx.attr,
toolchain = toolchain,
- crate_info = rust_common.create_crate_info(
+ crate_info_dict = dict(
name = crate_name,
type = crate_type,
root = rs_file,
@@ -66,6 +63,7 @@ EOF
compile_data = depset([]),
compile_data_targets = depset([]),
rustc_env = {},
+ _rustc_env_attr = {},
is_test = False,
),
output_hash = output_hash,
diff --git a/test/unit/per_crate_rustc_flag/per_crate_rustc_flag_test.bzl b/test/unit/per_crate_rustc_flag/per_crate_rustc_flag_test.bzl
index 3863e816..cdef72e3 100644
--- a/test/unit/per_crate_rustc_flag/per_crate_rustc_flag_test.bzl
+++ b/test/unit/per_crate_rustc_flag/per_crate_rustc_flag_test.bzl
@@ -59,7 +59,7 @@ per_crate_rustc_flag_not_present_test = analysistest.make(_per_crate_rustc_flag_
per_crate_rustc_flag_not_present_non_matching_test = analysistest.make(
_per_crate_rustc_flag_not_present_test,
config_settings = {
- "@//:experimental_per_crate_rustc_flag": [NON_MATCHING_FLAG],
+ str(Label("//:experimental_per_crate_rustc_flag")): [NON_MATCHING_FLAG],
},
)
@@ -72,7 +72,7 @@ per_crate_rustc_flag_present_label_test = analysistest.make(
),
},
config_settings = {
- "@//:experimental_per_crate_rustc_flag": [MATCHING_LABEL_FLAG],
+ str(Label("//:experimental_per_crate_rustc_flag")): [MATCHING_LABEL_FLAG],
},
)
@@ -85,7 +85,7 @@ per_crate_rustc_flag_present_execution_path_test = analysistest.make(
),
},
config_settings = {
- "@//:experimental_per_crate_rustc_flag": [MATCHING_EXECUTION_PATH_FLAG],
+ str(Label("//:experimental_per_crate_rustc_flag")): [MATCHING_EXECUTION_PATH_FLAG],
},
)
@@ -93,7 +93,7 @@ per_crate_rustc_flag_invalid_pattern_test = analysistest.make(
_per_crate_rustc_flag_invalid_pattern_test,
expect_failure = True,
config_settings = {
- "@//:experimental_per_crate_rustc_flag": [INVALID_FLAG],
+ str(Label("//:experimental_per_crate_rustc_flag")): [INVALID_FLAG],
},
)
diff --git a/test/unit/pipelined_compilation/pipelined_compilation_test.bzl b/test/unit/pipelined_compilation/pipelined_compilation_test.bzl
index 71f538c9..1c10e6a3 100644
--- a/test/unit/pipelined_compilation/pipelined_compilation_test.bzl
+++ b/test/unit/pipelined_compilation/pipelined_compilation_test.bzl
@@ -12,7 +12,7 @@ NOT_WINDOWS = select({
})
ENABLE_PIPELINING = {
- "@//rust/settings:pipelined_compilation": True,
+ str(Label("//rust/settings:pipelined_compilation")): True,
}
def _second_lib_test_impl(ctx):
diff --git a/test/unit/pipelined_compilation/wrap.bzl b/test/unit/pipelined_compilation/wrap.bzl
index 8c09b4bc..7ceef1c0 100644
--- a/test/unit/pipelined_compilation/wrap.bzl
+++ b/test/unit/pipelined_compilation/wrap.bzl
@@ -1,9 +1,6 @@
"""A custom rule that wraps a crate called to_wrap."""
# buildifier: disable=bzl-visibility
-load("//rust/private:common.bzl", "rust_common")
-
-# buildifier: disable=bzl-visibility
load("//rust/private:providers.bzl", "BuildInfo", "CrateInfo", "DepInfo", "DepVariantInfo")
# buildifier: disable=bzl-visibility
@@ -61,7 +58,7 @@ EOF
ctx = ctx,
attr = ctx.attr,
toolchain = toolchain,
- crate_info = rust_common.create_crate_info(
+ crate_info_dict = dict(
name = crate_name,
type = crate_type,
root = rs_file,
@@ -76,6 +73,7 @@ EOF
compile_data = depset([]),
compile_data_targets = depset([]),
rustc_env = {},
+ _rustc_env_attr = {},
is_test = False,
),
output_hash = output_hash,
diff --git a/test/unit/proc_macro/leaks_deps/proc_macro_does_not_leak_deps.bzl b/test/unit/proc_macro/leaks_deps/proc_macro_does_not_leak_deps.bzl
index d302647e..f246e1dd 100644
--- a/test/unit/proc_macro/leaks_deps/proc_macro_does_not_leak_deps.bzl
+++ b/test/unit/proc_macro/leaks_deps/proc_macro_does_not_leak_deps.bzl
@@ -140,7 +140,12 @@ def _proc_macro_does_not_leak_lib_deps_test():
target_compatible_with = NOT_WINDOWS,
)
-proc_macro_does_not_leak_lib_deps_test = analysistest.make(_proc_macro_does_not_leak_lib_deps_impl, config_settings = {"@//rust/settings:pipelined_compilation": True})
+proc_macro_does_not_leak_lib_deps_test = analysistest.make(
+ _proc_macro_does_not_leak_lib_deps_impl,
+ config_settings = {
+ str(Label("//rust/settings:pipelined_compilation")): True,
+ },
+)
def proc_macro_does_not_leak_deps_test_suite(name):
"""Entry-point macro called from the BUILD file.
diff --git a/test/unit/rustdoc/rustdoc_unit_test.bzl b/test/unit/rustdoc/rustdoc_unit_test.bzl
index b4221399..535c4243 100644
--- a/test/unit/rustdoc/rustdoc_unit_test.bzl
+++ b/test/unit/rustdoc/rustdoc_unit_test.bzl
@@ -111,6 +111,18 @@ def _rustdoc_zip_output_test_impl(ctx):
return analysistest.end(env)
+def _rustdoc_with_json_error_format_test_impl(ctx):
+ env = analysistest.begin(ctx)
+ tut = analysistest.target_under_test(env)
+
+ _common_rustdoc_checks(env, tut)
+
+ action = _get_rustdoc_action(env, tut)
+
+ assert_argv_contains(env, action, "--error-format=json")
+
+ return analysistest.end(env)
+
rustdoc_for_lib_test = analysistest.make(_rustdoc_for_lib_test_impl)
rustdoc_for_bin_test = analysistest.make(_rustdoc_for_bin_test_impl)
rustdoc_for_proc_macro_test = analysistest.make(_rustdoc_for_proc_macro_test_impl)
@@ -119,6 +131,9 @@ rustdoc_for_bin_with_transitive_proc_macro_test = analysistest.make(_rustdoc_for
rustdoc_for_lib_with_cc_lib_test = analysistest.make(_rustdoc_for_lib_with_cc_lib_test_impl)
rustdoc_with_args_test = analysistest.make(_rustdoc_with_args_test_impl)
rustdoc_zip_output_test = analysistest.make(_rustdoc_zip_output_test_impl)
+rustdoc_with_json_error_format_test = analysistest.make(_rustdoc_with_json_error_format_test_impl, config_settings = {
+ str(Label("//:error_format")): "json",
+})
def _target_maker(rule_fn, name, rustdoc_deps = [], **kwargs):
rule_fn(
@@ -321,6 +336,11 @@ def rustdoc_test_suite(name):
target_under_test = ":rustdoc_with_args",
)
+ rustdoc_with_json_error_format_test(
+ name = "rustdoc_with_json_error_format_test",
+ target_under_test = ":lib_doc",
+ )
+
native.filegroup(
name = "lib_doc_zip",
srcs = [":lib_doc.zip"],
@@ -340,6 +360,7 @@ def rustdoc_test_suite(name):
":rustdoc_for_lib_with_proc_macro_test",
":rustdoc_for_lib_with_cc_lib_test",
":rustdoc_with_args_test",
+ ":rustdoc_with_json_error_format_test",
":rustdoc_zip_output_test",
],
)
diff --git a/test/unit/stdlib/stdlib.bzl b/test/unit/stdlib/stdlib.bzl
index 6a466346..3aa18cc3 100644
--- a/test/unit/stdlib/stdlib.bzl
+++ b/test/unit/stdlib/stdlib.bzl
@@ -33,7 +33,7 @@ def _stdlibs(tut):
for li in tut[CcInfo].linking_context.linker_inputs.to_list()
for lib in li.libraries
]
- stdlibs = [lib for lib in libs if (tut.label.name not in lib.basename)]
+ stdlibs = [lib for lib in libs if (lib and tut.label.name not in lib.basename)]
return stdlibs
def _libstd_ordering_test_impl(ctx):
diff --git a/util/fetch_shas_NIGHTLY_ISO_DATES.txt b/util/fetch_shas_NIGHTLY_ISO_DATES.txt
index 8735c58e..56bb4ec3 100644
--- a/util/fetch_shas_NIGHTLY_ISO_DATES.txt
+++ b/util/fetch_shas_NIGHTLY_ISO_DATES.txt
@@ -31,3 +31,4 @@
2023-08-03
2023-08-24
2023-09-19
+2023-10-05
diff --git a/util/fetch_shas_VERSIONS.txt b/util/fetch_shas_VERSIONS.txt
index 2088c77d..da596f2d 100644
--- a/util/fetch_shas_VERSIONS.txt
+++ b/util/fetch_shas_VERSIONS.txt
@@ -63,3 +63,4 @@
1.71.1
1.72.0
1.72.1
+1.73.0
diff --git a/version.bzl b/version.bzl
index 2078a983..ffbaf607 100644
--- a/version.bzl
+++ b/version.bzl
@@ -1,3 +1,3 @@
"""The version of rules_rust."""
-VERSION = "0.28.0"
+VERSION = "0.29.0"