diff --git a/compiler/rustc_ast/src/lib.rs b/compiler/rustc_ast/src/lib.rs index cbdc89f9deedc..0e3ab0a4a4c3b 100644 --- a/compiler/rustc_ast/src/lib.rs +++ b/compiler/rustc_ast/src/lib.rs @@ -5,7 +5,6 @@ //! This API is completely unstable and subject to change. // tidy-alphabetical-start -#![cfg_attr(bootstrap, feature(array_windows))] #![doc(test(attr(deny(warnings), allow(internal_features))))] #![feature(associated_type_defaults)] #![feature(box_patterns)] diff --git a/compiler/rustc_attr_parsing/src/attributes/crate_level.rs b/compiler/rustc_attr_parsing/src/attributes/crate_level.rs index 1829ced70c93f..a367e699fcb96 100644 --- a/compiler/rustc_attr_parsing/src/attributes/crate_level.rs +++ b/compiler/rustc_attr_parsing/src/attributes/crate_level.rs @@ -1,4 +1,8 @@ -use rustc_hir::attrs::WindowsSubsystemKind; +use rustc_hir::attrs::{CrateType, WindowsSubsystemKind}; +use rustc_hir::lints::AttributeLintKind; +use rustc_session::lint::builtin::UNKNOWN_CRATE_TYPES; +use rustc_span::Symbol; +use rustc_span::edit_distance::find_best_match_for_name; use super::prelude::*; @@ -26,6 +30,56 @@ impl SingleAttributeParser for CrateNameParser { } } +pub(crate) struct CrateTypeParser; + +impl CombineAttributeParser for CrateTypeParser { + const PATH: &[Symbol] = &[sym::crate_type]; + type Item = CrateType; + const CONVERT: ConvertFn = |items, _| AttributeKind::CrateType(items); + + const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]); + + const TEMPLATE: AttributeTemplate = + template!(NameValueStr: "crate type", "https://doc.rust-lang.org/reference/linkage.html"); + + fn extend( + cx: &mut AcceptContext<'_, '_, S>, + args: &ArgParser, + ) -> impl IntoIterator { + let ArgParser::NameValue(n) = args else { + cx.expected_name_value(cx.attr_span, None); + return None; + }; + + let Some(crate_type) = n.value_as_str() else { + cx.expected_string_literal(n.value_span, Some(n.value_as_lit())); + return None; + }; + + let Ok(crate_type) = crate_type.try_into() else { + // We don't error on invalid `#![crate_type]` when not applied to a crate + if cx.shared.target == Target::Crate { + let candidate = find_best_match_for_name( + &CrateType::all_stable().iter().map(|(name, _)| *name).collect::>(), + crate_type, + None, + ); + cx.emit_lint( + UNKNOWN_CRATE_TYPES, + AttributeLintKind::CrateTypeUnknown { + span: n.value_span, + suggested: candidate, + }, + n.value_span, + ); + } + return None; + }; + + Some(crate_type) + } +} + pub(crate) struct RecursionLimitParser; impl SingleAttributeParser for RecursionLimitParser { diff --git a/compiler/rustc_attr_parsing/src/context.rs b/compiler/rustc_attr_parsing/src/context.rs index 2febcd6559912..e500be68e2410 100644 --- a/compiler/rustc_attr_parsing/src/context.rs +++ b/compiler/rustc_attr_parsing/src/context.rs @@ -28,10 +28,10 @@ use crate::attributes::codegen_attrs::{ }; use crate::attributes::confusables::ConfusablesParser; use crate::attributes::crate_level::{ - CrateNameParser, MoveSizeLimitParser, NeedsPanicRuntimeParser, NoBuiltinsParser, NoCoreParser, - NoMainParser, NoStdParser, PanicRuntimeParser, PatternComplexityLimitParser, - ProfilerRuntimeParser, RecursionLimitParser, RustcCoherenceIsCoreParser, TypeLengthLimitParser, - WindowsSubsystemParser, + CrateNameParser, CrateTypeParser, MoveSizeLimitParser, NeedsPanicRuntimeParser, + NoBuiltinsParser, NoCoreParser, NoMainParser, NoStdParser, PanicRuntimeParser, + PatternComplexityLimitParser, ProfilerRuntimeParser, RecursionLimitParser, + RustcCoherenceIsCoreParser, TypeLengthLimitParser, WindowsSubsystemParser, }; use crate::attributes::debugger::DebuggerViualizerParser; use crate::attributes::deprecation::DeprecationParser; @@ -193,6 +193,7 @@ attribute_parsers!( // tidy-alphabetical-start Combine, Combine, + Combine, Combine, Combine, Combine, diff --git a/compiler/rustc_codegen_llvm/src/debuginfo/gdb.rs b/compiler/rustc_codegen_llvm/src/debuginfo/gdb.rs index 3a750b6b53eb1..f88f0c2fb0994 100644 --- a/compiler/rustc_codegen_llvm/src/debuginfo/gdb.rs +++ b/compiler/rustc_codegen_llvm/src/debuginfo/gdb.rs @@ -92,7 +92,7 @@ pub(crate) fn needs_gdb_debug_scripts_section(cx: &CodegenCx<'_, '_>) -> bool { CrateType::Executable | CrateType::Dylib | CrateType::Cdylib - | CrateType::Staticlib + | CrateType::StaticLib | CrateType::Sdylib => { // These are crate types for which we will embed pretty printers since they // are treated as leaf crates. diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs index e4e954d226116..c8109db86e2f2 100644 --- a/compiler/rustc_codegen_ssa/src/back/link.rs +++ b/compiler/rustc_codegen_ssa/src/back/link.rs @@ -136,7 +136,7 @@ pub fn link_binary( ) .build(&out_filename); } - CrateType::Staticlib => { + CrateType::StaticLib => { link_staticlib( sess, archive_builder_builder, @@ -474,7 +474,7 @@ fn link_staticlib( let res = each_linked_rlib( &codegen_results.crate_info, - Some(CrateType::Staticlib), + Some(CrateType::StaticLib), &mut |cnum, path| { let lto = are_upstream_rust_objects_already_included(sess) && !ignored_for_lto(sess, &codegen_results.crate_info, cnum); @@ -532,7 +532,7 @@ fn link_staticlib( let fmts = codegen_results .crate_info .dependency_formats - .get(&CrateType::Staticlib) + .get(&CrateType::StaticLib) .expect("no dependency formats for staticlib"); let mut all_rust_dylibs = vec![]; @@ -1210,7 +1210,7 @@ fn add_sanitizer_libraries( return; } - if matches!(crate_type, CrateType::Rlib | CrateType::Staticlib) { + if matches!(crate_type, CrateType::Rlib | CrateType::StaticLib) { return; } diff --git a/compiler/rustc_codegen_ssa/src/back/linker.rs b/compiler/rustc_codegen_ssa/src/back/linker.rs index 637d54dd06c65..241c8d6bfd183 100644 --- a/compiler/rustc_codegen_ssa/src/back/linker.rs +++ b/compiler/rustc_codegen_ssa/src/back/linker.rs @@ -1857,7 +1857,7 @@ pub(crate) fn linked_symbols( | CrateType::Cdylib | CrateType::Dylib | CrateType::Sdylib => (), - CrateType::Staticlib | CrateType::Rlib => { + CrateType::StaticLib | CrateType::Rlib => { // These are not linked, so no need to generate symbols.o for them. return Vec::new(); } diff --git a/compiler/rustc_codegen_ssa/src/back/lto.rs b/compiler/rustc_codegen_ssa/src/back/lto.rs index ef4c193c4c2a1..677268e367c2d 100644 --- a/compiler/rustc_codegen_ssa/src/back/lto.rs +++ b/compiler/rustc_codegen_ssa/src/back/lto.rs @@ -67,7 +67,7 @@ fn crate_type_allows_lto(crate_type: CrateType) -> bool { match crate_type { CrateType::Executable | CrateType::Dylib - | CrateType::Staticlib + | CrateType::StaticLib | CrateType::Cdylib | CrateType::ProcMacro | CrateType::Sdylib => true, diff --git a/compiler/rustc_codegen_ssa/src/back/symbol_export.rs b/compiler/rustc_codegen_ssa/src/back/symbol_export.rs index 59d0f5ee9d54c..9b26a653fbd7e 100644 --- a/compiler/rustc_codegen_ssa/src/back/symbol_export.rs +++ b/compiler/rustc_codegen_ssa/src/back/symbol_export.rs @@ -28,7 +28,7 @@ fn threshold(tcx: TyCtxt<'_>) -> SymbolExportLevel { fn crate_export_threshold(crate_type: CrateType) -> SymbolExportLevel { match crate_type { - CrateType::Executable | CrateType::Staticlib | CrateType::ProcMacro | CrateType::Cdylib => { + CrateType::Executable | CrateType::StaticLib | CrateType::ProcMacro | CrateType::Cdylib => { SymbolExportLevel::C } CrateType::Rlib | CrateType::Dylib | CrateType::Sdylib => SymbolExportLevel::Rust, diff --git a/compiler/rustc_codegen_ssa/src/base.rs b/compiler/rustc_codegen_ssa/src/base.rs index 982a814c1c86d..43767dff92bfc 100644 --- a/compiler/rustc_codegen_ssa/src/base.rs +++ b/compiler/rustc_codegen_ssa/src/base.rs @@ -1009,7 +1009,7 @@ impl CrateInfo { info.linked_symbols .iter_mut() .filter(|(crate_type, _)| { - !matches!(crate_type, CrateType::Rlib | CrateType::Staticlib) + !matches!(crate_type, CrateType::Rlib | CrateType::StaticLib) }) .for_each(|(_, linked_symbols)| { let mut symbols = missing_weak_lang_items @@ -1041,7 +1041,7 @@ impl CrateInfo { // this is a rare use case and we don't want to slow down the common case. false } - CrateType::Staticlib | CrateType::Rlib => { + CrateType::StaticLib | CrateType::Rlib => { // We don't invoke the linker for these, so we don't need to collect the NatVis for // them. false diff --git a/compiler/rustc_codegen_ssa/src/traits/backend.rs b/compiler/rustc_codegen_ssa/src/traits/backend.rs index cb74e2e46d650..625551d17d9d6 100644 --- a/compiler/rustc_codegen_ssa/src/traits/backend.rs +++ b/compiler/rustc_codegen_ssa/src/traits/backend.rs @@ -67,7 +67,7 @@ pub trait CodegenBackend { CrateType::Executable, CrateType::Dylib, CrateType::Rlib, - CrateType::Staticlib, + CrateType::StaticLib, CrateType::Cdylib, CrateType::ProcMacro, CrateType::Sdylib, diff --git a/compiler/rustc_const_eval/src/const_eval/type_info.rs b/compiler/rustc_const_eval/src/const_eval/type_info.rs index e6092fc3787c6..3fcf6f94b5bf3 100644 --- a/compiler/rustc_const_eval/src/const_eval/type_info.rs +++ b/compiler/rustc_const_eval/src/const_eval/type_info.rs @@ -66,6 +66,14 @@ impl<'tcx> InterpCx<'tcx, CompileTimeMachine<'tcx>> { variant } + ty::Slice(ty) => { + let (variant, variant_place) = downcast(sym::Slice)?; + let slice_place = self.project_field(&variant_place, FieldIdx::ZERO)?; + + self.write_slice_type_info(slice_place, *ty)?; + + variant + } ty::Bool => { let (variant, _variant_place) = downcast(sym::Bool)?; variant @@ -124,7 +132,6 @@ impl<'tcx> InterpCx<'tcx, CompileTimeMachine<'tcx>> { ty::Adt(_, _) | ty::Foreign(_) | ty::Pat(_, _) - | ty::Slice(_) | ty::FnDef(..) | ty::FnPtr(..) | ty::UnsafeBinder(..) @@ -254,6 +261,27 @@ impl<'tcx> InterpCx<'tcx, CompileTimeMachine<'tcx>> { interp_ok(()) } + pub(crate) fn write_slice_type_info( + &mut self, + place: impl Writeable<'tcx, CtfeProvenance>, + ty: Ty<'tcx>, + ) -> InterpResult<'tcx> { + // Iterate over all fields of `type_info::Slice`. + for (field_idx, field) in + place.layout().ty.ty_adt_def().unwrap().non_enum_variant().fields.iter_enumerated() + { + let field_place = self.project_field(&place, field_idx)?; + + match field.name { + // Write the `TypeId` of the slice's elements to the `element_ty` field. + sym::element_ty => self.write_type_id(ty, &field_place)?, + other => span_bug!(self.tcx.def_span(field.did), "unimplemented field {other}"), + } + } + + interp_ok(()) + } + fn write_int_type_info( &mut self, place: impl Writeable<'tcx, CtfeProvenance>, diff --git a/compiler/rustc_data_structures/src/lib.rs b/compiler/rustc_data_structures/src/lib.rs index 8377213850b86..e07c1cc7dbd81 100644 --- a/compiler/rustc_data_structures/src/lib.rs +++ b/compiler/rustc_data_structures/src/lib.rs @@ -10,7 +10,6 @@ #![allow(internal_features)] #![allow(rustc::default_hash_types)] #![allow(rustc::potential_query_instability)] -#![cfg_attr(bootstrap, feature(array_windows))] #![deny(unsafe_op_in_unsafe_fn)] #![feature(allocator_api)] #![feature(ascii_char)] diff --git a/compiler/rustc_driver_impl/src/lib.rs b/compiler/rustc_driver_impl/src/lib.rs index 43b2cd6829100..38ee87601614b 100644 --- a/compiler/rustc_driver_impl/src/lib.rs +++ b/compiler/rustc_driver_impl/src/lib.rs @@ -42,6 +42,7 @@ use rustc_feature::find_gated_cfg; // `rust_index` isn't used in this crate's code, but it must be named in the // `Cargo.toml` for the `rustc_randomized_layouts` feature. use rustc_index as _; +use rustc_interface::passes::collect_crate_types; use rustc_interface::util::{self, get_codegen_backend}; use rustc_interface::{Linker, create_and_enter_global_ctxt, interface, passes}; use rustc_lint::unerased_lint_store; @@ -56,10 +57,10 @@ use rustc_session::config::{ }; use rustc_session::getopts::{self, Matches}; use rustc_session::lint::{Lint, LintId}; -use rustc_session::output::{CRATE_TYPES, collect_crate_types, invalid_output_for_target}; +use rustc_session::output::invalid_output_for_target; use rustc_session::{EarlyDiagCtxt, Session, config}; -use rustc_span::FileName; use rustc_span::def_id::LOCAL_CRATE; +use rustc_span::{DUMMY_SP, FileName}; use rustc_target::json::ToJson; use rustc_target::spec::{Target, TargetTuple}; use tracing::trace; @@ -698,6 +699,7 @@ fn print_crate_info( &codegen_backend.supported_crate_types(sess), codegen_backend.name(), attrs, + DUMMY_SP, ); for &style in &crate_types { let fname = rustc_session::output::filename_for_input( @@ -849,7 +851,7 @@ fn print_crate_info( } } SupportedCrateTypes => { - let supported_crate_types = CRATE_TYPES + let supported_crate_types = CrateType::all() .iter() .filter(|(_, crate_type)| !invalid_output_for_target(sess, *crate_type)) .filter(|(_, crate_type)| *crate_type != CrateType::Sdylib) diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs index 052123afa4846..68d825a4514a9 100644 --- a/compiler/rustc_errors/src/lib.rs +++ b/compiler/rustc_errors/src/lib.rs @@ -5,7 +5,6 @@ // tidy-alphabetical-start #![allow(internal_features)] #![allow(rustc::direct_use_of_rustc_type_ir)] -#![cfg_attr(bootstrap, feature(array_windows))] #![feature(assert_matches)] #![feature(associated_type_defaults)] #![feature(box_patterns)] diff --git a/compiler/rustc_expand/src/lib.rs b/compiler/rustc_expand/src/lib.rs index 1814abd141d8a..89540a9a5c5b4 100644 --- a/compiler/rustc_expand/src/lib.rs +++ b/compiler/rustc_expand/src/lib.rs @@ -1,6 +1,5 @@ // tidy-alphabetical-start #![allow(internal_features)] -#![cfg_attr(bootstrap, feature(array_windows))] #![feature(associated_type_defaults)] #![feature(if_let_guard)] #![feature(macro_metavar_expr)] diff --git a/compiler/rustc_feature/src/removed.rs b/compiler/rustc_feature/src/removed.rs index 6aaf4542260cf..4f4691468911a 100644 --- a/compiler/rustc_feature/src/removed.rs +++ b/compiler/rustc_feature/src/removed.rs @@ -61,7 +61,7 @@ declare_features! ( /// Allows a test to fail without failing the whole suite. (removed, allow_fail, "1.60.0", Some(46488), Some("removed due to no clear use cases"), 93416), /// Allows users to enforce equality of associated constants `TraitImpl`. - (removed, associated_const_equality, "CURRENT_RUSTC_VERSION", Some(92827), + (removed, associated_const_equality, "1.94.0", Some(92827), Some("merged into `min_generic_const_args`")), (removed, await_macro, "1.38.0", Some(50547), Some("subsumed by `.await` syntax"), 62293), @@ -275,7 +275,7 @@ declare_features! ( (removed, static_nobundle, "1.63.0", Some(37403), Some(r#"subsumed by `#[link(kind = "static", modifiers = "-bundle", ...)]`"#), 95818), /// Allows string patterns to dereference values to match them. - (removed, string_deref_patterns, "CURRENT_RUSTC_VERSION", Some(87121), Some("superseded by `deref_patterns`"), 150530), + (removed, string_deref_patterns, "1.94.0", Some(87121), Some("superseded by `deref_patterns`"), 150530), (removed, struct_inherit, "1.0.0", None, None), (removed, test_removed_feature, "1.0.0", None, None), /// Allows using items which are missing stability attributes diff --git a/compiler/rustc_feature/src/unstable.rs b/compiler/rustc_feature/src/unstable.rs index 8959bc586af7b..105eb573967df 100644 --- a/compiler/rustc_feature/src/unstable.rs +++ b/compiler/rustc_feature/src/unstable.rs @@ -222,7 +222,7 @@ declare_features! ( /// Allows writing custom MIR (internal, custom_mir, "1.65.0", None), /// Implementation details of externally implementable items - (internal, eii_internals, "CURRENT_RUSTC_VERSION", None), + (internal, eii_internals, "1.94.0", None), /// Outputs useful `assert!` messages (unstable, generic_assert, "1.63.0", None), /// Allows using the #[rustc_intrinsic] attribute. @@ -477,7 +477,7 @@ declare_features! ( /// Allows using `#[export_stable]` which indicates that an item is exportable. (incomplete, export_stable, "1.88.0", Some(139939)), /// Externally implementable items - (unstable, extern_item_impls, "CURRENT_RUSTC_VERSION", Some(125418)), + (unstable, extern_item_impls, "1.94.0", Some(125418)), /// Allows defining `extern type`s. (unstable, extern_types, "1.23.0", Some(43467)), /// Allow using 128-bit (quad precision) floating point numbers. @@ -667,7 +667,7 @@ declare_features! ( /// Allows using `try {...}` expressions. (unstable, try_blocks, "1.29.0", Some(31436)), /// Allows using `try bikeshed TargetType {...}` expressions. - (unstable, try_blocks_heterogeneous, "CURRENT_RUSTC_VERSION", Some(149488)), + (unstable, try_blocks_heterogeneous, "1.94.0", Some(149488)), /// Allows `impl Trait` to be used inside type aliases (RFC 2515). (unstable, type_alias_impl_trait, "1.38.0", Some(63063)), /// Allows creation of instances of a struct by moving fields that have diff --git a/compiler/rustc_fluent_macro/src/fluent.rs b/compiler/rustc_fluent_macro/src/fluent.rs index 46d11d0469a43..41357bb1ac761 100644 --- a/compiler/rustc_fluent_macro/src/fluent.rs +++ b/compiler/rustc_fluent_macro/src/fluent.rs @@ -8,10 +8,7 @@ use fluent_syntax::ast::{ Attribute, Entry, Expression, Identifier, InlineExpression, Message, Pattern, PatternElement, }; use fluent_syntax::parser::ParserError; -#[cfg(not(bootstrap))] use proc_macro::tracked::path; -#[cfg(bootstrap)] -use proc_macro::tracked_path::path; use proc_macro::{Diagnostic, Level, Span}; use proc_macro2::TokenStream; use quote::quote; diff --git a/compiler/rustc_fluent_macro/src/lib.rs b/compiler/rustc_fluent_macro/src/lib.rs index e9ddeb3b971e3..9cd947c4c6722 100644 --- a/compiler/rustc_fluent_macro/src/lib.rs +++ b/compiler/rustc_fluent_macro/src/lib.rs @@ -1,8 +1,7 @@ // tidy-alphabetical-start #![allow(rustc::default_hash_types)] -#![cfg_attr(bootstrap, feature(track_path))] -#![cfg_attr(not(bootstrap), feature(proc_macro_tracked_path))] #![feature(proc_macro_diagnostic)] +#![feature(proc_macro_tracked_path)] // tidy-alphabetical-end use proc_macro::TokenStream; diff --git a/compiler/rustc_hir/src/attrs/data_structures.rs b/compiler/rustc_hir/src/attrs/data_structures.rs index 65b3c2ec2df7d..8a7dee15d4f48 100644 --- a/compiler/rustc_hir/src/attrs/data_structures.rs +++ b/compiler/rustc_hir/src/attrs/data_structures.rs @@ -588,6 +588,108 @@ pub enum CollapseMacroDebuginfo { Yes = 3, } +/// Crate type, as specified by `#![crate_type]` +#[derive(Copy, Clone, Debug, Hash, PartialEq, Default, PartialOrd, Eq, Ord)] +#[derive(HashStable_Generic, Encodable, Decodable, PrintAttribute)] +pub enum CrateType { + /// `#![crate_type = "bin"]` + Executable, + /// `#![crate_type = "dylib"]` + Dylib, + /// `#![crate_type = "rlib"]` or `#![crate_type = "lib"]` + #[default] + Rlib, + /// `#![crate_type = "staticlib"]` + StaticLib, + /// `#![crate_type = "cdylib"]` + Cdylib, + /// `#![crate_type = "proc-macro"]` + ProcMacro, + /// `#![crate_type = "sdylib"]` + // Unstable; feature(export_stable) + Sdylib, +} + +impl CrateType { + /// Pairs of each `#[crate_type] = "..."` value and the crate type it resolves to + pub fn all() -> &'static [(Symbol, Self)] { + debug_assert_eq!(CrateType::default(), CrateType::Rlib); + &[ + (rustc_span::sym::lib, CrateType::Rlib), + (rustc_span::sym::rlib, CrateType::Rlib), + (rustc_span::sym::dylib, CrateType::Dylib), + (rustc_span::sym::cdylib, CrateType::Cdylib), + (rustc_span::sym::staticlib, CrateType::StaticLib), + (rustc_span::sym::proc_dash_macro, CrateType::ProcMacro), + (rustc_span::sym::bin, CrateType::Executable), + (rustc_span::sym::sdylib, CrateType::Sdylib), + ] + } + + /// Same as [`CrateType::all`], but does not include unstable options. + /// Used for diagnostics. + pub fn all_stable() -> &'static [(Symbol, Self)] { + debug_assert_eq!(CrateType::default(), CrateType::Rlib); + &[ + (rustc_span::sym::lib, CrateType::Rlib), + (rustc_span::sym::rlib, CrateType::Rlib), + (rustc_span::sym::dylib, CrateType::Dylib), + (rustc_span::sym::cdylib, CrateType::Cdylib), + (rustc_span::sym::staticlib, CrateType::StaticLib), + (rustc_span::sym::proc_dash_macro, CrateType::ProcMacro), + (rustc_span::sym::bin, CrateType::Executable), + ] + } + + pub fn has_metadata(self) -> bool { + match self { + CrateType::Rlib | CrateType::Dylib | CrateType::ProcMacro => true, + CrateType::Executable + | CrateType::Cdylib + | CrateType::StaticLib + | CrateType::Sdylib => false, + } + } +} + +impl TryFrom for CrateType { + type Error = (); + + fn try_from(value: Symbol) -> Result { + Ok(match value { + rustc_span::sym::bin => CrateType::Executable, + rustc_span::sym::dylib => CrateType::Dylib, + rustc_span::sym::staticlib => CrateType::StaticLib, + rustc_span::sym::cdylib => CrateType::Cdylib, + rustc_span::sym::rlib => CrateType::Rlib, + rustc_span::sym::lib => CrateType::default(), + rustc_span::sym::proc_dash_macro => CrateType::ProcMacro, + rustc_span::sym::sdylib => CrateType::Sdylib, + _ => return Err(()), + }) + } +} + +impl std::fmt::Display for CrateType { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match *self { + CrateType::Executable => "bin".fmt(f), + CrateType::Dylib => "dylib".fmt(f), + CrateType::Rlib => "rlib".fmt(f), + CrateType::StaticLib => "staticlib".fmt(f), + CrateType::Cdylib => "cdylib".fmt(f), + CrateType::ProcMacro => "proc-macro".fmt(f), + CrateType::Sdylib => "sdylib".fmt(f), + } + } +} + +impl IntoDiagArg for CrateType { + fn into_diag_arg(self, _: &mut Option) -> DiagArgValue { + self.to_string().into_diag_arg(&mut None) + } +} + /// Represents parsed *built-in* inert attributes. /// /// ## Overview @@ -719,6 +821,9 @@ pub enum AttributeKind { /// Represents `#[crate_name = ...]` CrateName { name: Symbol, name_span: Span, attr_span: Span }, + /// Represents `#![crate_type = ...]` + CrateType(ThinVec), + /// Represents `#[custom_mir]`. CustomMir(Option<(MirDialect, Span)>, Option<(MirPhase, Span)>, Span), diff --git a/compiler/rustc_hir/src/attrs/encode_cross_crate.rs b/compiler/rustc_hir/src/attrs/encode_cross_crate.rs index 739a5a6d0ea50..356575416aded 100644 --- a/compiler/rustc_hir/src/attrs/encode_cross_crate.rs +++ b/compiler/rustc_hir/src/attrs/encode_cross_crate.rs @@ -40,6 +40,7 @@ impl AttributeKind { Coroutine(..) => No, Coverage(..) => No, CrateName { .. } => No, + CrateType(_) => No, CustomMir(_, _, _) => Yes, DebuggerVisualizer(..) => No, DenyExplicitImpl(..) => No, diff --git a/compiler/rustc_hir_typeck/src/_match.rs b/compiler/rustc_hir_typeck/src/_match.rs index ded03c88a16e9..64c808f2597b3 100644 --- a/compiler/rustc_hir_typeck/src/_match.rs +++ b/compiler/rustc_hir_typeck/src/_match.rs @@ -1,10 +1,11 @@ +use rustc_errors::codes::*; use rustc_errors::{Applicability, Diag}; use rustc_hir::def::{CtorOf, DefKind, Res}; use rustc_hir::def_id::LocalDefId; use rustc_hir::{self as hir, ExprKind, HirId, PatKind}; use rustc_hir_pretty::ty_to_string; use rustc_middle::ty::{self, Ty}; -use rustc_span::Span; +use rustc_span::{Span, sym}; use rustc_trait_selection::traits::{ MatchExpressionArmCause, ObligationCause, ObligationCauseCode, }; @@ -291,6 +292,23 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { error } + /// Check if the span comes from an assert-like macro expansion. + fn is_from_assert_macro(&self, span: Span) -> bool { + span.ctxt().outer_expn_data().macro_def_id.is_some_and(|def_id| { + matches!( + self.tcx.get_diagnostic_name(def_id), + Some( + sym::assert_macro + | sym::debug_assert_macro + | sym::assert_eq_macro + | sym::assert_ne_macro + | sym::debug_assert_eq_macro + | sym::debug_assert_ne_macro + ) + ) + }) + } + /// Explain why `if` expressions without `else` evaluate to `()` and detect likely irrefutable /// `if let PAT = EXPR {}` expressions that could be turned into `let PAT = EXPR;`. fn explain_if_expr( @@ -302,6 +320,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { then_expr: &'tcx hir::Expr<'tcx>, error: &mut bool, ) { + let is_assert_macro = self.is_from_assert_macro(if_span); + if let Some((if_span, msg)) = ret_reason { err.span_label(if_span, msg); } else if let ExprKind::Block(block, _) = then_expr.kind @@ -309,8 +329,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { { err.span_label(expr.span, "found here"); } - err.note("`if` expressions without `else` evaluate to `()`"); - err.help("consider adding an `else` block that evaluates to the expected type"); + + if is_assert_macro { + err.code(E0308); + err.primary_message("mismatched types"); + } else { + err.note("`if` expressions without `else` evaluate to `()`"); + err.help("consider adding an `else` block that evaluates to the expected type"); + } *error = true; if let ExprKind::Let(hir::LetExpr { span, pat, init, .. }) = cond_expr.kind && let ExprKind::Block(block, _) = then_expr.kind diff --git a/compiler/rustc_interface/messages.ftl b/compiler/rustc_interface/messages.ftl index 1f5c5e74d97ae..d898e9bf7d1e5 100644 --- a/compiler/rustc_interface/messages.ftl +++ b/compiler/rustc_interface/messages.ftl @@ -30,9 +30,6 @@ interface_ignoring_out_dir = ignoring --out-dir flag due to -o flag interface_input_file_would_be_overwritten = the input file "{$path}" would be overwritten by the generated executable -interface_invalid_crate_type_value = invalid `crate_type` value - .suggestion = did you mean - interface_mixed_bin_crate = cannot mix `bin` crate type with others @@ -51,3 +48,9 @@ interface_proc_macro_crate_panic_abort = interface_temps_dir_error = failed to find or create the directory specified by `--temps-dir` + +interface_unsupported_crate_type_for_codegen_backend = + dropping unsupported crate type `{$crate_type}` for codegen backend `{$codegen_backend}` + +interface_unsupported_crate_type_for_target = + dropping unsupported crate type `{$crate_type}` for target `{$target_triple}` diff --git a/compiler/rustc_interface/src/errors.rs b/compiler/rustc_interface/src/errors.rs index 727e09c7562b5..aee8ec20e14d1 100644 --- a/compiler/rustc_interface/src/errors.rs +++ b/compiler/rustc_interface/src/errors.rs @@ -1,8 +1,10 @@ use std::io; use std::path::Path; -use rustc_macros::{Diagnostic, LintDiagnostic, Subdiagnostic}; +use rustc_hir::attrs::CrateType; +use rustc_macros::Diagnostic; use rustc_span::{Span, Symbol}; +use rustc_target::spec::TargetTuple; #[derive(Diagnostic)] #[diag(interface_crate_name_does_not_match)] @@ -109,17 +111,16 @@ pub(crate) struct AbiRequiredTargetFeature<'a> { pub enabled: &'a str, } -#[derive(LintDiagnostic)] -#[diag(interface_invalid_crate_type_value)] -pub(crate) struct UnknownCrateTypes { - #[subdiagnostic] - pub sugg: Option, +#[derive(Diagnostic)] +#[diag(interface_unsupported_crate_type_for_codegen_backend)] +pub(crate) struct UnsupportedCrateTypeForCodegenBackend { + pub(crate) crate_type: CrateType, + pub(crate) codegen_backend: &'static str, } -#[derive(Subdiagnostic)] -#[suggestion(interface_suggestion, code = r#""{snippet}""#, applicability = "maybe-incorrect")] -pub(crate) struct UnknownCrateTypesSub { - #[primary_span] - pub span: Span, - pub snippet: Symbol, +#[derive(Diagnostic)] +#[diag(interface_unsupported_crate_type_for_target)] +pub(crate) struct UnsupportedCrateTypeForTarget<'a> { + pub(crate) crate_type: CrateType, + pub(crate) target_triple: &'a TargetTuple, } diff --git a/compiler/rustc_interface/src/passes.rs b/compiler/rustc_interface/src/passes.rs index a7e94e1c01550..3228a0499accc 100644 --- a/compiler/rustc_interface/src/passes.rs +++ b/compiler/rustc_interface/src/passes.rs @@ -5,8 +5,8 @@ use std::path::{Path, PathBuf}; use std::sync::{Arc, LazyLock, OnceLock}; use std::{env, fs, iter}; -use rustc_ast as ast; -use rustc_attr_parsing::{AttributeParser, ShouldEmit}; +use rustc_ast::{self as ast, CRATE_NODE_ID}; +use rustc_attr_parsing::{AttributeParser, Early, ShouldEmit}; use rustc_codegen_ssa::traits::CodegenBackend; use rustc_codegen_ssa::{CodegenResults, CrateInfo}; use rustc_data_structures::jobserver::Proxy; @@ -17,6 +17,7 @@ use rustc_errors::timings::TimingSection; use rustc_expand::base::{ExtCtxt, LintStoreExpand}; use rustc_feature::Features; use rustc_fs_util::try_canonicalize; +use rustc_hir::Attribute; use rustc_hir::attrs::AttributeKind; use rustc_hir::def_id::{LOCAL_CRATE, StableCrateId, StableCrateIdMap}; use rustc_hir::definitions::Definitions; @@ -35,7 +36,7 @@ use rustc_resolve::{Resolver, ResolverOutputs}; use rustc_session::Session; use rustc_session::config::{CrateType, Input, OutFileName, OutputFilenames, OutputType}; use rustc_session::cstore::Untracked; -use rustc_session::output::{collect_crate_types, filename_for_input}; +use rustc_session::output::{filename_for_input, invalid_output_for_target}; use rustc_session::parse::feature_err; use rustc_session::search_paths::PathKind; use rustc_span::{ @@ -159,8 +160,6 @@ fn configure_and_expand( ) }); - util::check_attr_crate_type(sess, pre_configured_attrs, resolver.lint_buffer()); - // Expand all macros krate = sess.time("macro_expand_crate", || { // Windows dlls do not have rpaths, so they don't know how to find their @@ -929,6 +928,7 @@ pub fn create_and_enter_global_ctxt FnOnce(TyCtxt<'tcx>) -> T>( &compiler.codegen_backend.supported_crate_types(sess), compiler.codegen_backend.name(), &pre_configured_attrs, + krate.spans.inner_span, ); let stable_crate_id = StableCrateId::new( crate_name, @@ -1347,6 +1347,94 @@ pub(crate) fn parse_crate_name( Some((name, name_span)) } +pub fn collect_crate_types( + session: &Session, + backend_crate_types: &[CrateType], + codegen_backend_name: &'static str, + attrs: &[ast::Attribute], + crate_span: Span, +) -> Vec { + // If we're generating a test executable, then ignore all other output + // styles at all other locations + if session.opts.test { + if !session.target.executables { + session.dcx().emit_warn(errors::UnsupportedCrateTypeForTarget { + crate_type: CrateType::Executable, + target_triple: &session.opts.target_triple, + }); + return Vec::new(); + } + return vec![CrateType::Executable]; + } + + // Shadow `sdylib` crate type in interface build. + if session.opts.unstable_opts.build_sdylib_interface { + return vec![CrateType::Rlib]; + } + + // Only check command line flags if present. If no types are specified by + // command line, then reuse the empty `base` Vec to hold the types that + // will be found in crate attributes. + // JUSTIFICATION: before wrapper fn is available + #[allow(rustc::bad_opt_access)] + let mut base = session.opts.crate_types.clone(); + if base.is_empty() { + if let Some(Attribute::Parsed(AttributeKind::CrateType(crate_type))) = + AttributeParser::::parse_limited_should_emit( + session, + attrs, + sym::crate_type, + crate_span, + CRATE_NODE_ID, + None, + ShouldEmit::EarlyFatal { also_emit_lints: false }, + ) + { + base.extend(crate_type); + } + + if base.is_empty() { + base.push(default_output_for_target(session)); + } else { + base.sort(); + base.dedup(); + } + } + + base.retain(|crate_type| { + if invalid_output_for_target(session, *crate_type) { + session.dcx().emit_warn(errors::UnsupportedCrateTypeForTarget { + crate_type: *crate_type, + target_triple: &session.opts.target_triple, + }); + false + } else if !backend_crate_types.contains(crate_type) { + session.dcx().emit_warn(errors::UnsupportedCrateTypeForCodegenBackend { + crate_type: *crate_type, + codegen_backend: codegen_backend_name, + }); + false + } else { + true + } + }); + + base +} + +/// Returns default crate type for target +/// +/// Default crate type is used when crate type isn't provided neither +/// through cmd line arguments nor through crate attributes +/// +/// It is CrateType::Executable for all platforms but iOS as there is no +/// way to run iOS binaries anyway without jailbreaking and +/// interaction with Rust code through static library is the only +/// option for now +fn default_output_for_target(sess: &Session) -> CrateType { + if !sess.target.executables { CrateType::StaticLib } else { CrateType::Executable } +} + fn get_recursion_limit(krate_attrs: &[ast::Attribute], sess: &Session) -> Limit { let attr = AttributeParser::parse_limited_should_emit( sess, diff --git a/compiler/rustc_interface/src/util.rs b/compiler/rustc_interface/src/util.rs index 94f3b056266ee..b3889849430ae 100644 --- a/compiler/rustc_interface/src/util.rs +++ b/compiler/rustc_interface/src/util.rs @@ -6,7 +6,7 @@ use std::sync::{Arc, OnceLock}; use std::{env, thread}; use rustc_ast as ast; -use rustc_attr_parsing::{ShouldEmit, validate_attr}; +use rustc_attr_parsing::ShouldEmit; use rustc_codegen_ssa::back::archive::{ArArchiveBuilderBuilder, ArchiveBuilderBuilder}; use rustc_codegen_ssa::back::link::link_binary; use rustc_codegen_ssa::target_features::cfg_target_feature; @@ -15,16 +15,13 @@ use rustc_codegen_ssa::{CodegenResults, CrateInfo, TargetConfig}; use rustc_data_structures::fx::FxIndexMap; use rustc_data_structures::jobserver::Proxy; use rustc_data_structures::sync; -use rustc_errors::LintBuffer; use rustc_metadata::{DylibError, EncodedMetadata, load_symbol_from_dylib}; use rustc_middle::dep_graph::{WorkProduct, WorkProductId}; use rustc_middle::ty::{CurrentGcx, TyCtxt}; use rustc_session::config::{ Cfg, CrateType, OutFileName, OutputFilenames, OutputTypes, Sysroot, host_tuple, }; -use rustc_session::output::{CRATE_TYPES, categorize_crate_type}; -use rustc_session::{EarlyDiagCtxt, Session, filesearch, lint}; -use rustc_span::edit_distance::find_best_match_for_name; +use rustc_session::{EarlyDiagCtxt, Session, filesearch}; use rustc_span::edition::Edition; use rustc_span::source_map::SourceMapInputs; use rustc_span::{SessionGlobals, Symbol, sym}; @@ -575,54 +572,6 @@ fn get_codegen_sysroot( } } -pub(crate) fn check_attr_crate_type( - sess: &Session, - attrs: &[ast::Attribute], - lint_buffer: &mut LintBuffer, -) { - // Unconditionally collect crate types from attributes to make them used - for a in attrs.iter() { - if a.has_name(sym::crate_type) { - if let Some(n) = a.value_str() { - if categorize_crate_type(n).is_some() { - return; - } - - if let ast::MetaItemKind::NameValue(spanned) = a.meta_kind().unwrap() { - let span = spanned.span; - let candidate = find_best_match_for_name( - &CRATE_TYPES.iter().map(|(k, _)| *k).collect::>(), - n, - None, - ); - lint_buffer.buffer_lint( - lint::builtin::UNKNOWN_CRATE_TYPES, - ast::CRATE_NODE_ID, - span, - errors::UnknownCrateTypes { - sugg: candidate - .map(|cand| errors::UnknownCrateTypesSub { span, snippet: cand }), - }, - ); - } - } else { - // This is here mainly to check for using a macro, such as - // `#![crate_type = foo!()]`. That is not supported since the - // crate type needs to be known very early in compilation long - // before expansion. Otherwise, validation would normally be - // caught during semantic analysis via `TyCtxt::check_mod_attrs`, - // but by the time that runs the macro is expanded, and it doesn't - // give an error. - validate_attr::emit_fatal_malformed_builtin_attribute( - &sess.psess, - a, - sym::crate_type, - ); - } - } - } -} - fn multiple_output_types_to_stdout( output_types: &OutputTypes, single_output_file_is_stdout: bool, diff --git a/compiler/rustc_lint/messages.ftl b/compiler/rustc_lint/messages.ftl index 507f1abc4900f..867b937d4090d 100644 --- a/compiler/rustc_lint/messages.ftl +++ b/compiler/rustc_lint/messages.ftl @@ -503,6 +503,9 @@ lint_invalid_asm_label_named = avoid using named labels in inline assembly .note = see the asm section of Rust By Example for more information lint_invalid_asm_label_no_span = the label may be declared in the expansion of a macro +lint_invalid_crate_type_value = invalid `crate_type` value + .suggestion = did you mean + # FIXME: we should ordinalize $valid_up_to when we add support for doing so lint_invalid_from_utf8_checked = calls to `{$method}` with an invalid literal always return an error .label = the literal was valid UTF-8 up to the {$valid_up_to} bytes diff --git a/compiler/rustc_lint/src/early/diagnostics.rs b/compiler/rustc_lint/src/early/diagnostics.rs index 037a31c162d2b..377b3c439453e 100644 --- a/compiler/rustc_lint/src/early/diagnostics.rs +++ b/compiler/rustc_lint/src/early/diagnostics.rs @@ -423,5 +423,10 @@ pub fn decorate_attribute_lint( &AttributeLintKind::DoNotRecommendDoesNotExpectArgs => { lints::DoNotRecommendDoesNotExpectArgs.decorate_lint(diag) } + + &AttributeLintKind::CrateTypeUnknown { span, suggested } => lints::UnknownCrateTypes { + sugg: suggested.map(|s| lints::UnknownCrateTypesSuggestion { span, snippet: s }), + } + .decorate_lint(diag), } } diff --git a/compiler/rustc_lint/src/lib.rs b/compiler/rustc_lint/src/lib.rs index 0105446b545d5..80b32645a8953 100644 --- a/compiler/rustc_lint/src/lib.rs +++ b/compiler/rustc_lint/src/lib.rs @@ -21,7 +21,6 @@ // tidy-alphabetical-start #![allow(internal_features)] -#![cfg_attr(bootstrap, feature(array_windows))] #![feature(assert_matches)] #![feature(box_patterns)] #![feature(if_let_guard)] diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index db11fdd5ec8f3..a20d90e1227e9 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -3310,3 +3310,18 @@ pub(crate) struct AttrCrateLevelOnly; #[derive(LintDiagnostic)] #[diag(lint_incorrect_do_not_recommend_args)] pub(crate) struct DoNotRecommendDoesNotExpectArgs; + +#[derive(LintDiagnostic)] +#[diag(lint_invalid_crate_type_value)] +pub(crate) struct UnknownCrateTypes { + #[subdiagnostic] + pub sugg: Option, +} + +#[derive(Subdiagnostic)] +#[suggestion(lint_suggestion, code = r#""{snippet}""#, applicability = "maybe-incorrect")] +pub(crate) struct UnknownCrateTypesSuggestion { + #[primary_span] + pub span: Span, + pub snippet: Symbol, +} diff --git a/compiler/rustc_lint_defs/src/lib.rs b/compiler/rustc_lint_defs/src/lib.rs index 4d0c44f167602..4c78287b7784f 100644 --- a/compiler/rustc_lint_defs/src/lib.rs +++ b/compiler/rustc_lint_defs/src/lib.rs @@ -822,6 +822,10 @@ pub enum AttributeLintKind { DocTestLiteral, AttrCrateLevelOnly, DoNotRecommendDoesNotExpectArgs, + CrateTypeUnknown { + span: Span, + suggested: Option, + }, } pub type RegisteredTools = FxIndexSet; diff --git a/compiler/rustc_macros/src/current_version.rs b/compiler/rustc_macros/src/current_version.rs index 6912d68421cbc..ddd74e30bf59b 100644 --- a/compiler/rustc_macros/src/current_version.rs +++ b/compiler/rustc_macros/src/current_version.rs @@ -22,10 +22,7 @@ struct RustcVersion { impl RustcVersion { fn parse_cfg_release(env_var: &str) -> Result> { - #[cfg(not(bootstrap))] let value = proc_macro::tracked::env_var(env_var)?; - #[cfg(bootstrap)] - let value = proc_macro::tracked_env::var(env_var)?; Self::parse_str(&value) .ok_or_else(|| format!("failed to parse rustc version: {:?}", value).into()) diff --git a/compiler/rustc_macros/src/symbols.rs b/compiler/rustc_macros/src/symbols.rs index 7437dddf58c56..e3a70372110aa 100644 --- a/compiler/rustc_macros/src/symbols.rs +++ b/compiler/rustc_macros/src/symbols.rs @@ -259,10 +259,6 @@ fn symbols_with_errors(input: TokenStream) -> (TokenStream, Vec) { break; } - #[cfg(bootstrap)] - let tracked_env = proc_macro::tracked_env::var(env_var.value()); - - #[cfg(not(bootstrap))] let tracked_env = proc_macro::tracked::env_var(env_var.value()); let value = match tracked_env { diff --git a/compiler/rustc_metadata/src/dependency_format.rs b/compiler/rustc_metadata/src/dependency_format.rs index 7b8e8cb42e536..d30e8120993fe 100644 --- a/compiler/rustc_metadata/src/dependency_format.rs +++ b/compiler/rustc_metadata/src/dependency_format.rs @@ -104,7 +104,7 @@ fn calculate_type(tcx: TyCtxt<'_>, ty: CrateType) -> DependencyList { CrateType::Dylib | CrateType::Cdylib | CrateType::Sdylib => { if sess.opts.cg.prefer_dynamic { Linkage::Dynamic } else { Linkage::Static } } - CrateType::Staticlib => { + CrateType::StaticLib => { if sess.opts.unstable_opts.staticlib_prefer_dynamic { Linkage::Dynamic } else { @@ -141,7 +141,7 @@ fn calculate_type(tcx: TyCtxt<'_>, ty: CrateType) -> DependencyList { // Static executables must have all static dependencies. // If any are not found, generate some nice pretty errors. - if (ty == CrateType::Staticlib && !sess.opts.unstable_opts.staticlib_allow_rdylib_deps) + if (ty == CrateType::StaticLib && !sess.opts.unstable_opts.staticlib_allow_rdylib_deps) || (ty == CrateType::Executable && sess.crt_static(Some(ty)) && !sess.target.crt_static_allows_dylibs) diff --git a/compiler/rustc_metadata/src/native_libs.rs b/compiler/rustc_metadata/src/native_libs.rs index e08460c3d4c9a..b160b3fe9bb3c 100644 --- a/compiler/rustc_metadata/src/native_libs.rs +++ b/compiler/rustc_metadata/src/native_libs.rs @@ -162,7 +162,7 @@ fn find_bundled_library( ) -> Option { let sess = tcx.sess; if let NativeLibKind::Static { bundle: Some(true) | None, whole_archive } = kind - && tcx.crate_types().iter().any(|t| matches!(t, &CrateType::Rlib | CrateType::Staticlib)) + && tcx.crate_types().iter().any(|t| matches!(t, &CrateType::Rlib | CrateType::StaticLib)) && (sess.opts.unstable_opts.packed_bundled_libs || has_cfg || whole_archive == Some(true)) { let verbatim = verbatim.unwrap_or(false); diff --git a/compiler/rustc_middle/src/lib.rs b/compiler/rustc_middle/src/lib.rs index 412e1896fb87b..5682c21e43533 100644 --- a/compiler/rustc_middle/src/lib.rs +++ b/compiler/rustc_middle/src/lib.rs @@ -27,7 +27,6 @@ // tidy-alphabetical-start #![allow(internal_features)] #![allow(rustc::direct_use_of_rustc_type_ir)] -#![cfg_attr(bootstrap, feature(array_windows))] #![feature(allocator_api)] #![feature(assert_matches)] #![feature(associated_type_defaults)] diff --git a/compiler/rustc_middle/src/ty/context.rs b/compiler/rustc_middle/src/ty/context.rs index 6e68cb661e06a..5ba5a3c3d4dc4 100644 --- a/compiler/rustc_middle/src/ty/context.rs +++ b/compiler/rustc_middle/src/ty/context.rs @@ -1980,7 +1980,7 @@ impl<'tcx> TyCtxt<'tcx> { pub fn needs_metadata(self) -> bool { self.crate_types().iter().any(|ty| match *ty { CrateType::Executable - | CrateType::Staticlib + | CrateType::StaticLib | CrateType::Cdylib | CrateType::Sdylib => false, CrateType::Rlib | CrateType::Dylib | CrateType::ProcMacro => true, @@ -2279,7 +2279,7 @@ impl<'tcx> TyCtxt<'tcx> { self.crate_types().iter().any(|crate_type| { match crate_type { CrateType::Executable - | CrateType::Staticlib + | CrateType::StaticLib | CrateType::ProcMacro | CrateType::Cdylib | CrateType::Sdylib => false, diff --git a/compiler/rustc_mir_transform/src/lib.rs b/compiler/rustc_mir_transform/src/lib.rs index afdfa35f97c06..2f8c6b8763987 100644 --- a/compiler/rustc_mir_transform/src/lib.rs +++ b/compiler/rustc_mir_transform/src/lib.rs @@ -1,5 +1,4 @@ // tidy-alphabetical-start -#![cfg_attr(bootstrap, feature(array_windows))] #![feature(assert_matches)] #![feature(box_patterns)] #![feature(const_type_name)] diff --git a/compiler/rustc_monomorphize/src/lib.rs b/compiler/rustc_monomorphize/src/lib.rs index 56c74b693fb70..30f6934bb9372 100644 --- a/compiler/rustc_monomorphize/src/lib.rs +++ b/compiler/rustc_monomorphize/src/lib.rs @@ -1,5 +1,4 @@ // tidy-alphabetical-start -#![cfg_attr(bootstrap, feature(array_windows))] #![feature(file_buffered)] #![feature(if_let_guard)] #![feature(impl_trait_in_assoc_type)] diff --git a/compiler/rustc_passes/src/check_attr.rs b/compiler/rustc_passes/src/check_attr.rs index ad1829802b8c5..cdd141f9233e8 100644 --- a/compiler/rustc_passes/src/check_attr.rs +++ b/compiler/rustc_passes/src/check_attr.rs @@ -225,112 +225,116 @@ impl<'tcx> CheckAttrVisitor<'tcx> { }, Attribute::Parsed(AttributeKind::DoNotRecommend{attr_span}) => {self.check_do_not_recommend(*attr_span, hir_id, target, item)}, Attribute::Parsed( - AttributeKind::EiiDeclaration { .. } - | AttributeKind::EiiForeignItem + // tidy-alphabetical-start + AttributeKind::AllowIncoherentImpl(..) + | AttributeKind::AsPtr(..) + | AttributeKind::AutomaticallyDerived(..) | AttributeKind::BodyStability { .. } - | AttributeKind::ConstStabilityIndirect - | AttributeKind::MacroTransparency(_) - | AttributeKind::CollapseDebugInfo(..) + | AttributeKind::CfgAttrTrace | AttributeKind::CfgTrace(..) - | AttributeKind::Pointee(..) - | AttributeKind::Dummy - | AttributeKind::RustcBuiltinMacro { .. } - | AttributeKind::Ignore { .. } - | AttributeKind::InstructionSet(..) - | AttributeKind::Path(..) - | AttributeKind::NoImplicitPrelude(..) - | AttributeKind::AutomaticallyDerived(..) - | AttributeKind::Marker(..) - | AttributeKind::SkipDuringMethodDispatch { .. } + | AttributeKind::CfiEncoding { .. } | AttributeKind::Coinductive(..) - | AttributeKind::DenyExplicitImpl(..) - | AttributeKind::DynIncompatibleTrait(..) - | AttributeKind::SpecializationTrait(..) - | AttributeKind::UnsafeSpecializationMarker(..) - | AttributeKind::ParenSugar(..) - | AttributeKind::AllowIncoherentImpl(..) + | AttributeKind::Cold(..) + | AttributeKind::CollapseDebugInfo(..) + | AttributeKind::CompilerBuiltins | AttributeKind::Confusables { .. } - | AttributeKind::TypeConst{..} + | AttributeKind::ConstStabilityIndirect + | AttributeKind::Coroutine(..) + | AttributeKind::Coverage (..) + | AttributeKind::CrateName { .. } + | AttributeKind::CrateType(..) + | AttributeKind::DebuggerVisualizer(..) + | AttributeKind::DenyExplicitImpl(..) // `#[doc]` is actually a lot more than just doc comments, so is checked below | AttributeKind::DocComment {..} - // handled below this loop and elsewhere - | AttributeKind::Repr { .. } - | AttributeKind::Cold(..) + | AttributeKind::Dummy + | AttributeKind::DynIncompatibleTrait(..) + | AttributeKind::EiiDeclaration { .. } + | AttributeKind::EiiForeignItem | AttributeKind::ExportName { .. } - | AttributeKind::Fundamental - | AttributeKind::Optimize(..) - | AttributeKind::LinkSection { .. } - | AttributeKind::MacroUse { .. } - | AttributeKind::MacroEscape( .. ) - | AttributeKind::NoLink - | AttributeKind::RustcNoImplicitAutorefs - | AttributeKind::RustcLayoutScalarValidRangeStart(..) - | AttributeKind::RustcLayoutScalarValidRangeEnd(..) - | AttributeKind::RustcLintOptDenyFieldAccess { .. } - | AttributeKind::RustcLintOptTy - | AttributeKind::RustcLintQueryInstability - | AttributeKind::RustcLintUntrackedQueryInformation - | AttributeKind::RustcNeverReturnsNullPointer - | AttributeKind::RustcScalableVector { .. } - | AttributeKind::RustcSimdMonomorphizeLaneLimit(..) - | AttributeKind::RustcShouldNotBeCalledOnConstItems(..) - | AttributeKind::RustcVariance - | AttributeKind::RustcVarianceOfOpaques | AttributeKind::ExportStable | AttributeKind::FfiConst(..) - | AttributeKind::UnstableFeatureBound(..) - | AttributeKind::AsPtr(..) + | AttributeKind::Fundamental + | AttributeKind::Ignore { .. } + | AttributeKind::InstructionSet(..) | AttributeKind::LinkName { .. } | AttributeKind::LinkOrdinal { .. } - | AttributeKind::NoMangle(..) - | AttributeKind::Used { .. } - | AttributeKind::PassByValue (..) - | AttributeKind::StdInternalSymbol (..) - | AttributeKind::Coverage (..) - | AttributeKind::ShouldPanic { .. } - | AttributeKind::Coroutine(..) + | AttributeKind::LinkSection { .. } | AttributeKind::Linkage(..) - | AttributeKind::MustUse { .. } - | AttributeKind::CrateName { .. } - | AttributeKind::RecursionLimit { .. } + | AttributeKind::MacroEscape( .. ) + | AttributeKind::MacroTransparency(_) + | AttributeKind::MacroUse { .. } + | AttributeKind::Marker(..) | AttributeKind::MoveSizeLimit { .. } - | AttributeKind::TypeLengthLimit { .. } - | AttributeKind::PatternComplexityLimit { .. } - | AttributeKind::NoCore { .. } - | AttributeKind::NoStd { .. } - | AttributeKind::NoMain - | AttributeKind::CompilerBuiltins - | AttributeKind::PanicRuntime + | AttributeKind::MustNotSupend { .. } + | AttributeKind::MustUse { .. } + | AttributeKind::NeedsAllocator | AttributeKind::NeedsPanicRuntime - | AttributeKind::ProfilerRuntime | AttributeKind::NoBuiltins + | AttributeKind::NoCore { .. } + | AttributeKind::NoImplicitPrelude(..) + | AttributeKind::NoLink + | AttributeKind::NoMain + | AttributeKind::NoMangle(..) + | AttributeKind::NoStd { .. } | AttributeKind::ObjcClass { .. } | AttributeKind::ObjcSelector { .. } - | AttributeKind::RustcCoherenceIsCore(..) - | AttributeKind::DebuggerVisualizer(..) - | AttributeKind::RustcMain - | AttributeKind::RustcPassIndirectlyInNonRusticAbis(..) + | AttributeKind::Optimize(..) + | AttributeKind::PanicRuntime + | AttributeKind::ParenSugar(..) + | AttributeKind::PassByValue (..) + | AttributeKind::PatchableFunctionEntry { .. } + | AttributeKind::Path(..) + | AttributeKind::PatternComplexityLimit { .. } | AttributeKind::PinV2(..) - | AttributeKind::WindowsSubsystem(..) - | AttributeKind::CfgAttrTrace - | AttributeKind::ThreadLocal - | AttributeKind::CfiEncoding { .. } - | AttributeKind::RustcHasIncoherentInherentImpls - | AttributeKind::MustNotSupend { .. } - | AttributeKind::RustcDumpUserArgs - | AttributeKind::RustcDumpItemBounds - | AttributeKind::RustcDumpPredicates - | AttributeKind::RustcDumpDefParents - | AttributeKind::RustcDumpVtable(..) - | AttributeKind::NeedsAllocator + | AttributeKind::Pointee(..) + | AttributeKind::ProfilerRuntime + | AttributeKind::RecursionLimit { .. } + // handled below this loop and elsewhere + | AttributeKind::Repr { .. } | AttributeKind::RustcAllocator | AttributeKind::RustcAllocatorZeroed | AttributeKind::RustcAllocatorZeroedVariant { .. } + | AttributeKind::RustcBuiltinMacro { .. } + | AttributeKind::RustcCoherenceIsCore(..) | AttributeKind::RustcDeallocator - | AttributeKind::RustcReallocator + | AttributeKind::RustcDumpDefParents + | AttributeKind::RustcDumpItemBounds + | AttributeKind::RustcDumpPredicates + | AttributeKind::RustcDumpUserArgs + | AttributeKind::RustcDumpVtable(..) + | AttributeKind::RustcHasIncoherentInherentImpls + | AttributeKind::RustcLayoutScalarValidRangeEnd(..) + | AttributeKind::RustcLayoutScalarValidRangeStart(..) + | AttributeKind::RustcLintOptDenyFieldAccess { .. } + | AttributeKind::RustcLintOptTy + | AttributeKind::RustcLintQueryInstability + | AttributeKind::RustcLintUntrackedQueryInformation + | AttributeKind::RustcMain + | AttributeKind::RustcNeverReturnsNullPointer + | AttributeKind::RustcNoImplicitAutorefs | AttributeKind::RustcNounwind | AttributeKind::RustcOffloadKernel - | AttributeKind::PatchableFunctionEntry { .. } + | AttributeKind::RustcPassIndirectlyInNonRusticAbis(..) + | AttributeKind::RustcReallocator + | AttributeKind::RustcScalableVector { .. } + | AttributeKind::RustcShouldNotBeCalledOnConstItems(..) + | AttributeKind::RustcSimdMonomorphizeLaneLimit(..) + | AttributeKind::RustcVariance + | AttributeKind::RustcVarianceOfOpaques + | AttributeKind::ShouldPanic { .. } + | AttributeKind::SkipDuringMethodDispatch { .. } + | AttributeKind::SpecializationTrait(..) + | AttributeKind::StdInternalSymbol (..) + | AttributeKind::ThreadLocal + | AttributeKind::TypeConst{..} + | AttributeKind::TypeLengthLimit { .. } + | AttributeKind::UnsafeSpecializationMarker(..) + | AttributeKind::UnstableFeatureBound(..) + | AttributeKind::Used { .. } + | AttributeKind::WindowsSubsystem(..) + // tidy-alphabetical-end + ) => { /* do nothing */ } Attribute::Unparsed(attr_item) => { style = Some(attr_item.style); @@ -402,7 +406,6 @@ impl<'tcx> CheckAttrVisitor<'tcx> { | sym::rustc_no_implicit_bounds | sym::test_runner | sym::reexport_test_harness_main - | sym::crate_type | sym::rustc_preserve_ub_checks, .. ] => {} @@ -1612,7 +1615,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> { .tcx .crate_types() .iter() - .all(|kind| matches!(kind, CrateType::Rlib | CrateType::Staticlib)); + .all(|kind| matches!(kind, CrateType::Rlib | CrateType::StaticLib)); if never_needs_link { errors::UnusedNote::LinkerMessagesBinaryCrateOnly } else { diff --git a/compiler/rustc_passes/src/weak_lang_items.rs b/compiler/rustc_passes/src/weak_lang_items.rs index 26cd9e7f44ff1..811b5e9300141 100644 --- a/compiler/rustc_passes/src/weak_lang_items.rs +++ b/compiler/rustc_passes/src/weak_lang_items.rs @@ -68,7 +68,7 @@ fn verify(tcx: TyCtxt<'_>, items: &lang_items::LanguageItems) { | CrateType::ProcMacro | CrateType::Cdylib | CrateType::Executable - | CrateType::Staticlib + | CrateType::StaticLib | CrateType::Sdylib => true, CrateType::Rlib => false, }); diff --git a/compiler/rustc_session/messages.ftl b/compiler/rustc_session/messages.ftl index eff55e8e02a2e..5c851cb90a667 100644 --- a/compiler/rustc_session/messages.ftl +++ b/compiler/rustc_session/messages.ftl @@ -141,12 +141,6 @@ session_unleashed_feature_help_unnamed = skipping check that does not even have session_unstable_virtual_function_elimination = `-Zvirtual-function-elimination` requires `-Clto` -session_unsupported_crate_type_for_codegen_backend = - dropping unsupported crate type `{$crate_type}` for codegen backend `{$codegen_backend}` - -session_unsupported_crate_type_for_target = - dropping unsupported crate type `{$crate_type}` for target `{$target_triple}` - session_unsupported_dwarf_version = requested DWARF version {$dwarf_version} is not supported session_unsupported_dwarf_version_help = supported DWARF versions are 2, 3, 4 and 5 diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs index 7af99fbb311da..995dd5b29474a 100644 --- a/compiler/rustc_session/src/config.rs +++ b/compiler/rustc_session/src/config.rs @@ -10,13 +10,13 @@ use std::hash::Hash; use std::path::{Path, PathBuf}; use std::str::{self, FromStr}; use std::sync::LazyLock; -use std::{cmp, fmt, fs, iter}; +use std::{cmp, fs, iter}; use externs::{ExternOpt, split_extern_opt}; use rustc_data_structures::fx::{FxHashSet, FxIndexMap}; use rustc_data_structures::stable_hasher::{StableHasher, StableOrd, ToStableHashKey}; use rustc_errors::emitter::HumanReadableErrorType; -use rustc_errors::{ColorConfig, DiagArgValue, DiagCtxtFlags, IntoDiagArg}; +use rustc_errors::{ColorConfig, DiagCtxtFlags}; use rustc_feature::UnstableFeatures; use rustc_hashes::Hash64; use rustc_macros::{BlobDecodable, Decodable, Encodable, HashStable_Generic}; @@ -1529,29 +1529,7 @@ pub enum EntryFnType { }, } -#[derive(Copy, PartialEq, PartialOrd, Clone, Ord, Eq, Hash, Debug, Encodable, BlobDecodable)] -#[derive(HashStable_Generic)] -pub enum CrateType { - Executable, - Dylib, - Rlib, - Staticlib, - Cdylib, - ProcMacro, - Sdylib, -} - -impl CrateType { - pub fn has_metadata(self) -> bool { - match self { - CrateType::Rlib | CrateType::Dylib | CrateType::ProcMacro => true, - CrateType::Executable - | CrateType::Cdylib - | CrateType::Staticlib - | CrateType::Sdylib => false, - } - } -} +pub use rustc_hir::attrs::CrateType; #[derive(Clone, Hash, Debug, PartialEq, Eq)] pub enum Passes { @@ -1595,10 +1573,6 @@ pub struct BranchProtection { pub gcs: bool, } -pub(crate) const fn default_lib_output() -> CrateType { - CrateType::Rlib -} - pub fn build_configuration(sess: &Session, mut user_cfg: Cfg) -> Cfg { // First disallow some configuration given on the command line cfg::disallow_cfgs(sess, &user_cfg); @@ -2873,9 +2847,9 @@ pub fn parse_crate_types_from_list(list_list: Vec) -> Result default_lib_output(), + "lib" => CrateType::default(), "rlib" => CrateType::Rlib, - "staticlib" => CrateType::Staticlib, + "staticlib" => CrateType::StaticLib, "dylib" => CrateType::Dylib, "cdylib" => CrateType::Cdylib, "bin" => CrateType::Executable, @@ -2969,26 +2943,6 @@ pub mod nightly_options { } } -impl fmt::Display for CrateType { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match *self { - CrateType::Executable => "bin".fmt(f), - CrateType::Dylib => "dylib".fmt(f), - CrateType::Rlib => "rlib".fmt(f), - CrateType::Staticlib => "staticlib".fmt(f), - CrateType::Cdylib => "cdylib".fmt(f), - CrateType::ProcMacro => "proc-macro".fmt(f), - CrateType::Sdylib => "sdylib".fmt(f), - } - } -} - -impl IntoDiagArg for CrateType { - fn into_diag_arg(self, _: &mut Option) -> DiagArgValue { - self.to_string().into_diag_arg(&mut None) - } -} - #[derive(Copy, Clone, PartialEq, Debug)] pub enum PpSourceMode { /// `-Zunpretty=normal` diff --git a/compiler/rustc_session/src/errors.rs b/compiler/rustc_session/src/errors.rs index 6fd86aec7ad98..54e792fd7b59d 100644 --- a/compiler/rustc_session/src/errors.rs +++ b/compiler/rustc_session/src/errors.rs @@ -11,7 +11,6 @@ use rustc_macros::{Diagnostic, LintDiagnostic, Subdiagnostic}; use rustc_span::{Span, Symbol}; use rustc_target::spec::{SplitDebuginfo, StackProtector, TargetTuple}; -use crate::config::CrateType; use crate::parse::ParseSess; #[derive(Diagnostic)] @@ -376,20 +375,6 @@ struct BinaryFloatLiteralNotSupported { span: Span, } -#[derive(Diagnostic)] -#[diag(session_unsupported_crate_type_for_codegen_backend)] -pub(crate) struct UnsupportedCrateTypeForCodegenBackend { - pub(crate) crate_type: CrateType, - pub(crate) codegen_backend: &'static str, -} - -#[derive(Diagnostic)] -#[diag(session_unsupported_crate_type_for_target)] -pub(crate) struct UnsupportedCrateTypeForTarget<'a> { - pub(crate) crate_type: CrateType, - pub(crate) target_triple: &'a TargetTuple, -} - pub fn report_lit_error( psess: &ParseSess, err: LitError, diff --git a/compiler/rustc_session/src/output.rs b/compiler/rustc_session/src/output.rs index de8f1d6009ab1..9224368f90d6e 100644 --- a/compiler/rustc_session/src/output.rs +++ b/compiler/rustc_session/src/output.rs @@ -2,12 +2,11 @@ use std::path::Path; -use rustc_ast as ast; -use rustc_span::{Span, Symbol, sym}; +use rustc_span::{Span, Symbol}; use crate::Session; -use crate::config::{self, CrateType, OutFileName, OutputFilenames, OutputType}; -use crate::errors::{self, CrateNameEmpty, FileIsNotWriteable, InvalidCharacterInCrateName}; +use crate::config::{CrateType, OutFileName, OutputFilenames, OutputType}; +use crate::errors::{CrateNameEmpty, FileIsNotWriteable, InvalidCharacterInCrateName}; pub fn out_filename( sess: &Session, @@ -101,7 +100,7 @@ pub fn filename_for_input( let (prefix, suffix) = (&sess.target.dll_prefix, &sess.target.dll_suffix); OutFileName::Real(outputs.out_directory.join(&format!("{prefix}{libname}{suffix}"))) } - CrateType::Staticlib => { + CrateType::StaticLib => { let (prefix, suffix) = sess.staticlib_components(false); OutFileName::Real(outputs.out_directory.join(&format!("{prefix}{libname}{suffix}"))) } @@ -121,19 +120,6 @@ pub fn filename_for_input( } } -/// Returns default crate type for target -/// -/// Default crate type is used when crate type isn't provided neither -/// through cmd line arguments nor through crate attributes -/// -/// It is CrateType::Executable for all platforms but iOS as there is no -/// way to run iOS binaries anyway without jailbreaking and -/// interaction with Rust code through static library is the only -/// option for now -pub fn default_output_for_target(sess: &Session) -> CrateType { - if !sess.target.executables { CrateType::Staticlib } else { CrateType::Executable } -} - /// Checks if target supports crate_type as output pub fn invalid_output_for_target(sess: &Session, crate_type: CrateType) -> bool { if let CrateType::Cdylib | CrateType::Dylib | CrateType::ProcMacro = crate_type { @@ -157,88 +143,3 @@ pub fn invalid_output_for_target(sess: &Session, crate_type: CrateType) -> bool false } - -pub const CRATE_TYPES: &[(Symbol, CrateType)] = &[ - (sym::rlib, CrateType::Rlib), - (sym::dylib, CrateType::Dylib), - (sym::cdylib, CrateType::Cdylib), - (sym::lib, config::default_lib_output()), - (sym::staticlib, CrateType::Staticlib), - (sym::proc_dash_macro, CrateType::ProcMacro), - (sym::bin, CrateType::Executable), - (sym::sdylib, CrateType::Sdylib), -]; - -pub fn categorize_crate_type(s: Symbol) -> Option { - Some(CRATE_TYPES.iter().find(|(key, _)| *key == s)?.1) -} - -pub fn collect_crate_types( - session: &Session, - backend_crate_types: &[CrateType], - codegen_backend_name: &'static str, - attrs: &[ast::Attribute], -) -> Vec { - // If we're generating a test executable, then ignore all other output - // styles at all other locations - if session.opts.test { - if !session.target.executables { - session.dcx().emit_warn(errors::UnsupportedCrateTypeForTarget { - crate_type: CrateType::Executable, - target_triple: &session.opts.target_triple, - }); - return Vec::new(); - } - return vec![CrateType::Executable]; - } - - // Shadow `sdylib` crate type in interface build. - if session.opts.unstable_opts.build_sdylib_interface { - return vec![CrateType::Rlib]; - } - - // Only check command line flags if present. If no types are specified by - // command line, then reuse the empty `base` Vec to hold the types that - // will be found in crate attributes. - // JUSTIFICATION: before wrapper fn is available - #[allow(rustc::bad_opt_access)] - let mut base = session.opts.crate_types.clone(); - if base.is_empty() { - let attr_types = attrs.iter().filter_map(|a| { - if a.has_name(sym::crate_type) - && let Some(s) = a.value_str() - { - categorize_crate_type(s) - } else { - None - } - }); - base.extend(attr_types); - if base.is_empty() { - base.push(default_output_for_target(session)); - } else { - base.sort(); - base.dedup(); - } - } - - base.retain(|crate_type| { - if invalid_output_for_target(session, *crate_type) { - session.dcx().emit_warn(errors::UnsupportedCrateTypeForTarget { - crate_type: *crate_type, - target_triple: &session.opts.target_triple, - }); - false - } else if !backend_crate_types.contains(crate_type) { - session.dcx().emit_warn(errors::UnsupportedCrateTypeForCodegenBackend { - crate_type: *crate_type, - codegen_backend: codegen_backend_name, - }); - false - } else { - true - } - }); - - base -} diff --git a/compiler/rustc_span/src/lib.rs b/compiler/rustc_span/src/lib.rs index 1c430099835b3..747cb2c17eb91 100644 --- a/compiler/rustc_span/src/lib.rs +++ b/compiler/rustc_span/src/lib.rs @@ -17,7 +17,6 @@ // tidy-alphabetical-start #![allow(internal_features)] -#![cfg_attr(bootstrap, feature(array_windows))] #![cfg_attr(target_arch = "loongarch64", feature(stdarch_loongarch))] #![feature(cfg_select)] #![feature(core_io_borrowed_buf)] diff --git a/compiler/rustc_span/src/symbol.rs b/compiler/rustc_span/src/symbol.rs index d6d6ebb49e106..5767444025ec2 100644 --- a/compiler/rustc_span/src/symbol.rs +++ b/compiler/rustc_span/src/symbol.rs @@ -362,6 +362,7 @@ symbols! { Send, SeqCst, Sized, + Slice, SliceIndex, SliceIter, Some, diff --git a/library/alloc/src/slice.rs b/library/alloc/src/slice.rs index e7d0fc3454eeb..bf5cbafbac630 100644 --- a/library/alloc/src/slice.rs +++ b/library/alloc/src/slice.rs @@ -18,7 +18,7 @@ use core::cmp::Ordering::{self, Less}; use core::mem::MaybeUninit; #[cfg(not(no_global_oom_handling))] use core::ptr; -#[stable(feature = "array_windows", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "array_windows", since = "1.94.0")] pub use core::slice::ArrayWindows; #[stable(feature = "inherent_ascii_escape", since = "1.60.0")] pub use core::slice::EscapeAscii; diff --git a/library/core/src/cell/lazy.rs b/library/core/src/cell/lazy.rs index 8ffa9b3def519..28a76569c1d03 100644 --- a/library/core/src/cell/lazy.rs +++ b/library/core/src/cell/lazy.rs @@ -175,7 +175,7 @@ impl T> LazyCell { /// assert_eq!(*lazy, 44); /// ``` #[inline] - #[stable(feature = "lazy_get", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "lazy_get", since = "1.94.0")] pub fn force_mut(this: &mut LazyCell) -> &mut T { #[cold] /// # Safety @@ -273,7 +273,7 @@ impl LazyCell { /// assert_eq!(*lazy, 44); /// ``` #[inline] - #[stable(feature = "lazy_get", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "lazy_get", since = "1.94.0")] pub fn get_mut(this: &mut LazyCell) -> Option<&mut T> { let state = this.state.get_mut(); match state { @@ -297,7 +297,7 @@ impl LazyCell { /// assert_eq!(LazyCell::get(&lazy), Some(&92)); /// ``` #[inline] - #[stable(feature = "lazy_get", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "lazy_get", since = "1.94.0")] pub fn get(this: &LazyCell) -> Option<&T> { // SAFETY: // This is sound for the same reason as in `force`: once the state is diff --git a/library/core/src/char/convert.rs b/library/core/src/char/convert.rs index 7c1a329e70114..90c09d43f14f5 100644 --- a/library/core/src/char/convert.rs +++ b/library/core/src/char/convert.rs @@ -162,7 +162,7 @@ impl const TryFrom for u16 { /// /// Generally speaking, this conversion can be seen as obtaining the character's corresponding /// UTF-32 code point to the extent representable by pointer addresses. -#[stable(feature = "usize_try_from_char", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "usize_try_from_char", since = "1.94.0")] #[rustc_const_unstable(feature = "const_convert", issue = "143773")] impl const TryFrom for usize { type Error = TryFromCharError; diff --git a/library/core/src/iter/adapters/peekable.rs b/library/core/src/iter/adapters/peekable.rs index b9bdb827209b3..9f6d1df57dbe8 100644 --- a/library/core/src/iter/adapters/peekable.rs +++ b/library/core/src/iter/adapters/peekable.rs @@ -406,7 +406,7 @@ impl Peekable { ///# ], ///# ) /// ``` - #[stable(feature = "peekable_next_if_map", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "peekable_next_if_map", since = "1.94.0")] pub fn next_if_map(&mut self, f: impl FnOnce(I::Item) -> Result) -> Option { let unpeek = if let Some(item) = self.next() { match f(item) { @@ -443,7 +443,7 @@ impl Peekable { /// assert_eq!(line_num, 125); /// assert_eq!(iter.collect::(), " GOTO 10"); /// ``` - #[stable(feature = "peekable_next_if_map", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "peekable_next_if_map", since = "1.94.0")] pub fn next_if_map_mut(&mut self, f: impl FnOnce(&mut I::Item) -> Option) -> Option { let unpeek = if let Some(mut item) = self.next() { match f(&mut item) { diff --git a/library/core/src/mem/type_info.rs b/library/core/src/mem/type_info.rs index d584523aebe2f..30a70165b095f 100644 --- a/library/core/src/mem/type_info.rs +++ b/library/core/src/mem/type_info.rs @@ -45,6 +45,8 @@ pub enum TypeKind { Tuple(Tuple), /// Arrays. Array(Array), + /// Slices. + Slice(Slice), /// Primitive boolean type. Bool(Bool), /// Primitive character type. @@ -94,6 +96,15 @@ pub struct Array { pub len: usize, } +/// Compile-time type information about slices. +#[derive(Debug)] +#[non_exhaustive] +#[unstable(feature = "type_info", issue = "146922")] +pub struct Slice { + /// The type of each element in the slice. + pub element_ty: TypeId, +} + /// Compile-time type information about `bool`. #[derive(Debug)] #[non_exhaustive] diff --git a/library/core/src/num/f32.rs b/library/core/src/num/f32.rs index f7f16b57a526a..3d8249631037f 100644 --- a/library/core/src/num/f32.rs +++ b/library/core/src/num/f32.rs @@ -292,11 +292,11 @@ pub mod consts { pub const TAU: f32 = 6.28318530717958647692528676655900577_f32; /// The golden ratio (φ) - #[stable(feature = "euler_gamma_golden_ratio", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "euler_gamma_golden_ratio", since = "1.94.0")] pub const GOLDEN_RATIO: f32 = 1.618033988749894848204586834365638118_f32; /// The Euler-Mascheroni constant (γ) - #[stable(feature = "euler_gamma_golden_ratio", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "euler_gamma_golden_ratio", since = "1.94.0")] pub const EULER_GAMMA: f32 = 0.577215664901532860606512090082402431_f32; /// π/2 diff --git a/library/core/src/num/f64.rs b/library/core/src/num/f64.rs index f021c88f2235f..566a6a7ec947f 100644 --- a/library/core/src/num/f64.rs +++ b/library/core/src/num/f64.rs @@ -292,11 +292,11 @@ pub mod consts { pub const TAU: f64 = 6.28318530717958647692528676655900577_f64; /// The golden ratio (φ) - #[stable(feature = "euler_gamma_golden_ratio", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "euler_gamma_golden_ratio", since = "1.94.0")] pub const GOLDEN_RATIO: f64 = 1.618033988749894848204586834365638118_f64; /// The Euler-Mascheroni constant (γ) - #[stable(feature = "euler_gamma_golden_ratio", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "euler_gamma_golden_ratio", since = "1.94.0")] pub const EULER_GAMMA: f64 = 0.577215664901532860606512090082402431_f64; /// π/2 diff --git a/library/core/src/slice/iter.rs b/library/core/src/slice/iter.rs index 0ddf94559e808..a289b0d6df401 100644 --- a/library/core/src/slice/iter.rs +++ b/library/core/src/slice/iter.rs @@ -2176,7 +2176,7 @@ unsafe impl Sync for ChunksExactMut<'_, T> where T: Sync {} /// [`array_windows`]: slice::array_windows /// [slices]: slice #[derive(Debug, Clone, Copy)] -#[stable(feature = "array_windows", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "array_windows", since = "1.94.0")] #[must_use = "iterators are lazy and do nothing unless consumed"] pub struct ArrayWindows<'a, T: 'a, const N: usize> { v: &'a [T], @@ -2189,7 +2189,7 @@ impl<'a, T: 'a, const N: usize> ArrayWindows<'a, T, N> { } } -#[stable(feature = "array_windows", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "array_windows", since = "1.94.0")] impl<'a, T, const N: usize> Iterator for ArrayWindows<'a, T, N> { type Item = &'a [T; N]; @@ -2226,7 +2226,7 @@ impl<'a, T, const N: usize> Iterator for ArrayWindows<'a, T, N> { } } -#[stable(feature = "array_windows", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "array_windows", since = "1.94.0")] impl<'a, T, const N: usize> DoubleEndedIterator for ArrayWindows<'a, T, N> { #[inline] fn next_back(&mut self) -> Option<&'a [T; N]> { @@ -2245,7 +2245,7 @@ impl<'a, T, const N: usize> DoubleEndedIterator for ArrayWindows<'a, T, N> { } } -#[stable(feature = "array_windows", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "array_windows", since = "1.94.0")] impl ExactSizeIterator for ArrayWindows<'_, T, N> { fn is_empty(&self) -> bool { self.v.len() < N diff --git a/library/core/src/slice/mod.rs b/library/core/src/slice/mod.rs index a2d3fa401b625..3e1eeba4e92e6 100644 --- a/library/core/src/slice/mod.rs +++ b/library/core/src/slice/mod.rs @@ -52,7 +52,7 @@ pub use ascii::is_ascii_simple; pub use index::SliceIndex; #[unstable(feature = "slice_range", issue = "76393")] pub use index::{range, try_range}; -#[stable(feature = "array_windows", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "array_windows", since = "1.94.0")] pub use iter::ArrayWindows; #[stable(feature = "slice_group_by", since = "1.77.0")] pub use iter::{ChunkBy, ChunkByMut}; @@ -1639,7 +1639,7 @@ impl [T] { /// ``` /// /// [`windows`]: slice::windows - #[stable(feature = "array_windows", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "array_windows", since = "1.94.0")] #[rustc_const_unstable(feature = "const_slice_make_iter", issue = "137737")] #[inline] #[track_caller] @@ -5045,7 +5045,7 @@ impl [T] { /// assert_eq!(arr.element_offset(weird_elm), None); // Points between element 0 and 1 /// ``` #[must_use] - #[stable(feature = "element_offset", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "element_offset", since = "1.94.0")] pub fn element_offset(&self, element: &T) -> Option { if T::IS_ZST { panic!("elements are zero-sized"); diff --git a/library/coretests/tests/mem/type_info.rs b/library/coretests/tests/mem/type_info.rs index 816fbac32f20d..0820e4f839930 100644 --- a/library/coretests/tests/mem/type_info.rs +++ b/library/coretests/tests/mem/type_info.rs @@ -22,6 +22,14 @@ fn test_arrays() { } } +#[test] +fn test_slices() { + match const { Type::of::<[usize]>() }.kind { + TypeKind::Slice(slice) => assert_eq!(slice.element_ty, TypeId::of::()), + _ => unreachable!(), + } +} + #[test] fn test_tuples() { fn assert_tuple_arity() { diff --git a/library/std/src/num/f32.rs b/library/std/src/num/f32.rs index 4126080c1552a..77e6824784605 100644 --- a/library/std/src/num/f32.rs +++ b/library/std/src/num/f32.rs @@ -217,7 +217,7 @@ impl f32 { #[must_use = "method returns a new number and does not mutate the original value"] #[stable(feature = "rust1", since = "1.0.0")] #[inline] - #[rustc_const_stable(feature = "const_mul_add", since = "CURRENT_RUSTC_VERSION")] + #[rustc_const_stable(feature = "const_mul_add", since = "1.94.0")] pub const fn mul_add(self, a: f32, b: f32) -> f32 { core::f32::math::mul_add(self, a, b) } diff --git a/library/std/src/num/f64.rs b/library/std/src/num/f64.rs index e4c388addd9af..e0b9948a924db 100644 --- a/library/std/src/num/f64.rs +++ b/library/std/src/num/f64.rs @@ -217,7 +217,7 @@ impl f64 { #[must_use = "method returns a new number and does not mutate the original value"] #[stable(feature = "rust1", since = "1.0.0")] #[inline] - #[rustc_const_stable(feature = "const_mul_add", since = "CURRENT_RUSTC_VERSION")] + #[rustc_const_stable(feature = "const_mul_add", since = "1.94.0")] pub const fn mul_add(self, a: f64, b: f64) -> f64 { core::f64::math::mul_add(self, a, b) } diff --git a/library/std/src/sync/lazy_lock.rs b/library/std/src/sync/lazy_lock.rs index ef5c949e471f3..7274b5d10c75b 100644 --- a/library/std/src/sync/lazy_lock.rs +++ b/library/std/src/sync/lazy_lock.rs @@ -182,7 +182,7 @@ impl T> LazyLock { /// assert_eq!(*lazy, 44); /// ``` #[inline] - #[stable(feature = "lazy_get", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "lazy_get", since = "1.94.0")] pub fn force_mut(this: &mut LazyLock) -> &mut T { #[cold] /// # Safety @@ -288,7 +288,7 @@ impl LazyLock { /// assert_eq!(*lazy, 44); /// ``` #[inline] - #[stable(feature = "lazy_get", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "lazy_get", since = "1.94.0")] pub fn get_mut(this: &mut LazyLock) -> Option<&mut T> { // `state()` does not perform an atomic load, so prefer it over `is_complete()`. let state = this.once.state(); @@ -315,7 +315,7 @@ impl LazyLock { /// assert_eq!(LazyLock::get(&lazy), Some(&92)); /// ``` #[inline] - #[stable(feature = "lazy_get", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "lazy_get", since = "1.94.0")] #[rustc_should_not_be_called_on_const_items] pub fn get(this: &LazyLock) -> Option<&T> { if this.once.is_completed() { diff --git a/library/std_detect/src/detect/arch/riscv.rs b/library/std_detect/src/detect/arch/riscv.rs index ecad1a58d5f26..0e6bab512ac15 100644 --- a/library/std_detect/src/detect/arch/riscv.rs +++ b/library/std_detect/src/detect/arch/riscv.rs @@ -196,26 +196,26 @@ features! { @FEATURE: #[unstable(feature = "stdarch_riscv_feature_detection", issue = "111192")] unaligned_vector_mem: "unaligned-vector-mem"; /// Has reasonably performant unaligned vector - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zicsr: "zicsr"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zicsr: "zicsr"; /// "Zicsr" Extension for Control and Status Register (CSR) Instructions - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zicntr: "zicntr"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zicntr: "zicntr"; /// "Zicntr" Extension for Base Counters and Timers - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zihpm: "zihpm"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zihpm: "zihpm"; /// "Zihpm" Extension for Hardware Performance Counters - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zifencei: "zifencei"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zifencei: "zifencei"; /// "Zifencei" Extension for Instruction-Fetch Fence - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zihintntl: "zihintntl"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zihintntl: "zihintntl"; /// "Zihintntl" Extension for Non-Temporal Locality Hints - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zihintpause: "zihintpause"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zihintpause: "zihintpause"; /// "Zihintpause" Extension for Pause Hint - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zimop: "zimop"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zimop: "zimop"; /// "Zimop" Extension for May-Be-Operations - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zicbom: "zicbom"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zicbom: "zicbom"; /// "Zicbom" Extension for Cache-Block Management Instructions - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zicboz: "zicboz"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zicboz: "zicboz"; /// "Zicboz" Extension for Cache-Block Zero Instruction - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zicond: "zicond"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zicond: "zicond"; /// "Zicond" Extension for Integer Conditional Operations @FEATURE: #[stable(feature = "riscv_ratified", since = "1.78.0")] m: "m"; @@ -223,20 +223,20 @@ features! { @FEATURE: #[stable(feature = "riscv_ratified", since = "1.78.0")] a: "a"; /// "A" Extension for Atomic Instructions - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zalrsc: "zalrsc"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zalrsc: "zalrsc"; /// "Zalrsc" Extension for Load-Reserved/Store-Conditional Instructions - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zaamo: "zaamo"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zaamo: "zaamo"; /// "Zaamo" Extension for Atomic Memory Operations - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zawrs: "zawrs"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zawrs: "zawrs"; /// "Zawrs" Extension for Wait-on-Reservation-Set Instructions - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zabha: "zabha"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zabha: "zabha"; /// "Zabha" Extension for Byte and Halfword Atomic Memory Operations - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zacas: "zacas"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zacas: "zacas"; /// "Zacas" Extension for Atomic Compare-and-Swap (CAS) Instructions @FEATURE: #[unstable(feature = "stdarch_riscv_feature_detection", issue = "111192")] zam: "zam"; without cfg check: true; /// "Zam" Extension for Misaligned Atomics - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] ztso: "ztso"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] ztso: "ztso"; /// "Ztso" Extension for Total Store Ordering @FEATURE: #[unstable(feature = "stdarch_riscv_feature_detection", issue = "111192")] f: "f"; @@ -266,7 +266,7 @@ features! { @FEATURE: #[stable(feature = "riscv_ratified", since = "1.78.0")] c: "c"; /// "C" Extension for Compressed Instructions - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zca: "zca"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zca: "zca"; /// "Zca" Compressed Instructions excluding Floating-Point Loads/Stores @FEATURE: #[unstable(feature = "stdarch_riscv_feature_detection", issue = "111192")] zcf: "zcf"; without cfg check: true; @@ -274,12 +274,12 @@ features! { @FEATURE: #[unstable(feature = "stdarch_riscv_feature_detection", issue = "111192")] zcd: "zcd"; without cfg check: true; /// "Zcd" Compressed Instructions for Double-Precision Floating-Point Loads/Stores - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zcb: "zcb"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zcb: "zcb"; /// "Zcb" Simple Code-size Saving Compressed Instructions - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] zcmop: "zcmop"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] zcmop: "zcmop"; /// "Zcmop" Extension for Compressed May-Be-Operations - @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "CURRENT_RUSTC_VERSION")] b: "b"; + @FEATURE: #[stable(feature = "riscv_ratified_v2", since = "1.94.0")] b: "b"; /// "B" Extension for Bit Manipulation @FEATURE: #[stable(feature = "riscv_ratified", since = "1.78.0")] zba: "zba"; /// "Zba" Extension for Address Generation diff --git a/src/bootstrap/src/core/sanity.rs b/src/bootstrap/src/core/sanity.rs index d756a38581b2b..607b9a384d196 100644 --- a/src/bootstrap/src/core/sanity.rs +++ b/src/bootstrap/src/core/sanity.rs @@ -37,7 +37,6 @@ pub struct Finder { /// when the newly-bumped stage 0 compiler now knows about the formerly-missing targets. const STAGE0_MISSING_TARGETS: &[&str] = &[ // just a dummy comment so the list doesn't get onelined - "riscv64im-unknown-none-elf", "x86_64-unknown-linux-gnuasan", ]; diff --git a/src/stage0 b/src/stage0 index 66b652a844f3e..26b97dc25cd76 100644 --- a/src/stage0 +++ b/src/stage0 @@ -13,544 +13,544 @@ nightly_branch=main # All changes below this comment will be overridden the next time the # tool is executed. -compiler_channel_manifest_hash=936fefc9b8e88ef79db59e6dee693b757f35a98c87698b65206dca1118850996 -compiler_git_commit_hash=1b6e21e163baa0b20f119e17e3871910978a60b6 -compiler_date=2025-12-09 +compiler_channel_manifest_hash=198f721db4d4f48112a8afadd11b63165d14038596d94402e36d16c7e528cda8 +compiler_git_commit_hash=9b1f8ff42d110b0ca138116745be921df5dc97e7 +compiler_date=2026-01-20 compiler_version=beta -rustfmt_channel_manifest_hash=8a4b2700918bd32bda5cbab3da25fc4ea1bee06bb24ef24d1df890997ef35a51 -rustfmt_git_commit_hash=c61a3a44d1a5bee35914cada6c788a05e0808f5b -rustfmt_date=2025-12-10 +rustfmt_channel_manifest_hash=9136a5de582c2615de15a18c3fed0ba01bdfe0a1edc45467ced81b91ea6d2668 +rustfmt_git_commit_hash=5c49c4f7c8393c861b849441d27f5d40e0f1e33b +rustfmt_date=2026-01-21 rustfmt_version=nightly -dist/2025-12-09/rustc-beta-aarch64-apple-darwin.tar.gz=a91d96a219d1c3a195b064ea786a693ddf3987afa20b4117352526e04d27a76e -dist/2025-12-09/rustc-beta-aarch64-apple-darwin.tar.xz=40e55dd62ba38d106cf6a53044d38ddeb41721a4f301a2dc54d8cc64b31e3ba7 -dist/2025-12-09/rustc-beta-aarch64-pc-windows-gnullvm.tar.gz=4747203b5f3387abea65d9076eb790c2d1cde3bcf1e058bf072149c4c08768be -dist/2025-12-09/rustc-beta-aarch64-pc-windows-gnullvm.tar.xz=07889f4d4a975817f64d3ca7fc3625159edcd58ed0f2121edc4be6c781318c8a -dist/2025-12-09/rustc-beta-aarch64-pc-windows-msvc.tar.gz=7c4a21a4a66b1a652a9f2ab7026f98d00b8bb792e9d35e43acbbb9e721e2fc1c -dist/2025-12-09/rustc-beta-aarch64-pc-windows-msvc.tar.xz=744d6df884551fc14c1284390378b6f133c8b971055d30f86c0f42d6864e958f -dist/2025-12-09/rustc-beta-aarch64-unknown-linux-gnu.tar.gz=b13dcb3bb092ad1cbca6ff91e9ca3c92eb363fdecc6b9c16175b07ce32435c6c -dist/2025-12-09/rustc-beta-aarch64-unknown-linux-gnu.tar.xz=36e6ca5ca171c09b3c5a4c36d877163674b9a4bb5562a1dc9a66c5af39d3f37f -dist/2025-12-09/rustc-beta-aarch64-unknown-linux-musl.tar.gz=047b25aca0b1d4f4d630db240f12c96433c25ee5d0a149499a715df120c73f10 -dist/2025-12-09/rustc-beta-aarch64-unknown-linux-musl.tar.xz=6a0332f6a824e8f25942178fb1eb562297a7dc31205d17b7dd11a2d9c64cc3f1 -dist/2025-12-09/rustc-beta-aarch64-unknown-linux-ohos.tar.gz=4f80108f65a8a05067972263acfc1756e06283ebb0bdac86974c96298dfb8ce6 -dist/2025-12-09/rustc-beta-aarch64-unknown-linux-ohos.tar.xz=71ac8ab1ef7624171a2d50c00577fa7a734146099e7d9e8bac10a784831a877d -dist/2025-12-09/rustc-beta-arm-unknown-linux-gnueabi.tar.gz=4beca02231720f3de8c3f11d97a69962c3049c2812d98c043df03e50d97cfb4d -dist/2025-12-09/rustc-beta-arm-unknown-linux-gnueabi.tar.xz=b1edced09ff9ea6a94cfd029578dc0b04e75713b25b7ba211907d398e4be4857 -dist/2025-12-09/rustc-beta-arm-unknown-linux-gnueabihf.tar.gz=bdeb895d3d69b7405c773af4c9e941e4c97d2e8916c5e381f2bfb9ee1e3d1533 -dist/2025-12-09/rustc-beta-arm-unknown-linux-gnueabihf.tar.xz=53f9efbc64431efed920f9f0ee5ced9ad18589237fe080983730d6536c0e94b9 -dist/2025-12-09/rustc-beta-armv7-unknown-linux-gnueabihf.tar.gz=bd65ec758f8a0bfade3daa30a3478424e0e59d2f18890545453dae1cd0410107 -dist/2025-12-09/rustc-beta-armv7-unknown-linux-gnueabihf.tar.xz=1180f684a647091ba857bf74a921933711f5dd3970995860ea7c12ecb4e25660 -dist/2025-12-09/rustc-beta-i686-pc-windows-gnu.tar.gz=386934445fce601578146f052dc042cf23292f6a9dbe22f1333ae93cf0872820 -dist/2025-12-09/rustc-beta-i686-pc-windows-gnu.tar.xz=64731c7e3c61ed0791c6a985d61207e3d687555f6d95abff73e9c051246c65bc -dist/2025-12-09/rustc-beta-i686-pc-windows-msvc.tar.gz=8b5df3cc0e53b36b32317461fe89ee7afc8333ee7e11184dc09ba2b96405e6ed -dist/2025-12-09/rustc-beta-i686-pc-windows-msvc.tar.xz=11273df779687a10be4c99e9175d8d4396580c1439d7a8ce27b6b4a674b3c401 -dist/2025-12-09/rustc-beta-i686-unknown-linux-gnu.tar.gz=e31368fbc85656ab864046539978da6b6635a6ee2cc15c48c617b988b84c0d8b -dist/2025-12-09/rustc-beta-i686-unknown-linux-gnu.tar.xz=de94f1f65cd3afc9c7caf554a50e3a1c7e8d730413c3dd4d9916618e7aabb3af -dist/2025-12-09/rustc-beta-loongarch64-unknown-linux-gnu.tar.gz=af6be7ca8e4b43b87a754bc63be169b392e4fdbccb9217fe19960bdd87278703 -dist/2025-12-09/rustc-beta-loongarch64-unknown-linux-gnu.tar.xz=caa7e16901ff848b2083ccf5b684c9e1975da3dad46bbbd72b127c9420508f57 -dist/2025-12-09/rustc-beta-loongarch64-unknown-linux-musl.tar.gz=8652e6f5e68146d3483dd7baa8e215b7ec003a626547cf087a541c78ed98fd67 -dist/2025-12-09/rustc-beta-loongarch64-unknown-linux-musl.tar.xz=d3853bfd0bfdbe96996764f27451154c0f0b4b135728c25a2be48b7ce069440d -dist/2025-12-09/rustc-beta-powerpc-unknown-linux-gnu.tar.gz=828e8cc488d70fc966bcc1196b019b74a7610cbc4b0947b04eea684da8e77f35 -dist/2025-12-09/rustc-beta-powerpc-unknown-linux-gnu.tar.xz=47bdc9313660ca1a29525155f3a7773ffa4021219dac5cfd309f5ec692ab1821 -dist/2025-12-09/rustc-beta-powerpc64-unknown-linux-gnu.tar.gz=f7b8dc496326a38d47f9769631b9893c803acb21cf7021e7ee200e81bffd0f2c -dist/2025-12-09/rustc-beta-powerpc64-unknown-linux-gnu.tar.xz=1d4ec35a9ee7cad99458db77f8787dee2c90556e56a21c8681984a09798f1e7f -dist/2025-12-09/rustc-beta-powerpc64le-unknown-linux-gnu.tar.gz=8dad2a1f7f9667270fb7e8d0917c77b251f2079251e46bf012d640754a46e0a6 -dist/2025-12-09/rustc-beta-powerpc64le-unknown-linux-gnu.tar.xz=259c2b9add30c03a6f91c4aaebfe4f052f0342bcc32df79af1121316ee5aafc8 -dist/2025-12-09/rustc-beta-powerpc64le-unknown-linux-musl.tar.gz=01b1b5bc19b82caa031c0ff2fe4d9d4ef27aa17a918ea15853c3680f3d1eea8a -dist/2025-12-09/rustc-beta-powerpc64le-unknown-linux-musl.tar.xz=4a410356d19e7e5b46a276c0ed015df3afa2af8aa5837feba11149212a4b4208 -dist/2025-12-09/rustc-beta-riscv64gc-unknown-linux-gnu.tar.gz=a0530a7ca051e0fd0ae303f479f0962e0d3bd0065be3cc42bf29272322ce4893 -dist/2025-12-09/rustc-beta-riscv64gc-unknown-linux-gnu.tar.xz=1e1ab9ce2619c6430e785c00cccf689fde5c20b4b81dd6281deba15615cdf9fe -dist/2025-12-09/rustc-beta-s390x-unknown-linux-gnu.tar.gz=bc0e4f9ba5f99fc9b849e95901140957d58cda12e980edf84a6a05544a32c80b -dist/2025-12-09/rustc-beta-s390x-unknown-linux-gnu.tar.xz=9ba83613dab2ffa00b581f5927abfb8398e3854fe21d2b685830ff57f609324f -dist/2025-12-09/rustc-beta-sparcv9-sun-solaris.tar.gz=8ed8158201b4f55d68bb5e89bcea83763803c5b592864495c5b614bea1cf717a -dist/2025-12-09/rustc-beta-sparcv9-sun-solaris.tar.xz=51e54052960f878e4e8d028917db9b02c0650350d50e537cd873c0c812a85957 -dist/2025-12-09/rustc-beta-x86_64-apple-darwin.tar.gz=ff615c109d69ff4beb505968210112b1307893824f410b3b461b9c3236b082b3 -dist/2025-12-09/rustc-beta-x86_64-apple-darwin.tar.xz=0a60addd526bd5964ae9710692a472edf6b9af88cbe6e671764dcd0fa7a785db -dist/2025-12-09/rustc-beta-x86_64-pc-solaris.tar.gz=e2c75e77f4f2582b2d3e7336daae2dd06a8d3a14de2ca954d8b65dc809cd774b -dist/2025-12-09/rustc-beta-x86_64-pc-solaris.tar.xz=2264bc2facde878befdddc8c47c7eb795ce5b2777a1d8fa48cbf5bb81e214475 -dist/2025-12-09/rustc-beta-x86_64-pc-windows-gnu.tar.gz=7e4a2a3cdfc7aa744b90a09dd6c0a98164898a7ff04c8a15ec61b91fe9efdcd7 -dist/2025-12-09/rustc-beta-x86_64-pc-windows-gnu.tar.xz=50b143dae27df2e923bf0d498e6ef155b95a89ad1548b6bb859e1c95fe1b9a92 -dist/2025-12-09/rustc-beta-x86_64-pc-windows-gnullvm.tar.gz=6e71c2b948b20319ef43242af469e241ce9567586fd6d872fd85751c8db1ca16 -dist/2025-12-09/rustc-beta-x86_64-pc-windows-gnullvm.tar.xz=a9b72e9897a93981b9c9f166f1f4072560c1eb4f9e0f5a5a6c2eb0ab742bd020 -dist/2025-12-09/rustc-beta-x86_64-pc-windows-msvc.tar.gz=e975eed4f35220c1cd0b7e19c2ad48ce9f57cb2d07b90a2331a16e2502d1289e -dist/2025-12-09/rustc-beta-x86_64-pc-windows-msvc.tar.xz=11a8f8d49f946bf4e1ebcf9e21ccc8d75de627c84776aba1041082f676cb029c -dist/2025-12-09/rustc-beta-x86_64-unknown-freebsd.tar.gz=94c7e7b64d00c24ffe18cd5b1c96ad9d55019acc98e9ad23d798974e7936780c -dist/2025-12-09/rustc-beta-x86_64-unknown-freebsd.tar.xz=ef33215967034bce1217f5587d9454dba543260ff38c2c80f8ecb1292f9c063b -dist/2025-12-09/rustc-beta-x86_64-unknown-illumos.tar.gz=45e2f150ac9a4aee63437d7621b5ad8782c4248f8dda30062b1a001a9f9c7a32 -dist/2025-12-09/rustc-beta-x86_64-unknown-illumos.tar.xz=e0196e2bccbad5d1e520f0e711a8d79ebc6296f8946421fc80c7c1b51115e9bd -dist/2025-12-09/rustc-beta-x86_64-unknown-linux-gnu.tar.gz=2d14a960636bae79f0ace6ae5b91ba2a07f8897512a5e7ce9b72601d4c0aabc6 -dist/2025-12-09/rustc-beta-x86_64-unknown-linux-gnu.tar.xz=d80990444597aeef8a956bb71ed468d874f1b47316e51afafe509442803ebae4 -dist/2025-12-09/rustc-beta-x86_64-unknown-linux-musl.tar.gz=e6bcc1ad145b9154560ef41d0e664dbf133980226983c334f5c3ffe1350892ae -dist/2025-12-09/rustc-beta-x86_64-unknown-linux-musl.tar.xz=1dbe4c0222aee37c45b8bb53dd563a56c4f7f198e97b25e22ea5590bb4bc47c2 -dist/2025-12-09/rustc-beta-x86_64-unknown-netbsd.tar.gz=618cbe2bd888669e7b0ee73b127f4a68bc1a30976ae41cfebbe806be794eb143 -dist/2025-12-09/rustc-beta-x86_64-unknown-netbsd.tar.xz=ecfde3d55928deeeabe49e31a5263ade8119897f9f82aafe594406d5ec2fc1a9 -dist/2025-12-09/rust-std-beta-aarch64-apple-darwin.tar.gz=71485c941dacf6a9f2acebfb7506eca5802aba23fc941208d1563fd0a6b74876 -dist/2025-12-09/rust-std-beta-aarch64-apple-darwin.tar.xz=2bec6cbb4c6249fa5a5384ef67dfed9c5b2149589efb086f18b675eca472c255 -dist/2025-12-09/rust-std-beta-aarch64-apple-ios.tar.gz=62701f83e7d374f318756720f6a7ca14a9dd94935df92bb635da718a724e91a9 -dist/2025-12-09/rust-std-beta-aarch64-apple-ios.tar.xz=b596278416039b70cdca751482255b16708bde9ad008b08a49362456231904d6 -dist/2025-12-09/rust-std-beta-aarch64-apple-ios-macabi.tar.gz=38bea00e6057cd52d98b7a707f36d091877b8a8dc38c4aa3e8e08a57e95caa75 -dist/2025-12-09/rust-std-beta-aarch64-apple-ios-macabi.tar.xz=45a01da54adc3c02e0e5837ca30a1e5d2f284958d6622d048c2b76442026ceae -dist/2025-12-09/rust-std-beta-aarch64-apple-ios-sim.tar.gz=40b32df24c2b916d829868fcf7694c9cc00a5853edf8addf586ed346ee29e2bc -dist/2025-12-09/rust-std-beta-aarch64-apple-ios-sim.tar.xz=7d9683d5614f0fa59641e299d169275f7e26d1ab8e4c1510216eb15307e6c63f -dist/2025-12-09/rust-std-beta-aarch64-linux-android.tar.gz=97ddf7807abbd7494c9c0053a6d1b6ef9b5a02329a572eb6ac56c58843d6e558 -dist/2025-12-09/rust-std-beta-aarch64-linux-android.tar.xz=b971a8c8a44a3fa048752e23232335e7896e3c4ef2cdf8636a3d3504e2a8ddaf -dist/2025-12-09/rust-std-beta-aarch64-pc-windows-gnullvm.tar.gz=d3acb91f5bb97c0272c2d61b2abc6ba0a717808c89b201273f4b8a6a9aca08ff -dist/2025-12-09/rust-std-beta-aarch64-pc-windows-gnullvm.tar.xz=3cc8c607b8289748cec9b3470ca37fab63be4f5a48cf3fb3dd48c5e7983b3682 -dist/2025-12-09/rust-std-beta-aarch64-pc-windows-msvc.tar.gz=d65621d42ac27885ab47ae95cc5feae4aa6ededc61b7d3206f9ddf930da08d41 -dist/2025-12-09/rust-std-beta-aarch64-pc-windows-msvc.tar.xz=8f96ad5facfb3f4b03bb84fb49b014505795764dbb49a66497c753bdbcea6fa1 -dist/2025-12-09/rust-std-beta-aarch64-unknown-fuchsia.tar.gz=e5ae9120a770ee03254ea202031d11cc5d0f06260c3818334d4afd586ba619a0 -dist/2025-12-09/rust-std-beta-aarch64-unknown-fuchsia.tar.xz=1fb8e830cf4dfa2df68b3d730cb709e4225fe13002e4bf768d875be7c330b892 -dist/2025-12-09/rust-std-beta-aarch64-unknown-linux-gnu.tar.gz=21d61a5e4e7a84d87b8d371900300b0a9bc4afbfd1b8fc6e6500be338a8f40cf -dist/2025-12-09/rust-std-beta-aarch64-unknown-linux-gnu.tar.xz=82783445c68a553bfe1cdb25161073c03deb2a9733e5811f29ff03d86879df56 -dist/2025-12-09/rust-std-beta-aarch64-unknown-linux-musl.tar.gz=69855bba4ddd7e77fadf35cb2fb3e4c6ae9684a3ed68c7b6a949d03b3a2ba2dd -dist/2025-12-09/rust-std-beta-aarch64-unknown-linux-musl.tar.xz=37ccb03697edc787ab7d07e7e77ee328b8dcae8ce5d9d328dcda28489bb4bf6e -dist/2025-12-09/rust-std-beta-aarch64-unknown-linux-ohos.tar.gz=81f3a854fb1af8271abbf4332993b755d3746ad3878066544a0187f80d0d2ab3 -dist/2025-12-09/rust-std-beta-aarch64-unknown-linux-ohos.tar.xz=054666e60b05826046760bce5a1f6b6aa8991205c912cf4faa6630e98808e3a7 -dist/2025-12-09/rust-std-beta-aarch64-unknown-none.tar.gz=e382fedc0bedfaea97ab7d8e2228fe3d437143812fffff224ae14fc434059157 -dist/2025-12-09/rust-std-beta-aarch64-unknown-none.tar.xz=72aec0eb4181535516597e859fd8f10b2216cedec0659b6d322ee353226e5623 -dist/2025-12-09/rust-std-beta-aarch64-unknown-none-softfloat.tar.gz=2e4e1fb234fe8734d884bc180790632be460cedb35fefabf453be6efaca39aff -dist/2025-12-09/rust-std-beta-aarch64-unknown-none-softfloat.tar.xz=f8aa1f77cbcb85def86b725263a70f4d714cbf8c838a563a4fc272aacc2f3ba6 -dist/2025-12-09/rust-std-beta-aarch64-unknown-uefi.tar.gz=65ff64a57050f3be4b64f49c630aca871b448db30ffad76e601cec5306cbef8f -dist/2025-12-09/rust-std-beta-aarch64-unknown-uefi.tar.xz=261f0af0b1b991f59235b0dc05745b51641d649b1b59af7f5f6469ba0a273b0e -dist/2025-12-09/rust-std-beta-arm-linux-androideabi.tar.gz=c8b5c64541286f0b0a9675083bf2c37fdd39577b362efac149cd261bc19fbdc6 -dist/2025-12-09/rust-std-beta-arm-linux-androideabi.tar.xz=4d43c454ea36de0dc391de15d6cc54f0e24982d5b6f6b0574775b68317003c03 -dist/2025-12-09/rust-std-beta-arm-unknown-linux-gnueabi.tar.gz=acdb7e966699acafa86b4873dfda34724fb53f2688ff3a76edf4c0f638443648 -dist/2025-12-09/rust-std-beta-arm-unknown-linux-gnueabi.tar.xz=fa2d71b3d23572172fcede867b6ffe95135576c696ad2b7f7642bc97d9cb59f7 -dist/2025-12-09/rust-std-beta-arm-unknown-linux-gnueabihf.tar.gz=c07bb539390c033df181ece6cd12ff3e9495719d7ea24e8410815436c8d43d4b -dist/2025-12-09/rust-std-beta-arm-unknown-linux-gnueabihf.tar.xz=d1bfaa712e3687f1a24e0733666e6f78593b2ec66e7edd4a90183e15afacc38f -dist/2025-12-09/rust-std-beta-arm-unknown-linux-musleabi.tar.gz=19fc80ca30e77eace2e2c0d37ebe93efe5423ab08852832c18e5be5f9a49b994 -dist/2025-12-09/rust-std-beta-arm-unknown-linux-musleabi.tar.xz=046322601ea0962b6ca9587731a1d3270fd229d18161f02c056bfe882c77481d -dist/2025-12-09/rust-std-beta-arm-unknown-linux-musleabihf.tar.gz=0689439e1518597b6ebb5e1c0e4bcb61a741c0e4f540c03fdc92a5abdb177608 -dist/2025-12-09/rust-std-beta-arm-unknown-linux-musleabihf.tar.xz=00c3dbc2f78f4e372557b59004139708347c543c61c485d8ef6f673840482b01 -dist/2025-12-09/rust-std-beta-arm64ec-pc-windows-msvc.tar.gz=597fb79132dcc86f20b52a7e3694e2aca4e0b1310f2936ec1eda102f0dbff0b4 -dist/2025-12-09/rust-std-beta-arm64ec-pc-windows-msvc.tar.xz=a2e4f7a5026ebd05fed1aa1a925347db043bb03afe5e16cac09cbca6c6ca88e0 -dist/2025-12-09/rust-std-beta-armv5te-unknown-linux-gnueabi.tar.gz=476a217d51c05c3b192bf668db05270e2ad48004635a29194eeb1268c6cf86fe -dist/2025-12-09/rust-std-beta-armv5te-unknown-linux-gnueabi.tar.xz=12a59c08179d0bdbf6811b90aee922b5744a1cc8110ef04db71eb8315e950208 -dist/2025-12-09/rust-std-beta-armv5te-unknown-linux-musleabi.tar.gz=0acdd625672417f897e3381383e2e7982d4b1d29ac418bd4fd864a969532693f -dist/2025-12-09/rust-std-beta-armv5te-unknown-linux-musleabi.tar.xz=515626a896f9d9bc1fcc6ec33adda205b609fe6a41c1462fec0e74bf3c50ff75 -dist/2025-12-09/rust-std-beta-armv7-linux-androideabi.tar.gz=167e74b6f5cb8283ecb53e596c1728d8f91846cbf1b30c7d640dee9b20d433b3 -dist/2025-12-09/rust-std-beta-armv7-linux-androideabi.tar.xz=c2e69b04d4cd86a83aa9b9c3ec37adf3cda2d06c1a4ec977068d216a48681d2a -dist/2025-12-09/rust-std-beta-armv7-unknown-linux-gnueabi.tar.gz=91866669e8946c1949aa48781df52854b5fe537026f9a93c9adf67fd2189ae19 -dist/2025-12-09/rust-std-beta-armv7-unknown-linux-gnueabi.tar.xz=95633a5ba9bc81093b56f5c318d97c50a27f0d553b7e878f039a3a12df4c7e4a -dist/2025-12-09/rust-std-beta-armv7-unknown-linux-gnueabihf.tar.gz=c9746beaf4896937c708143270278c0e6b4b40d7155cf5746443f0f03fee705f -dist/2025-12-09/rust-std-beta-armv7-unknown-linux-gnueabihf.tar.xz=defaafa063c1c57bb5f9ff0320a1f26e4dc7bc626ac31e2d028ef16c81fa3301 -dist/2025-12-09/rust-std-beta-armv7-unknown-linux-musleabi.tar.gz=630af0d305dc441dfa2c04ede30f5d11d154ee04be72f6507f321123ed6bc741 -dist/2025-12-09/rust-std-beta-armv7-unknown-linux-musleabi.tar.xz=b875e2f68624a8149115a1e86b66a279931305816efce81b005ef0479c898528 -dist/2025-12-09/rust-std-beta-armv7-unknown-linux-musleabihf.tar.gz=6f751bf3da85ab19ace00fdac387a60ee6f2ce4b55f5b52efab2a7a7e0d679a7 -dist/2025-12-09/rust-std-beta-armv7-unknown-linux-musleabihf.tar.xz=b10cf3d867407de5c93c2bd65c616d0d5dcba4997c25ad396b5814af86f09d73 -dist/2025-12-09/rust-std-beta-armv7-unknown-linux-ohos.tar.gz=98a4971ed72aad245ca31a7409ec0e33b4304ed3fe470df12b35f83642022883 -dist/2025-12-09/rust-std-beta-armv7-unknown-linux-ohos.tar.xz=f89afd1dab7a482e0d1984fe8852b1a78b2e708d348ddce3978687190e205e84 -dist/2025-12-09/rust-std-beta-armv7a-none-eabi.tar.gz=5801642b53256e015e216b98e1791d9d286e8da496d8a3d0b006f4328b73c814 -dist/2025-12-09/rust-std-beta-armv7a-none-eabi.tar.xz=eee727983344340eab73c430a9ca66763a743c59c2e34b84d2937979e9c02801 -dist/2025-12-09/rust-std-beta-armv7a-none-eabihf.tar.gz=b934350dc0ef04038d0c4cf7924f0d573f559e5925d476cee743a9a74301e953 -dist/2025-12-09/rust-std-beta-armv7a-none-eabihf.tar.xz=46fb1485ebdb726e33e4e2cdeb260578a19ade553caba9190beb3a1ca9d190fb -dist/2025-12-09/rust-std-beta-armv7r-none-eabi.tar.gz=5957cf630fbfb7e3758e151607f2b0d87736f90255822ddd37d8761582f28a58 -dist/2025-12-09/rust-std-beta-armv7r-none-eabi.tar.xz=63b92037e86a526c734461c02d8450c83136b05fef17e8d80e998d513bba9caa -dist/2025-12-09/rust-std-beta-armv7r-none-eabihf.tar.gz=35360bb54ca208dc4b819ec1151d99daf5a2bc7c7f31b81b24f06df1e994b644 -dist/2025-12-09/rust-std-beta-armv7r-none-eabihf.tar.xz=3bb49e862d38d34b5ac52eac27d65eb0c2913cc4d486c83004c485c1a93f36b4 -dist/2025-12-09/rust-std-beta-armv8r-none-eabihf.tar.gz=77c0a3b6a3d57c40012a1bc1818fafaf8b3591c6ac451ea4a05cc599da96e8b6 -dist/2025-12-09/rust-std-beta-armv8r-none-eabihf.tar.xz=add26a701346661f3b16d4ba1db9c8ec795c58427b5a8d1081c7a55faf3813a2 -dist/2025-12-09/rust-std-beta-i586-unknown-linux-gnu.tar.gz=525031f51d2c92301692c0798b48534d2b845eba44e01f7f8e7e7ce4fb6f9379 -dist/2025-12-09/rust-std-beta-i586-unknown-linux-gnu.tar.xz=a882f765539da05de5f8782a6bd6cccc34c5179b6b4ae845eb27a8e9a354fc82 -dist/2025-12-09/rust-std-beta-i586-unknown-linux-musl.tar.gz=0ba2fbbb2cb8aba07122bdeb8ed94e061b256d747c5ad679ddad701601d51211 -dist/2025-12-09/rust-std-beta-i586-unknown-linux-musl.tar.xz=5554b861765e43f530b23595622f399bc83ad04900123f366aeedad71c2e957d -dist/2025-12-09/rust-std-beta-i686-linux-android.tar.gz=039a001036cca4cd22fb42cc60777fac2e2cc9553d0987096c285efc87c53a3f -dist/2025-12-09/rust-std-beta-i686-linux-android.tar.xz=b9ce40f48e695b60a98debff5de341a7303bb8dead8d4f33ca9d9dd0cd5d692a -dist/2025-12-09/rust-std-beta-i686-pc-windows-gnu.tar.gz=34138dba519fe8d3c45326b22091e29d68c4df53c404f1ce90e8d50d9412b5c8 -dist/2025-12-09/rust-std-beta-i686-pc-windows-gnu.tar.xz=ea604b3b0204605f8973c7b257f95c0095a549a221b5166a4fab36fde21fb4ed -dist/2025-12-09/rust-std-beta-i686-pc-windows-gnullvm.tar.gz=6ff8d19ce86de968e10e8449e87528f81979e3470e5ebdbf7c1a089f4896b01b -dist/2025-12-09/rust-std-beta-i686-pc-windows-gnullvm.tar.xz=1659e5a260362e596f26bc55807e8ed407c2603203ddb8201bb6993873fb1cbb -dist/2025-12-09/rust-std-beta-i686-pc-windows-msvc.tar.gz=e2afe62459e655796c3a1c61d6342dbb43eec597a322be633bf4f6ebb3e60faf -dist/2025-12-09/rust-std-beta-i686-pc-windows-msvc.tar.xz=c6e8d9df8fc459d10e7382d4d324604ffbe0f4f18c595684e38c83df149eacb2 -dist/2025-12-09/rust-std-beta-i686-unknown-freebsd.tar.gz=12c3d52726261b7c714e69773d5eba430683f1b5daa5ebbfa728367f2073a9e3 -dist/2025-12-09/rust-std-beta-i686-unknown-freebsd.tar.xz=6e62b81aa735b8f99668fa15741a9b20201e51abc976143b894d867160c2b9a4 -dist/2025-12-09/rust-std-beta-i686-unknown-linux-gnu.tar.gz=f55362021acbf7ce28291f535210d21807caa63811aaa2206d5ceff0e0cb789e -dist/2025-12-09/rust-std-beta-i686-unknown-linux-gnu.tar.xz=c1c9b90c8586805b02d74465d5293ec3d286a07e646e51cfb91505a7d407cf90 -dist/2025-12-09/rust-std-beta-i686-unknown-linux-musl.tar.gz=5df73e6eb6ac56c1866d123852864ae5946be38e97131e0fc23cfbc0ca807a9e -dist/2025-12-09/rust-std-beta-i686-unknown-linux-musl.tar.xz=cb7a6d7060cc9fbc01e54546377d3ee5076ba36b46203acb0aa44fa75ea10c15 -dist/2025-12-09/rust-std-beta-i686-unknown-uefi.tar.gz=3616a3ed2eb921f2075b53c1b04134b1668e4b6d692d50c66ce2d37e7b96740b -dist/2025-12-09/rust-std-beta-i686-unknown-uefi.tar.xz=ac64b54721d8f6b218a9f8a50197b4a8d62d48bfbcd90c4bfca75117f2d359ce -dist/2025-12-09/rust-std-beta-loongarch64-unknown-linux-gnu.tar.gz=219729c628f9729d415680c688704d7561e1550b8ecd1d508b103c204ce47f35 -dist/2025-12-09/rust-std-beta-loongarch64-unknown-linux-gnu.tar.xz=73ecff3074ebc9abe9efec380c75c8c717df50a08b339dd0aece8538b58daa04 -dist/2025-12-09/rust-std-beta-loongarch64-unknown-linux-musl.tar.gz=481877f357877619d950d0826197843e47204d3b57aee11b7880ce4559da5dba -dist/2025-12-09/rust-std-beta-loongarch64-unknown-linux-musl.tar.xz=60674e9092592803e2bbb2a36d8793e3c88f56187f43f289d5a63ddb10cad23c -dist/2025-12-09/rust-std-beta-loongarch64-unknown-none.tar.gz=2651b85be9f606f7d769433f716e482921cbfd39c3318fcedc0a42b35eea5bd4 -dist/2025-12-09/rust-std-beta-loongarch64-unknown-none.tar.xz=b304b09ff87242b78ea524c3a3c8dcf5d30d4889f7d103318df9316bc65d051c -dist/2025-12-09/rust-std-beta-loongarch64-unknown-none-softfloat.tar.gz=6a1735d9a1d6fed323a659ee39a88dcdcce72385b9b306135b7ec24c3e3f6cd0 -dist/2025-12-09/rust-std-beta-loongarch64-unknown-none-softfloat.tar.xz=d0b1ec1cb5a97e60b3a805f60b75d06e8572d9f513310da72e7029e23449d457 -dist/2025-12-09/rust-std-beta-nvptx64-nvidia-cuda.tar.gz=bcf45185cb5475a179c4402f787fd6780545512f3afa33dca71c6862e83240c3 -dist/2025-12-09/rust-std-beta-nvptx64-nvidia-cuda.tar.xz=aee86a13753c9be073a18dce28384921f2a5519d272802791e1d5b96ed00cd2c -dist/2025-12-09/rust-std-beta-powerpc-unknown-linux-gnu.tar.gz=2da51021239ce4c3dcc36c02107f4abc70df7b157784e7c9dbb4aa9d83014e49 -dist/2025-12-09/rust-std-beta-powerpc-unknown-linux-gnu.tar.xz=3c54a7b9cf2318589f9d52109b0083df2eb7193f2c4d45d166c1912353ac0812 -dist/2025-12-09/rust-std-beta-powerpc64-unknown-linux-gnu.tar.gz=49107f7d7290c8779161095c2f7218e929cf4498b04cb8717b2e04ef00d04139 -dist/2025-12-09/rust-std-beta-powerpc64-unknown-linux-gnu.tar.xz=26539ea11b3838de5c530c0462c38f31aa5ae889abd65e5eb18a8817353207e0 -dist/2025-12-09/rust-std-beta-powerpc64le-unknown-linux-gnu.tar.gz=198b5e4b994c18e096a0c24a1ede2ef180183780f1456d3af3ef46d516fface0 -dist/2025-12-09/rust-std-beta-powerpc64le-unknown-linux-gnu.tar.xz=9c31f5d881ea898da452d628bc0a1e2e27434e8c6b3f5561e0e326024dd91d9a -dist/2025-12-09/rust-std-beta-powerpc64le-unknown-linux-musl.tar.gz=e796cbfca385de190e7b56fe4c5e8b76a22410fc1e303c55dd22db03df5eb15e -dist/2025-12-09/rust-std-beta-powerpc64le-unknown-linux-musl.tar.xz=056cbacb291248e2ff71e6d051119bc3b6f4157cb0e9349b4a69bc71165ee978 -dist/2025-12-09/rust-std-beta-riscv32i-unknown-none-elf.tar.gz=f28ca9d74bbf52ab554f83f70e42e55f050610a49f1c57230ca65fa7088b1b48 -dist/2025-12-09/rust-std-beta-riscv32i-unknown-none-elf.tar.xz=3a5637edd1179cf15143250ee5e152a1e21c0eb0aa725f05f4a0a7d902b04ddf -dist/2025-12-09/rust-std-beta-riscv32im-unknown-none-elf.tar.gz=202251567a7cac42470061f4fbfe7e465d94838b492654256992960ba746b27e -dist/2025-12-09/rust-std-beta-riscv32im-unknown-none-elf.tar.xz=faca8810a93a0c916f75643c60a6dfc873c4521647b4f2d3a288e510885f7e70 -dist/2025-12-09/rust-std-beta-riscv32imac-unknown-none-elf.tar.gz=226c5737b033bc3acec904593845f484d32451e2a1309250cfe6c1910013f9e7 -dist/2025-12-09/rust-std-beta-riscv32imac-unknown-none-elf.tar.xz=99f33be2da6e9da57ca13cc50cc2c27f769189cb0d28f8d4576c9d1cdd3784dd -dist/2025-12-09/rust-std-beta-riscv32imafc-unknown-none-elf.tar.gz=8ff0b8eb19a4007dad61364ec7957d25fd7778c4c2801dc324ef0638cb874a81 -dist/2025-12-09/rust-std-beta-riscv32imafc-unknown-none-elf.tar.xz=3f4d1f9cbd0db9de6cd0657bcd1844726dd268de71fba893194be76827a1c77d -dist/2025-12-09/rust-std-beta-riscv32imc-unknown-none-elf.tar.gz=f455e8855d37ccf35f86964d91a62ef3fd3ba167fd722e4ac5195b6516fa8c5c -dist/2025-12-09/rust-std-beta-riscv32imc-unknown-none-elf.tar.xz=e698357e974ba32256663c9c0c98209f5f7303f415acce2a6f821d5af4175a20 -dist/2025-12-09/rust-std-beta-riscv64a23-unknown-linux-gnu.tar.gz=57af63ea6f6944a2f6a3311f2ccfbb1d77e2fcb1a8c7d2a3e0bc7db0f3c2b63f -dist/2025-12-09/rust-std-beta-riscv64a23-unknown-linux-gnu.tar.xz=e0779b0a0d2321967350831c1e32bb04abf555667c6666bf137f821bd1858792 -dist/2025-12-09/rust-std-beta-riscv64gc-unknown-linux-gnu.tar.gz=eb3a1f13c27c2d8e2f016385af36b4fe7ae6a879f3440328abcd85986287a190 -dist/2025-12-09/rust-std-beta-riscv64gc-unknown-linux-gnu.tar.xz=cc96484aed4fb6e0e6f5df5326ab9e6647e3d2367752d25f5717f007fcbba6a1 -dist/2025-12-09/rust-std-beta-riscv64gc-unknown-linux-musl.tar.gz=ef8c620a7bd4aae0db5b4b6b97ccb03cb818362e782c845f191f6049e74fa222 -dist/2025-12-09/rust-std-beta-riscv64gc-unknown-linux-musl.tar.xz=ff3405403beb6d794e0f7866c15664a8a8b927c924f99af3f03dbd2d7449eed9 -dist/2025-12-09/rust-std-beta-riscv64gc-unknown-none-elf.tar.gz=dcd2e20de8a9064e569f59092b81385fab67456ef86d5e4b25ee39a6fcdf52d1 -dist/2025-12-09/rust-std-beta-riscv64gc-unknown-none-elf.tar.xz=39f8802cc4106bfa67b6a0cad88534af350619d66718458dbc3912b0ec12f369 -dist/2025-12-09/rust-std-beta-riscv64imac-unknown-none-elf.tar.gz=a7453854d101abc9cb8ee0075c3575eabda972911def34919c5437be79326b32 -dist/2025-12-09/rust-std-beta-riscv64imac-unknown-none-elf.tar.xz=d00175adb49aabe0d6a76592df30558ac745f62fa2e9a62887141a2fbc7304f4 -dist/2025-12-09/rust-std-beta-s390x-unknown-linux-gnu.tar.gz=1725461c9399c95aab95c7963d1f351c7b0d487a96a1d60043b3fd223cfa550c -dist/2025-12-09/rust-std-beta-s390x-unknown-linux-gnu.tar.xz=5157be3919659a14beec82ab274b9fefcea8d7eb56d35de2c7278e21cf4e10f5 -dist/2025-12-09/rust-std-beta-sparc64-unknown-linux-gnu.tar.gz=5380c9bac880edaaf16de8e5fdfdd8deb2b645e4933c18b4928c96755ddbd604 -dist/2025-12-09/rust-std-beta-sparc64-unknown-linux-gnu.tar.xz=0700f10b4c8dce6bf86df94fa7413c95596aab6b70ca89437b226b33a1b5cf22 -dist/2025-12-09/rust-std-beta-sparcv9-sun-solaris.tar.gz=0b3e6a7b49dba2ed53a59ba733ac35094a06e2b1896b88442c72aba36f5c4038 -dist/2025-12-09/rust-std-beta-sparcv9-sun-solaris.tar.xz=18d6ca35ca291af5873d726db3494e3f64fd57f0ca7ed5a60003f7a769f29ce0 -dist/2025-12-09/rust-std-beta-thumbv6m-none-eabi.tar.gz=227f530497142eea0e3906b517c0d93bdba0a598ed469553b7928f094dbd5673 -dist/2025-12-09/rust-std-beta-thumbv6m-none-eabi.tar.xz=b68840c4e61887c593ced00dddb707f95538c72b70c1f5c729086f95604c3d89 -dist/2025-12-09/rust-std-beta-thumbv7em-none-eabi.tar.gz=ed01c5d7941e37e930e5689523a38aa1c8560b99ff90f20443a687e62cff4f51 -dist/2025-12-09/rust-std-beta-thumbv7em-none-eabi.tar.xz=c4170568ef0f5127c55544bd0ca32d5a0f8bd485218fad54129df1c9ca9d806d -dist/2025-12-09/rust-std-beta-thumbv7em-none-eabihf.tar.gz=1bab00737022c44c767ecce5e84f4f0d995ec0358ea50d813b8397e0a4ecb6a3 -dist/2025-12-09/rust-std-beta-thumbv7em-none-eabihf.tar.xz=ad3fd09b465f7a8420be64e43d7ca50f83aa0aaf38fcf30593be6a067593c438 -dist/2025-12-09/rust-std-beta-thumbv7m-none-eabi.tar.gz=fd5f2111dbaef4bee091d09df11f241e7d687fd4dbcbca87348302caef107cc5 -dist/2025-12-09/rust-std-beta-thumbv7m-none-eabi.tar.xz=ab409331b70f565143a34575745f8a25d2eceb1f878aab0c51453fd37cb3be33 -dist/2025-12-09/rust-std-beta-thumbv7neon-linux-androideabi.tar.gz=845ee997875c5a78f80d967894efaf3ebce89306756166513f2a291c9de9920e -dist/2025-12-09/rust-std-beta-thumbv7neon-linux-androideabi.tar.xz=d47c061768ed88a67755597a4c592213f9ab65c1899086d1f6932042d9c61cc3 -dist/2025-12-09/rust-std-beta-thumbv7neon-unknown-linux-gnueabihf.tar.gz=ebc31ccfd49f8583e3c8ea5c0dc0bd1574edbc486bf3b48f8941599ce37207a8 -dist/2025-12-09/rust-std-beta-thumbv7neon-unknown-linux-gnueabihf.tar.xz=79204e81dfd8a46122222ddaf24c9c0931876b8965b54523138764510d6516cf -dist/2025-12-09/rust-std-beta-thumbv8m.base-none-eabi.tar.gz=8f55906a80c91d1e6836513826931185de79dd5c653b8bfeb1e48e37397face3 -dist/2025-12-09/rust-std-beta-thumbv8m.base-none-eabi.tar.xz=2492a0f81dd79b0bf667ab068a36bd7223832ea91737c025d70da36677b74d22 -dist/2025-12-09/rust-std-beta-thumbv8m.main-none-eabi.tar.gz=217d7f3d7b421cda819bd2723738caac2fac06c1b2e3aa3316e9a310f3ac913f -dist/2025-12-09/rust-std-beta-thumbv8m.main-none-eabi.tar.xz=cca4be68e522ccfcd51b08d356d7a8e01d1a29b47a1f1ad224da08ca478fafb0 -dist/2025-12-09/rust-std-beta-thumbv8m.main-none-eabihf.tar.gz=8440d1030be1a5963bdb37c690c001046d369e43ce2fbba9a5823cacc17d16f2 -dist/2025-12-09/rust-std-beta-thumbv8m.main-none-eabihf.tar.xz=41836a990ab6fff97ca35e8b42e345179c475e87f684b166dfd1a40e65da773e -dist/2025-12-09/rust-std-beta-wasm32-unknown-emscripten.tar.gz=ec25fd98026b960e04ffb28b5a21bd9574dda359aa0f6f905f17cdcaa45c86d0 -dist/2025-12-09/rust-std-beta-wasm32-unknown-emscripten.tar.xz=ea4d554a967e035a5d03ab3098eed7d0d493ac46a75c5bdb4f8b294b98f6092c -dist/2025-12-09/rust-std-beta-wasm32-unknown-unknown.tar.gz=ecb7f66836e8745663c346d5de957fef96583e36053a94e3171813746edd79aa -dist/2025-12-09/rust-std-beta-wasm32-unknown-unknown.tar.xz=639c98dea1d0db49b827e96404d1126e604bcfa111ea4bf6519c67232f588600 -dist/2025-12-09/rust-std-beta-wasm32-wasip1.tar.gz=436dc6f6eb37ef3c956c8f020d5eecd51034e5cf4df5940b8295d6bfbe00202d -dist/2025-12-09/rust-std-beta-wasm32-wasip1.tar.xz=65e96ffd02b3735a2b84a00bc3872ea0f574096f56de6c77fb00b3e1d7a0e1fa -dist/2025-12-09/rust-std-beta-wasm32-wasip1-threads.tar.gz=71f8c5f5bdebd64ded342df43f98493d8ecd52434201cad2f6160e06eccf15fd -dist/2025-12-09/rust-std-beta-wasm32-wasip1-threads.tar.xz=81ccdab9aa05a1839fea2498ec7eac882b4c56ae3c573ca43132ac450c48738c -dist/2025-12-09/rust-std-beta-wasm32-wasip2.tar.gz=29b92754da126ee7e8bb1b71b7ee98255c52b53b842923ad29a97d4d54b06737 -dist/2025-12-09/rust-std-beta-wasm32-wasip2.tar.xz=c6fe278fbf360f03e5dc13a7e9de2b9eef4a8cb65e543e63c4e299df155a6018 -dist/2025-12-09/rust-std-beta-wasm32v1-none.tar.gz=a0645d157f59d1bf2e97f89e0453e13f02ec114ab28a07aa2d5746b15073f2e2 -dist/2025-12-09/rust-std-beta-wasm32v1-none.tar.xz=7120f968949be0ec4f89312135f36adda1b75db3d2070d6548a71324e57755b4 -dist/2025-12-09/rust-std-beta-x86_64-apple-darwin.tar.gz=07b68e518da8d290c26d8917f18f31c4c0b8c00f2aa83b4d70bd057e42264d1c -dist/2025-12-09/rust-std-beta-x86_64-apple-darwin.tar.xz=00785f17e51985fcf66185547c4996da73cfac13dfef10e3143491fa0a50bdf4 -dist/2025-12-09/rust-std-beta-x86_64-apple-ios.tar.gz=09aa4217e1fa44ca41f0711374b3dd194849f7eabe988275915c6a3cc9a5b34d -dist/2025-12-09/rust-std-beta-x86_64-apple-ios.tar.xz=cc7723d874929dc474643287905165b6ebc2d5b5d488b00a4239436f65bb0373 -dist/2025-12-09/rust-std-beta-x86_64-apple-ios-macabi.tar.gz=7893661c4998ba8c53e25770d2ee63cc5c52583a7c3a65c8289697a9b3c734c5 -dist/2025-12-09/rust-std-beta-x86_64-apple-ios-macabi.tar.xz=f07589b38e0f48d6d349c71b029347a006f52a9777e53779e933df296dd5fd41 -dist/2025-12-09/rust-std-beta-x86_64-fortanix-unknown-sgx.tar.gz=6bf1078f18c314bbda2e8e61c6d7bd821875d7cd6945fc00b25b7c1b951a734c -dist/2025-12-09/rust-std-beta-x86_64-fortanix-unknown-sgx.tar.xz=740bbd92e86c8c2809c8922e696c5cc8bce48454d40b486ded2f4b3922815b98 -dist/2025-12-09/rust-std-beta-x86_64-linux-android.tar.gz=752f3f17da55e9aa2fc810b01566828ca94cff8af422f8d85f82029c862f0a48 -dist/2025-12-09/rust-std-beta-x86_64-linux-android.tar.xz=c6f7d6d01c04a8370db9b28e0f1b7fcc20cde35dc1bcf668d667268129341f32 -dist/2025-12-09/rust-std-beta-x86_64-pc-solaris.tar.gz=96b14f03be37a8f94190fe9c78fe12e6423954499ddbe8f6a7375cd72ab345f2 -dist/2025-12-09/rust-std-beta-x86_64-pc-solaris.tar.xz=70d6a32f6b740bdb0aecdf7ef8811c94ec31905737ee144573e72a56fad93dba -dist/2025-12-09/rust-std-beta-x86_64-pc-windows-gnu.tar.gz=6ccec82d1cc57a83afd857b7bfa02bfd0aba6908deaff8319322148cb11145a5 -dist/2025-12-09/rust-std-beta-x86_64-pc-windows-gnu.tar.xz=932c90d8de3d8b1e1b705862e2d7570b5fa09c2fcc210aeb6d054c61980b61ca -dist/2025-12-09/rust-std-beta-x86_64-pc-windows-gnullvm.tar.gz=454d9ebd2ae8baa0350d452023cef119dfc2a6ce2035d6caee2a6aaf51445e08 -dist/2025-12-09/rust-std-beta-x86_64-pc-windows-gnullvm.tar.xz=b11035387f7bd20a12f249a3b527ef6e6bb21e55c8bfc17eb43fe8ed2aeb2d01 -dist/2025-12-09/rust-std-beta-x86_64-pc-windows-msvc.tar.gz=5fa38e0b4568da60d8bacb77d667bca269a62a806245fa1b3c5154868ce8c0e9 -dist/2025-12-09/rust-std-beta-x86_64-pc-windows-msvc.tar.xz=3afde6b9cadc0f0782b342cea124ec9b6196e85f99b317d5365bc8d6f0886f57 -dist/2025-12-09/rust-std-beta-x86_64-unknown-freebsd.tar.gz=6fce2224f59084e4e256a42437f49bbb01523827aad5b0c9406fd23c7117d62c -dist/2025-12-09/rust-std-beta-x86_64-unknown-freebsd.tar.xz=3ae24b5b8acc95e1a3659451bdf8c12c02a3c576b51311ca87636dee0fbe8162 -dist/2025-12-09/rust-std-beta-x86_64-unknown-fuchsia.tar.gz=49f82f4a9b54861c304a89a32667d87ddaa5045920effd2f8a51d27495538f58 -dist/2025-12-09/rust-std-beta-x86_64-unknown-fuchsia.tar.xz=7f5d52c6c6263a47a496a4d915be1b91418c3e16a06ccd0255d94577d71a1786 -dist/2025-12-09/rust-std-beta-x86_64-unknown-illumos.tar.gz=a1e12868fccdf88c54eced9793d8c4b292a4e2ab336b14ad3aef1529e6bbf427 -dist/2025-12-09/rust-std-beta-x86_64-unknown-illumos.tar.xz=2be5a86894132b2ddcde9127aca6ddd366e6a6b928d0bbefcfad155afd2c6a8f -dist/2025-12-09/rust-std-beta-x86_64-unknown-linux-gnu.tar.gz=552bcdb9041169ab431674f7536107af05ef4b9f85351757ec890c0779f5ef1d -dist/2025-12-09/rust-std-beta-x86_64-unknown-linux-gnu.tar.xz=393e345443c8c16e9b796ffd1d1867650702c75db3a1d541396ad7d035eba249 -dist/2025-12-09/rust-std-beta-x86_64-unknown-linux-gnux32.tar.gz=91bf07d6ae7cc836aa4f5440a639a89cc0c706e11145a2dd9e1a46d87a85a8f3 -dist/2025-12-09/rust-std-beta-x86_64-unknown-linux-gnux32.tar.xz=5acb8a3606a14d6ba23296d1dba83fbdc9e10d33c4a0859ae675a8910963661f -dist/2025-12-09/rust-std-beta-x86_64-unknown-linux-musl.tar.gz=7d5307cdbc388a9635bad36081d067e3bb1ea6b30f53fddcb7a7b4a5046ad86e -dist/2025-12-09/rust-std-beta-x86_64-unknown-linux-musl.tar.xz=33087e52b9683d0653e3c3315b03d39b7e7cf6b0f1d1a4a11a1ae21949a62765 -dist/2025-12-09/rust-std-beta-x86_64-unknown-linux-ohos.tar.gz=c4bd53291e41545a9e48c3951d591ffd3ef3c549b644a333913dd3770ce4020f -dist/2025-12-09/rust-std-beta-x86_64-unknown-linux-ohos.tar.xz=dc70e5c4e567962bc98a62a2f492828ee5f0420b9f44f6bd4279d2e59efe4433 -dist/2025-12-09/rust-std-beta-x86_64-unknown-netbsd.tar.gz=b08307db96fdc7777825ed9a2f09c1fe9b2bd3bcc8862a10ee31c8306ffd45ae -dist/2025-12-09/rust-std-beta-x86_64-unknown-netbsd.tar.xz=8e2fcfd80f0a678a91df324c198609bee2b02a76fdff6e861fa166be7964e03e -dist/2025-12-09/rust-std-beta-x86_64-unknown-none.tar.gz=c459a4cf0b0b38282bad8a80f42af8bd7567613432106396246f1751b3e1b187 -dist/2025-12-09/rust-std-beta-x86_64-unknown-none.tar.xz=da43d6038f9b0ea443c5a317e2d3414df076ae5f6e59433c4371289ed3852a46 -dist/2025-12-09/rust-std-beta-x86_64-unknown-redox.tar.gz=20cd456f8d9012aefe5ea5fc639ff18142614af45f00b101526587fedc735382 -dist/2025-12-09/rust-std-beta-x86_64-unknown-redox.tar.xz=7d31c1346facd16accb3a58dcae5fc62af5db3c99c26ba5915839a3118571208 -dist/2025-12-09/rust-std-beta-x86_64-unknown-uefi.tar.gz=7c738b0354a7d25b5d931d2e73b1207d452d027935f034a7ae106e4119ebcae8 -dist/2025-12-09/rust-std-beta-x86_64-unknown-uefi.tar.xz=e0640c8cfb01603576e58142829e96f06b650ad9131b8bfa8ecc76d26a49fbd1 -dist/2025-12-09/cargo-beta-aarch64-apple-darwin.tar.gz=9f75819749c4cc87f7435e765ac987f0816e8a17636828a152bba7dd02b46b6a -dist/2025-12-09/cargo-beta-aarch64-apple-darwin.tar.xz=38b8c3e43121c5a1f93e6b81d53598185d0c42c41933db4e09bb402aacf719d9 -dist/2025-12-09/cargo-beta-aarch64-pc-windows-gnullvm.tar.gz=5823f511f5e81e2b4cb72a9dc5955b311b31c7e07ac84be7c81a2ab537e20ec8 -dist/2025-12-09/cargo-beta-aarch64-pc-windows-gnullvm.tar.xz=e1cc29549af4fc472a1edc603de3ec9e575d4c18d67346b2b3b17ec1f3d4d140 -dist/2025-12-09/cargo-beta-aarch64-pc-windows-msvc.tar.gz=e7486bdbd06111ef8e0c328a0ba4e8a5a56d710054a17dc2b9ffbaf05c7c4e17 -dist/2025-12-09/cargo-beta-aarch64-pc-windows-msvc.tar.xz=18c81a2a41051362e1e0a040bb8615f4e3b3ed671147ad585ae9befd17e41c94 -dist/2025-12-09/cargo-beta-aarch64-unknown-linux-gnu.tar.gz=5f846b7dbb282195160213f282e4746c874e60f6cff5ecef2083f0805765ec72 -dist/2025-12-09/cargo-beta-aarch64-unknown-linux-gnu.tar.xz=c9eaf314667d3d0bb3da48857720be60c715a9fc3344bec15a7fb1b92c6214d6 -dist/2025-12-09/cargo-beta-aarch64-unknown-linux-musl.tar.gz=0394e35c668e58e9e6b2cf5eef24981ab97356f857546090a9af321b27fa9631 -dist/2025-12-09/cargo-beta-aarch64-unknown-linux-musl.tar.xz=cb3b9b54402f919244572eeee0cee0c16908fd80de7a07357eaa3fbde21852c5 -dist/2025-12-09/cargo-beta-aarch64-unknown-linux-ohos.tar.gz=9845a957510458b2fee44efbde72b71e7575a557687f07f76f71f343e746aef3 -dist/2025-12-09/cargo-beta-aarch64-unknown-linux-ohos.tar.xz=4ef90f7bc4c9eb87e259ba52f492ff100926ca0d5c874bf00f6e28f256dd9f32 -dist/2025-12-09/cargo-beta-arm-unknown-linux-gnueabi.tar.gz=c5e609db1371ceeb9a9c817fffa90b59aa5d88a2931100e68e5e5fcc49f98f7a -dist/2025-12-09/cargo-beta-arm-unknown-linux-gnueabi.tar.xz=aa454892dac6baaf4a51e6afaf41c9acb81e50bdd7a5de6c85045e2fad7d37c3 -dist/2025-12-09/cargo-beta-arm-unknown-linux-gnueabihf.tar.gz=5e8b574d1b758f045c7938439e44d173065525a1b99cdeb1f4ae822fd1dc7a31 -dist/2025-12-09/cargo-beta-arm-unknown-linux-gnueabihf.tar.xz=6eb4178b85a3c6e7eaf324c28496e8701af2268151590ccd361853e8f52078da -dist/2025-12-09/cargo-beta-armv7-unknown-linux-gnueabihf.tar.gz=c4817681243ebeca687abc59fc0f1035d898ffc03b339634435fcdb6ac0563ba -dist/2025-12-09/cargo-beta-armv7-unknown-linux-gnueabihf.tar.xz=74867e0de7d5eb96c10888c2aa536dbcf140e94190f42b3462a483fc3a17eea0 -dist/2025-12-09/cargo-beta-i686-pc-windows-gnu.tar.gz=4182caa439db0b6cb9ebed815d27de38d492904e9e4d05523b64de77657549f5 -dist/2025-12-09/cargo-beta-i686-pc-windows-gnu.tar.xz=12963ebddf340691ad70b4c1cb71ca1dbe9ea7b20e969ddaa1b01199519eed97 -dist/2025-12-09/cargo-beta-i686-pc-windows-msvc.tar.gz=5ad903382865f5e03659c8c128b33e8afb4288d52c515de1aee00ef119f1dc59 -dist/2025-12-09/cargo-beta-i686-pc-windows-msvc.tar.xz=4abf8df988ac23a7c2f3a974dc3f3ac2c5babf13c13a7089366813bb0e177d2b -dist/2025-12-09/cargo-beta-i686-unknown-linux-gnu.tar.gz=8e161351713a615e0625ea79e20915427c4daa006be76336c45f0fb90a2d2a1f -dist/2025-12-09/cargo-beta-i686-unknown-linux-gnu.tar.xz=3b550c261bd105fc5f3d027dcc90b37b343be3187ff2b1d84912b09faf0f976f -dist/2025-12-09/cargo-beta-loongarch64-unknown-linux-gnu.tar.gz=cc345ca12eb88366b95de1c40ca182ca14f260cca7cfb857e775f011bc9c3adc -dist/2025-12-09/cargo-beta-loongarch64-unknown-linux-gnu.tar.xz=b6a3a0ab898dcf2b35556642f812870ee15e62bed465e33ed4e8bf1094444b52 -dist/2025-12-09/cargo-beta-loongarch64-unknown-linux-musl.tar.gz=a7ccd2f9f0dd4b7dfeacf06c42812471bdd24d2795f3533e41db872183157a14 -dist/2025-12-09/cargo-beta-loongarch64-unknown-linux-musl.tar.xz=b2a75d4597b62f9d2fd3534b0972a8f0f6447d8da14e887d6207f3869d8df4dc -dist/2025-12-09/cargo-beta-powerpc-unknown-linux-gnu.tar.gz=0b8db0062b3220806d215eab392bde104a4846f16b07b14130efa456352f0610 -dist/2025-12-09/cargo-beta-powerpc-unknown-linux-gnu.tar.xz=51991f325aa8d01393c59af81d92d32fddb90a0e153178fa6d574f113a33376b -dist/2025-12-09/cargo-beta-powerpc64-unknown-linux-gnu.tar.gz=ae8d26626ff486f360f8b7d8178844024d4f458eca5997c9305825f3010f679c -dist/2025-12-09/cargo-beta-powerpc64-unknown-linux-gnu.tar.xz=b40b3f43472ab0bfc46f821c12a1df17dd41aa0ff6375522861abcb77aabd68b -dist/2025-12-09/cargo-beta-powerpc64le-unknown-linux-gnu.tar.gz=362ca45ba28f18d3667416b2c81fc03d6b424d6d8d778f3d7a31dcb89f6f7fb8 -dist/2025-12-09/cargo-beta-powerpc64le-unknown-linux-gnu.tar.xz=4513dafaf90abb9eba29f578b1ca1c57934ce78f0ad05ea0f45be5b6e39da7a9 -dist/2025-12-09/cargo-beta-powerpc64le-unknown-linux-musl.tar.gz=d77e406f0e0056a24db4afe70addff520059bfcf2e4441d4e3972dc20953ed0d -dist/2025-12-09/cargo-beta-powerpc64le-unknown-linux-musl.tar.xz=17e2a1f489fcd6920543e46fdf08c54a63e9bba1490d6daa800e225c6b753fd1 -dist/2025-12-09/cargo-beta-riscv64gc-unknown-linux-gnu.tar.gz=469db45a320665a6a285bdfaf45791715a8c546c61cea3a35066b43b8d410c16 -dist/2025-12-09/cargo-beta-riscv64gc-unknown-linux-gnu.tar.xz=0e2200fed953b69b4709ddc4df060e9718f09d062ae7184f51479ae684137e01 -dist/2025-12-09/cargo-beta-s390x-unknown-linux-gnu.tar.gz=dd3f998f36bf93541072e3c5a6d93ab7cca773e93ec436f2202d791e009ce6fd -dist/2025-12-09/cargo-beta-s390x-unknown-linux-gnu.tar.xz=f7c2707a6e855eb6ef6fa34da58c838db64a48ecf4baf84f62a3d676dc90a794 -dist/2025-12-09/cargo-beta-sparcv9-sun-solaris.tar.gz=646cc26a6cb13d404832ab6b10ba30c88ae232fdcf84ff2e524a61f6a8d3a3ad -dist/2025-12-09/cargo-beta-sparcv9-sun-solaris.tar.xz=833dfe8175a28e9ba9997dddcdff73c17ca54a685805a00fa8d6b3e2b688b532 -dist/2025-12-09/cargo-beta-x86_64-apple-darwin.tar.gz=4c73238ea769c53061b56937baad41e724669159a83b29b2ad71fd61a3e9b83c -dist/2025-12-09/cargo-beta-x86_64-apple-darwin.tar.xz=6eba917c9c319e082437bd402c933f27a0cd855619ccd7bc0eecef0745008714 -dist/2025-12-09/cargo-beta-x86_64-pc-solaris.tar.gz=dbe7b52b7f4e5bacfd465918eae271981eb01d40906152da88fd65ac4aa915e9 -dist/2025-12-09/cargo-beta-x86_64-pc-solaris.tar.xz=1a7addf40be3044cb9cc78574936ea3479466f573dca89c188a0e4fc367e70b8 -dist/2025-12-09/cargo-beta-x86_64-pc-windows-gnu.tar.gz=7a4c5d11c78f79dbd83ea36b8d9f50b8dcc70345d4ded5c25727540d49f8c317 -dist/2025-12-09/cargo-beta-x86_64-pc-windows-gnu.tar.xz=ea5c2c141cf5977cd230a28e7e64eb573090f9df58e694f9587cabbb24630b6a -dist/2025-12-09/cargo-beta-x86_64-pc-windows-gnullvm.tar.gz=6cf2d9cb061376f636ff23c42d4f70f6a7506f2d52a80995a4c0eb9e7011ca0f -dist/2025-12-09/cargo-beta-x86_64-pc-windows-gnullvm.tar.xz=854904ff28e8138e5d6b4a07698aa762a199f18692666962172b70d3f98085ef -dist/2025-12-09/cargo-beta-x86_64-pc-windows-msvc.tar.gz=ffcf63ab2b6a5ab9291e79a7c0bb4b0404a6b0f662c8fee5400871e57030ba86 -dist/2025-12-09/cargo-beta-x86_64-pc-windows-msvc.tar.xz=be6a9ebc401ba2e57dda2c278ac0fb04f07af05bae279df12a6db6cd92dd5fc8 -dist/2025-12-09/cargo-beta-x86_64-unknown-freebsd.tar.gz=194e7c211473bf17a00924a60e87edf95e50c29610ad66b01e03d7a57192bbac -dist/2025-12-09/cargo-beta-x86_64-unknown-freebsd.tar.xz=ecf5f9e48deac7b3bb4207b24607904f084f78e1cbe099b6bf49623361bc2399 -dist/2025-12-09/cargo-beta-x86_64-unknown-illumos.tar.gz=e3b16e0e31260123c60e8061b72b10d5e655f778f6f852feec9ea87816d677b4 -dist/2025-12-09/cargo-beta-x86_64-unknown-illumos.tar.xz=6d1065cc19ae1d09f72740e53640502c3337613f210733fec561ba977dda28a4 -dist/2025-12-09/cargo-beta-x86_64-unknown-linux-gnu.tar.gz=2e1b3cf1ff6d6ebd72f309046c7a764fc3d689ab2cf3f66340a42c98cda06a9c -dist/2025-12-09/cargo-beta-x86_64-unknown-linux-gnu.tar.xz=54f2e54197e4340aab81e4d81d9dff836473d098a0bc12b5f944581cca90567f -dist/2025-12-09/cargo-beta-x86_64-unknown-linux-musl.tar.gz=f34964cfe1432e2af127d62824bcb6be68ee40e41c190774efc56347bb72164f -dist/2025-12-09/cargo-beta-x86_64-unknown-linux-musl.tar.xz=40434b0a6609149823262f2a788a3f15c0343769286b8fd1addc9662fbd26825 -dist/2025-12-09/cargo-beta-x86_64-unknown-netbsd.tar.gz=3c2356d84ecee2197db0963bc67b3c896a90175c1a33c1f0c7df98354a1c17a0 -dist/2025-12-09/cargo-beta-x86_64-unknown-netbsd.tar.xz=bf5fc50b555ed8b1dfa1d06b811c5d0bed790cc0d6ab159fb59ca65604f08a73 -dist/2025-12-09/clippy-beta-aarch64-apple-darwin.tar.gz=07d985d4094b51973607b4857c32cca8371f2c9ea219309e25a8bbc09e7b6f19 -dist/2025-12-09/clippy-beta-aarch64-apple-darwin.tar.xz=022457737252bc7ae1293c523cdaaae68a1952ecd43546c642f0bbf5721bb327 -dist/2025-12-09/clippy-beta-aarch64-pc-windows-gnullvm.tar.gz=77d9f6e425be1a19e684b609971f30373eba3d57f7afec837d41041318acf942 -dist/2025-12-09/clippy-beta-aarch64-pc-windows-gnullvm.tar.xz=2e785a6dd171a22c5e7d57e4692d396256c286e429646f12c5b9ea883ad29c59 -dist/2025-12-09/clippy-beta-aarch64-pc-windows-msvc.tar.gz=df3230490829d3f85e9089c0270436b64984c5c83009e4b7be856cc1533ac697 -dist/2025-12-09/clippy-beta-aarch64-pc-windows-msvc.tar.xz=69d8f5ba926d82d71084ed00be6088bb1537d77a90b24af8218b8995547d1214 -dist/2025-12-09/clippy-beta-aarch64-unknown-linux-gnu.tar.gz=9f23282495c4c598c21795c5938c3b072367d27c56f1ef6c5e9c81e0116a6736 -dist/2025-12-09/clippy-beta-aarch64-unknown-linux-gnu.tar.xz=edca9027570949403f14f0e719249095ccd4b8d59296a41b4a72af54c020ef17 -dist/2025-12-09/clippy-beta-aarch64-unknown-linux-musl.tar.gz=651b5d61d641cf146799a747d4cfd35e18a43638f65765104bbfca1a61f89b60 -dist/2025-12-09/clippy-beta-aarch64-unknown-linux-musl.tar.xz=afee1d8d0b1c2b0a395ad5522e935e2d03c6bb88f2d0a496d8c453b2aaf65838 -dist/2025-12-09/clippy-beta-aarch64-unknown-linux-ohos.tar.gz=871a039f625ae3e2fcd69249b4fbe7211bc57ffa460dbdba95f433731aed00ee -dist/2025-12-09/clippy-beta-aarch64-unknown-linux-ohos.tar.xz=3a6413eac375103258fda9ecaeb79276144e96b1a7526932ff372b39676bf4e8 -dist/2025-12-09/clippy-beta-arm-unknown-linux-gnueabi.tar.gz=c4143ceb6c644d73c7bdf36dc12184ee0545e56c17762e310163f32d171142e3 -dist/2025-12-09/clippy-beta-arm-unknown-linux-gnueabi.tar.xz=ea1d55e762194001dd67ecb9f36b6e88023174d2afc11c270560133122127004 -dist/2025-12-09/clippy-beta-arm-unknown-linux-gnueabihf.tar.gz=84619076b88d498a9db44f9b1a4e18646412becf406a9c0e3ca53266e1cc63e0 -dist/2025-12-09/clippy-beta-arm-unknown-linux-gnueabihf.tar.xz=518f0d5578fa1a3be13da7c74a4388db0a1e30a212e07e005f54a964af9e3b6e -dist/2025-12-09/clippy-beta-armv7-unknown-linux-gnueabihf.tar.gz=71f1b0fa2d6353bd15a3e71e37705cfc05b32f1a995ceed6661860846156b6bb -dist/2025-12-09/clippy-beta-armv7-unknown-linux-gnueabihf.tar.xz=071d5f6a7726c049e8779ff0348a82e617faa2f0271d6a48785a829511f2ccd9 -dist/2025-12-09/clippy-beta-i686-pc-windows-gnu.tar.gz=1b0b74ad7374811536e8dee6276d95c00e93d5ff8582f47904311a801a4a457b -dist/2025-12-09/clippy-beta-i686-pc-windows-gnu.tar.xz=3909a6759b946bd26db078785ce2816d8e7ecc6b91f0a93da8e1215101315ec2 -dist/2025-12-09/clippy-beta-i686-pc-windows-msvc.tar.gz=20daed7b47df1a6edc52f4e513a9d8a3fd9adcbb57193584967908062e0b5f5a -dist/2025-12-09/clippy-beta-i686-pc-windows-msvc.tar.xz=726cc91501ad1618b960bfa8ef2fb48aedae7b6bce2e579ee97c2feaf731e63f -dist/2025-12-09/clippy-beta-i686-unknown-linux-gnu.tar.gz=76f33f847f9ca954ab4728d0ba59fc51eb45a19fb75162c37363a31d9cc81fbd -dist/2025-12-09/clippy-beta-i686-unknown-linux-gnu.tar.xz=fb2e996550d4c50d2e932b947b730c1be9a237de5b30bf88d51f02d4fb3aace4 -dist/2025-12-09/clippy-beta-loongarch64-unknown-linux-gnu.tar.gz=23bdfce50ecf66d373a029b97fb5ada2bf302b39245a7f2c2673b21d13889cec -dist/2025-12-09/clippy-beta-loongarch64-unknown-linux-gnu.tar.xz=e3d80cd58be9c50fd9316b1e19fac0b27246bf32264db5c765a04bfe11acdfe0 -dist/2025-12-09/clippy-beta-loongarch64-unknown-linux-musl.tar.gz=c531fe17d77ae42393b7fd556ce8508f9450f393dd612085977707bec106f402 -dist/2025-12-09/clippy-beta-loongarch64-unknown-linux-musl.tar.xz=805b2c4321e59d1d0d2f4dd6eb12920a472fa1422517bf506d41a09f887eb981 -dist/2025-12-09/clippy-beta-powerpc-unknown-linux-gnu.tar.gz=8b82b14f74241aba3f65b80d726c3c43ff5d3452ea0268905eaa8247efd2e75c -dist/2025-12-09/clippy-beta-powerpc-unknown-linux-gnu.tar.xz=5868780ae5c0cf07a613c3247b8339e6e5d0fb209ca279211061c20520a1916d -dist/2025-12-09/clippy-beta-powerpc64-unknown-linux-gnu.tar.gz=f40011b8c9868f0f20e55d0be4600c277e1391ab5fdc832c0ba3261299680d4c -dist/2025-12-09/clippy-beta-powerpc64-unknown-linux-gnu.tar.xz=09ad15c8d179d38424c64a697af9d256b3905fa27aa21fffe0dcf60e18821376 -dist/2025-12-09/clippy-beta-powerpc64le-unknown-linux-gnu.tar.gz=5dccee69021050129a301aed0e2a092768aba58c0922f8265fc42172e55ef930 -dist/2025-12-09/clippy-beta-powerpc64le-unknown-linux-gnu.tar.xz=3961d80cea94e31f8f571e962478fcc842a22163ed6e853b08b19063a56fb601 -dist/2025-12-09/clippy-beta-powerpc64le-unknown-linux-musl.tar.gz=d814ee9c7af0889b37ea08e4b2d059bc54d3bf3919b5d445d8a812ecd6bc122a -dist/2025-12-09/clippy-beta-powerpc64le-unknown-linux-musl.tar.xz=0ddea2966b675892b6f2f3161590af8adf4d9c278c4b50ac1d51bc82473a898a -dist/2025-12-09/clippy-beta-riscv64gc-unknown-linux-gnu.tar.gz=e31bbd06adf63ab0b0abb357f3362d4398f7e6550aed91d7f5578e3a03cd55a7 -dist/2025-12-09/clippy-beta-riscv64gc-unknown-linux-gnu.tar.xz=25affee87f7ec9b8b91368a64d9f5ce17f22a0c40f6bf1f6b51fadb43dec05b2 -dist/2025-12-09/clippy-beta-s390x-unknown-linux-gnu.tar.gz=001b23bb4d8e88f96d3fc1fbaab7e8b6a64de4d8d5767334ac3e9db9d79e56b5 -dist/2025-12-09/clippy-beta-s390x-unknown-linux-gnu.tar.xz=5f137aa245a5a168e71abef128e2181c4df0675666abad895d28df917ca9f0ff -dist/2025-12-09/clippy-beta-sparcv9-sun-solaris.tar.gz=1db02f7429b6594a0c5e33fdf273a827429ce928d37a48f06d1f9908be04bd8a -dist/2025-12-09/clippy-beta-sparcv9-sun-solaris.tar.xz=802755153ad5af276df68592784206cbf49f49a8b678ec6dd621e46699e391c8 -dist/2025-12-09/clippy-beta-x86_64-apple-darwin.tar.gz=3e5cf614a5dcc33b7a570f3b58d89bc930c84aacd05c8df00b40d1d813d13a9a -dist/2025-12-09/clippy-beta-x86_64-apple-darwin.tar.xz=aef870bd83eeb4b26ea3754a4ac3b11d81acfc74f9af97a006079445fb068069 -dist/2025-12-09/clippy-beta-x86_64-pc-solaris.tar.gz=6d1f58fcc6ebbfcec039a06375c09fdbad426e1bc4ed68881a63a19ea4edcc6d -dist/2025-12-09/clippy-beta-x86_64-pc-solaris.tar.xz=7309a240bca719dddc7d9c2e04906e765256407c397a759ee22ba6c6034beb28 -dist/2025-12-09/clippy-beta-x86_64-pc-windows-gnu.tar.gz=ebd0d50c7ad0f975be1862f8b025f1c577bf0b969fc50da679165041fdff5de2 -dist/2025-12-09/clippy-beta-x86_64-pc-windows-gnu.tar.xz=dd9fecb16743aa7584ac6c2e36e202194b51517cb86cd4a454a97dd63a83cf12 -dist/2025-12-09/clippy-beta-x86_64-pc-windows-gnullvm.tar.gz=50eec7195970f99f0ba0f493e3c12b0cb8dfa9fbe60fef436c64a318bad0a6f4 -dist/2025-12-09/clippy-beta-x86_64-pc-windows-gnullvm.tar.xz=e6090190aa83a26b4d71c66422e6332d873580fe807be6a3f2aa9dd56cf53e7d -dist/2025-12-09/clippy-beta-x86_64-pc-windows-msvc.tar.gz=e187f226606301670326e70f4f616d784d89fbe40be755f14a29e6df03e3fafd -dist/2025-12-09/clippy-beta-x86_64-pc-windows-msvc.tar.xz=0f69c54b1c112a276f5f538dcb007e34070e9a75681875d926d6f8f446692cae -dist/2025-12-09/clippy-beta-x86_64-unknown-freebsd.tar.gz=c107ed25ed5a09deb390b175e16a5102dafb21b12405cd227328f2e199a656e7 -dist/2025-12-09/clippy-beta-x86_64-unknown-freebsd.tar.xz=8d8927b64fec353a5cf987457f059995f16e1b36e96ca8b1f8be8e016f49962c -dist/2025-12-09/clippy-beta-x86_64-unknown-illumos.tar.gz=697d12dd34cb0176a839a1d08834fede0b39209f9b5ce102e40b3a41b4bab363 -dist/2025-12-09/clippy-beta-x86_64-unknown-illumos.tar.xz=c31578a3ebb692541cab846d81662ae554169d95018a4697c39fe1249c4e5154 -dist/2025-12-09/clippy-beta-x86_64-unknown-linux-gnu.tar.gz=58b7c72e976dabeb431b897eaa921557b3460c5dc6c12a5ad908f2fcdaf697b8 -dist/2025-12-09/clippy-beta-x86_64-unknown-linux-gnu.tar.xz=649b10e076d03f2428b3284391c67a2a1f7daf3b58185a797973121fc5b4c337 -dist/2025-12-09/clippy-beta-x86_64-unknown-linux-musl.tar.gz=c8f5c1c9990714c20ee85ff6d449caa0519e291b8068e6a5d27c6be1701c6a10 -dist/2025-12-09/clippy-beta-x86_64-unknown-linux-musl.tar.xz=2ff9d03902202060d6059f78872f9606c67357a839dc1d84d0dabc9b0dc79e61 -dist/2025-12-09/clippy-beta-x86_64-unknown-netbsd.tar.gz=95f9c12acabbeca6eb1fe6abee785909009b39d2119c45e8c54f0aa4aee09ab9 -dist/2025-12-09/clippy-beta-x86_64-unknown-netbsd.tar.xz=a8fc86de0d51cbe8ffc9622c539de5ec958948e8d510d113d4d86da0ff512a45 -dist/2025-12-09/rust-beta-aarch64-pc-windows-gnullvm.msi=0decc8436fecf2946138123ba94002507c4e9e0883db90aec5639dadd2fe0fa6 -dist/2025-12-09/rust-beta-aarch64-pc-windows-msvc.msi=d094d7636cc4ab90b00539cf2fd63339dea88e2cce4ed1e6079d925c5102bbb2 -dist/2025-12-09/rust-beta-i686-pc-windows-gnu.msi=546214c69cdb5ebcc1b30a0919e13ce15ee5bab0a6a3f5b2ba09506a7f1ccba8 -dist/2025-12-09/rust-beta-i686-pc-windows-msvc.msi=9f93d409def886c556de52c35dae811e6d5d59cb88c4447bef80f126b08af64b -dist/2025-12-09/rust-beta-x86_64-pc-windows-gnu.msi=a348502a2cbd16752b792f69c24e49cdc1b241aabfb629e25d4136d34e1d7403 -dist/2025-12-09/rust-beta-x86_64-pc-windows-gnullvm.msi=04b4c3d704d742b840bd1bc60aae178a87b6d04eeb970dbe5d84dcbe503cdd8c -dist/2025-12-09/rust-beta-x86_64-pc-windows-msvc.msi=660b04aeef50fac72ab4e53a524af5632ba5d43bcd37fe95c1a2a6e7704e8789 -dist/2025-12-09/rust-beta-aarch64-apple-darwin.pkg=fc4889fa5dabb9e2a54535e33bb82aa658dadf2b53061b0cd5a47ad58e42cdf3 -dist/2025-12-09/rust-beta-x86_64-apple-darwin.pkg=5224a904cef4284950d8c193c89e4f826ed5a5fb77a9b05fba3fcf6b8a107dfb -dist/2025-12-09/rustc-beta-src.tar.gz=2ba3a82da54f472c3eb8253c0eee35f9d121f8027d34869455e9b10635a7b648 -dist/2025-12-09/rustc-beta-src.tar.xz=af3e7fe0843ecfff1168dba08615b7e500a8f9aa82926c422d01754156ca38f6 -dist/2025-12-10/rustfmt-nightly-aarch64-apple-darwin.tar.gz=24ec825bd10f04ebef571174b08cd6f4041cba5da0255811b1eba58771f8ee84 -dist/2025-12-10/rustfmt-nightly-aarch64-apple-darwin.tar.xz=4a80862cc5f685c325650b364361cb7d4b80faab1688988fc6d3e585cb37b133 -dist/2025-12-10/rustfmt-nightly-aarch64-pc-windows-gnullvm.tar.gz=2322573bee75a407302fd18cea373975dad8d3bc77ae52fb4a65ab89a85ad8d1 -dist/2025-12-10/rustfmt-nightly-aarch64-pc-windows-gnullvm.tar.xz=cefab5e313a8e184a243ecb7429acf2c9338396279467e4eb74b42dd0d74d588 -dist/2025-12-10/rustfmt-nightly-aarch64-pc-windows-msvc.tar.gz=9c61e4763b7d5a378684cbf323522b18721be552f19b61303b0fcc257aad94fd -dist/2025-12-10/rustfmt-nightly-aarch64-pc-windows-msvc.tar.xz=960c96b8b5d5b1ae2b01103c59bd761b7ead18470795fac7d9de5b8ed635abd3 -dist/2025-12-10/rustfmt-nightly-aarch64-unknown-linux-gnu.tar.gz=c7ab92e0faba8c29ac42aec6be553f2a98b6eb552a2327e7eea27fa90d324287 -dist/2025-12-10/rustfmt-nightly-aarch64-unknown-linux-gnu.tar.xz=8245467e46eaf068f560c63e43e14de233be6481fa47a663dfc03e0343a21a24 -dist/2025-12-10/rustfmt-nightly-aarch64-unknown-linux-musl.tar.gz=4f73b7d59a7f43f9732bb37779224d289dd9bfedd98963387e968283dd09959c -dist/2025-12-10/rustfmt-nightly-aarch64-unknown-linux-musl.tar.xz=4deeab8e28f00f7dfb11fc9fcffef9bfc866ec7a67e6da4cf0c2a68ced8eea7b -dist/2025-12-10/rustfmt-nightly-aarch64-unknown-linux-ohos.tar.gz=d7cfae90e1d3ee3c7e30a39e2cc789b045498e282eab5831a538910ae4c878fe -dist/2025-12-10/rustfmt-nightly-aarch64-unknown-linux-ohos.tar.xz=674460a55e04a6d1e505957bc1bbc560351f4143bcacdd93f86e301c0a7415b6 -dist/2025-12-10/rustfmt-nightly-arm-unknown-linux-gnueabi.tar.gz=c745ef65f257d48dbaabb5aefa2ac0b2a51a3f2185f542f0e6017fd5378c1bc6 -dist/2025-12-10/rustfmt-nightly-arm-unknown-linux-gnueabi.tar.xz=0765fe91b4ff940575c819259c2b2e328c81a7ff02a1a283ec2e6844bd026e85 -dist/2025-12-10/rustfmt-nightly-arm-unknown-linux-gnueabihf.tar.gz=7b01938f5c56be23e682b7cbdbefe0da87e41a136029f09a38362aac4df05bc2 -dist/2025-12-10/rustfmt-nightly-arm-unknown-linux-gnueabihf.tar.xz=f90fa659f11e39ce6145689cd3284fec95d7e4219e4e8c5b14876357b3892e4c -dist/2025-12-10/rustfmt-nightly-armv7-unknown-linux-gnueabihf.tar.gz=c168b4f52d9e4f17234a824e49e257577f3a2f2643cf5cfac8e28395d3c6a7c8 -dist/2025-12-10/rustfmt-nightly-armv7-unknown-linux-gnueabihf.tar.xz=0a9cd71999664d67f83bb9c3f87415656329086f0e3503953992b1cbe34d9a5e -dist/2025-12-10/rustfmt-nightly-i686-pc-windows-gnu.tar.gz=207f1343fd0a348344b9866e99b80ff7112a9b48a2ff63168e133913fe161425 -dist/2025-12-10/rustfmt-nightly-i686-pc-windows-gnu.tar.xz=83147ebb6c01438b55d2973759821178a6e109eb91146d96386c504070248769 -dist/2025-12-10/rustfmt-nightly-i686-pc-windows-msvc.tar.gz=a59c45a3ab6601db73a1628266ff6dec37cc04bb964096116df21595aa53d358 -dist/2025-12-10/rustfmt-nightly-i686-pc-windows-msvc.tar.xz=b1da98ed515858fe2659e42a31c9b9cd4adb60c3080ec154f3829859855c324e -dist/2025-12-10/rustfmt-nightly-i686-unknown-linux-gnu.tar.gz=59fd2ab17d3215a6bd6e34ec2e61146a48cb273754003d561df7ac2a7a3d131e -dist/2025-12-10/rustfmt-nightly-i686-unknown-linux-gnu.tar.xz=1b3aae40df398d2456ac82fd9ff86e83870b9ce46247a164eba82365c5624569 -dist/2025-12-10/rustfmt-nightly-loongarch64-unknown-linux-gnu.tar.gz=f9f43f82d73e136a2f40dcdc41bd3c7e106a94a0a4e5edac661ba7a72a883a09 -dist/2025-12-10/rustfmt-nightly-loongarch64-unknown-linux-gnu.tar.xz=bd4912cd32a56cffcf4b019a08b4b751d4a5006c754fa349cc5f38c396fc2e88 -dist/2025-12-10/rustfmt-nightly-loongarch64-unknown-linux-musl.tar.gz=cc65c029ab8d0a5efbadf00b40b5bc8e4e737ce0eaa3f2bd24ff145725384038 -dist/2025-12-10/rustfmt-nightly-loongarch64-unknown-linux-musl.tar.xz=0bc6580c37977c55c259e0da12732f0a3ff072fe629615ec3602c510129db20f -dist/2025-12-10/rustfmt-nightly-powerpc-unknown-linux-gnu.tar.gz=9837287d443e9519759e541f7d60128f535eb0990ca49cf107a6d7f8e13fb33c -dist/2025-12-10/rustfmt-nightly-powerpc-unknown-linux-gnu.tar.xz=55b0b24b2e33b6ed5eb8eaab1e6ef9b0cb7c64280d8f4a46fb8c644291bc72cb -dist/2025-12-10/rustfmt-nightly-powerpc64-unknown-linux-gnu.tar.gz=29510416f023edabd18ebb9a5f6fd96e55a07dc968a33922b68749d17a51df71 -dist/2025-12-10/rustfmt-nightly-powerpc64-unknown-linux-gnu.tar.xz=aa9a16c99748912c2d9aa17ea1fd3d34afa87f352b922ebf5939e41ec4b2bc7f -dist/2025-12-10/rustfmt-nightly-powerpc64le-unknown-linux-gnu.tar.gz=9a0642853b345aa058dd7ed7bb3777fcb1bb6d8d15893bedf40595c7513beb67 -dist/2025-12-10/rustfmt-nightly-powerpc64le-unknown-linux-gnu.tar.xz=5b4f5226d11cc8811d92a7ddd601fc6e0a7f1cafb973def40efa5c5a3b29fff1 -dist/2025-12-10/rustfmt-nightly-powerpc64le-unknown-linux-musl.tar.gz=e6ed9a58e3d8b3e215d9e24cd47c363b5659cf32e9cb4c104a35cfaeeee1a6c0 -dist/2025-12-10/rustfmt-nightly-powerpc64le-unknown-linux-musl.tar.xz=760ab76dfa17332f1c3b3330fec0774ae5a07599aaad838c946df4f588993f71 -dist/2025-12-10/rustfmt-nightly-riscv64gc-unknown-linux-gnu.tar.gz=8f0bc4bd2bc633afff10982328f5a2b6d0a37faadadc7cbbf761a106a3a9ba71 -dist/2025-12-10/rustfmt-nightly-riscv64gc-unknown-linux-gnu.tar.xz=9e0e069e0c57c2c07768b3fa4a9c38cc6f914a23b84e8efe6fabb250d6e99e34 -dist/2025-12-10/rustfmt-nightly-s390x-unknown-linux-gnu.tar.gz=4a23ff6f2d3f2df2afa21ceaccf118c1711e4553090cac6caf116b567080f396 -dist/2025-12-10/rustfmt-nightly-s390x-unknown-linux-gnu.tar.xz=98c672887a5d8ef1a9d356e5a53acb21ff9771b122f67e6fde8c1c362dfdfd21 -dist/2025-12-10/rustfmt-nightly-sparcv9-sun-solaris.tar.gz=92dd3c460488e73cfa5a4162b910a9db64b3fb3952c32039fa1bb24dabbebec5 -dist/2025-12-10/rustfmt-nightly-sparcv9-sun-solaris.tar.xz=231d454a308af3a1deafca579bbf82fd630bd42df903e47c3e48f84be588bf3c -dist/2025-12-10/rustfmt-nightly-x86_64-apple-darwin.tar.gz=e57059b13d749c0b671fd5bc4bf03b1162afe5d258304f80bd67b75a7dba7361 -dist/2025-12-10/rustfmt-nightly-x86_64-apple-darwin.tar.xz=f837b268e872681f2cfad6c485a0e28647ac826ebe9d0ce2d01520f294ad0037 -dist/2025-12-10/rustfmt-nightly-x86_64-pc-solaris.tar.gz=d5890236f6963d2a9a16a4edb3e6515216ea9f96f2996da298ed9756c75bbed8 -dist/2025-12-10/rustfmt-nightly-x86_64-pc-solaris.tar.xz=789e877ca7a2fba536a62bc27d1034399a75c5df0c0fb677ee6aad8dfc8c0e1e -dist/2025-12-10/rustfmt-nightly-x86_64-pc-windows-gnu.tar.gz=eefadcc6be10ba4b41c21c60cd1fdb818389b17bfe09b97d41be64fba9643f35 -dist/2025-12-10/rustfmt-nightly-x86_64-pc-windows-gnu.tar.xz=d9904734a9ba86930c4680f167c4c6d3b3c5c49d6274a47c1e25f3557a19e672 -dist/2025-12-10/rustfmt-nightly-x86_64-pc-windows-gnullvm.tar.gz=b9d556aa1f760b6acfa6257a77fc489b4efaff3627a80ea25b1cb759786b9182 -dist/2025-12-10/rustfmt-nightly-x86_64-pc-windows-gnullvm.tar.xz=3230a9ab8bfea6e9d90a444aedb546040fc743b6ae9f3e7830ecad35eb343896 -dist/2025-12-10/rustfmt-nightly-x86_64-pc-windows-msvc.tar.gz=9cdb560c8941551b371f898f8d385a4952794aad27d27786d263b3ff02069cd7 -dist/2025-12-10/rustfmt-nightly-x86_64-pc-windows-msvc.tar.xz=ec4b17c6c8aedc5bec3afdcda9a5f85b932e94c8711d03f06171c36ea9349b1c -dist/2025-12-10/rustfmt-nightly-x86_64-unknown-freebsd.tar.gz=bf5a2486465ee6848b2a145c6a16bb5116b893e8d22d3897c78c2930617e8e65 -dist/2025-12-10/rustfmt-nightly-x86_64-unknown-freebsd.tar.xz=c71effbcbb3e1b2b90384799b1079658118e24a60408c482d75aaedc3628a6ef -dist/2025-12-10/rustfmt-nightly-x86_64-unknown-illumos.tar.gz=867a4ba29283c658f6a3db55e0edace19cd0102f17409338c75827d3dbceeed8 -dist/2025-12-10/rustfmt-nightly-x86_64-unknown-illumos.tar.xz=ea07fe1ecc5480b246387a228a8ea342616385bf9ec25e40d3de9806e06e1e07 -dist/2025-12-10/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.gz=8457f82703b5dd5cf1c8ec74011b666239268f1151b0800209a5312274b99151 -dist/2025-12-10/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.xz=31f203fc0623c23d41cd64ec4928f0a8d330aeba0f28d0f451683e94da873f28 -dist/2025-12-10/rustfmt-nightly-x86_64-unknown-linux-musl.tar.gz=5d752c9879b464b385c14c38ce2b6dad2542d3e4932337ce76d5fcf77b2d3d39 -dist/2025-12-10/rustfmt-nightly-x86_64-unknown-linux-musl.tar.xz=797ed8b8c2f2f5764ab2965b7701d73dac4f3ea01a431b1b337dece0e718c940 -dist/2025-12-10/rustfmt-nightly-x86_64-unknown-netbsd.tar.gz=a4eed85109f7d76a11e9bcfcb27550636c47c09a10e12f92d76778f6989ffff9 -dist/2025-12-10/rustfmt-nightly-x86_64-unknown-netbsd.tar.xz=fdb91ee8d9edc3824426268654efa77a7366ee436b5969366b7f924e1efc8082 -dist/2025-12-10/rustc-nightly-aarch64-apple-darwin.tar.gz=1debf4ac8bcc013d4a4a6f000a308bf69b1b99609e841f4eb5f63fb22edb68c4 -dist/2025-12-10/rustc-nightly-aarch64-apple-darwin.tar.xz=460eb2dc63c9b2da77a9e12eeaacf3302fa0b2276cf6fab1b1875465fed221cf -dist/2025-12-10/rustc-nightly-aarch64-pc-windows-gnullvm.tar.gz=b9dfa64737763a506ba08a1485c7ba1cf985c1b3e68c282b0515cc646bcd7852 -dist/2025-12-10/rustc-nightly-aarch64-pc-windows-gnullvm.tar.xz=f7aaf99ffb316c72fe1121344ae55f65e94448f6ae324ec00f6f73960360bcef -dist/2025-12-10/rustc-nightly-aarch64-pc-windows-msvc.tar.gz=832410daf93d83d489586bd9823b06c53cfd284072274b43e6db4514dc2c5c2c -dist/2025-12-10/rustc-nightly-aarch64-pc-windows-msvc.tar.xz=4e1a2e537f0daf6c000bfaedba3a306d3e9017574dba0ff53c08ad208f5a3326 -dist/2025-12-10/rustc-nightly-aarch64-unknown-linux-gnu.tar.gz=f520d2e5ea92519c99ad80fd61af4621c5f6a3ecd1dcd6bcf797aff679ccc403 -dist/2025-12-10/rustc-nightly-aarch64-unknown-linux-gnu.tar.xz=73120c237a0a19f6b5ca52fe02ea1c2300d5204861a6f7f5a5d059925a780a9e -dist/2025-12-10/rustc-nightly-aarch64-unknown-linux-musl.tar.gz=5121387c446ff2e3f766ed1f117526d21768e84dc07512cc738ef19870bddfed -dist/2025-12-10/rustc-nightly-aarch64-unknown-linux-musl.tar.xz=3deae487826308f70a7855adf612c4c87121ca2df8f890b744e738f667696883 -dist/2025-12-10/rustc-nightly-aarch64-unknown-linux-ohos.tar.gz=ed6c93be35e43f787ab6838c468d984b6f3ccaf561a48bf6b4928e4d5bb17b75 -dist/2025-12-10/rustc-nightly-aarch64-unknown-linux-ohos.tar.xz=76b40a2678643983781508a6fda99de7a3dd7b6269b410bf5f3638fd2db596e4 -dist/2025-12-10/rustc-nightly-arm-unknown-linux-gnueabi.tar.gz=a0e75393de8ace2e7c40ed54a127e5dc25242914a31313f2520fc634f3e400e8 -dist/2025-12-10/rustc-nightly-arm-unknown-linux-gnueabi.tar.xz=03ed745c4940c088893ceb36f563f43ecab1c6f17d3983e28ceb4e89d8234331 -dist/2025-12-10/rustc-nightly-arm-unknown-linux-gnueabihf.tar.gz=4d473526c3e46f04550f2623542568fad0c397dfdb6194e2528cc21975bcb64e -dist/2025-12-10/rustc-nightly-arm-unknown-linux-gnueabihf.tar.xz=6dc10f3407d80a7ecb9594620ca070291e192275434daa6e49888484f0c1b9c7 -dist/2025-12-10/rustc-nightly-armv7-unknown-linux-gnueabihf.tar.gz=3929d09ab864e5669b38f5b5a308fe637b22e88ad25e339bdd3e2df15e77a18a -dist/2025-12-10/rustc-nightly-armv7-unknown-linux-gnueabihf.tar.xz=2d674373dfbb2ac0caeab3e5fe053073f8313aa3d3c5937b982abcc5d467af22 -dist/2025-12-10/rustc-nightly-i686-pc-windows-gnu.tar.gz=e7abc330e9f8554f29fce9c984ab624498c55b4f66aea12836564e097569a753 -dist/2025-12-10/rustc-nightly-i686-pc-windows-gnu.tar.xz=887d766a9996d9b956e5d61bcb3166a5f5923ca37d114814e3a85db83bff30d7 -dist/2025-12-10/rustc-nightly-i686-pc-windows-msvc.tar.gz=00854c8dfcd94264a88483241cfe79e9357f97ad5fd9ca1a59f49a54806e1b1f -dist/2025-12-10/rustc-nightly-i686-pc-windows-msvc.tar.xz=cbcf96dbb3250cd9d54e66858fa2af4c2506fe81ec2239b2ebbbeba1ef1b4911 -dist/2025-12-10/rustc-nightly-i686-unknown-linux-gnu.tar.gz=42f92a1d712bfca3b365b8627d5a5266e0b35f8a6af67cd77ad7a78bd6dcc4db -dist/2025-12-10/rustc-nightly-i686-unknown-linux-gnu.tar.xz=a762070fe4c322916daccacca0e14793bd91339f5803d981fd83e8f2511d9eaf -dist/2025-12-10/rustc-nightly-loongarch64-unknown-linux-gnu.tar.gz=a621f4811d670ae885d63dbce5ced336cb26662527e5ad16a020bd31e0ffc4df -dist/2025-12-10/rustc-nightly-loongarch64-unknown-linux-gnu.tar.xz=b20f98c90930205966d88771dbf3ffed04f701be0d7dbe074791f63ae9d563ab -dist/2025-12-10/rustc-nightly-loongarch64-unknown-linux-musl.tar.gz=a8be28df240832939d2988af21a15b06dcd550ef6de9a468e8d1241f96a9d548 -dist/2025-12-10/rustc-nightly-loongarch64-unknown-linux-musl.tar.xz=b4d883ddd22480c6adf1a9f448124532b50f8bc3d1da54e17ce30e1e07bdeac7 -dist/2025-12-10/rustc-nightly-powerpc-unknown-linux-gnu.tar.gz=f15a8266370bbf23e5c33afd1dbde578eed56ef1d8b0dfd0f4a689cc90a55890 -dist/2025-12-10/rustc-nightly-powerpc-unknown-linux-gnu.tar.xz=c4f63b2adebf61896681df4d8e4015bc510dfe83a7d99ffd0df996ceb56333d4 -dist/2025-12-10/rustc-nightly-powerpc64-unknown-linux-gnu.tar.gz=864210b8ed936a21532ba16ed2c12538ab802bb1f678f4175738957949090515 -dist/2025-12-10/rustc-nightly-powerpc64-unknown-linux-gnu.tar.xz=4dfa49bbc7e9bdc4edb33e8b21a4fde9dac6f178845bc0f86baec1cf0cccc661 -dist/2025-12-10/rustc-nightly-powerpc64le-unknown-linux-gnu.tar.gz=4234e6dfc10b54510d4caa7266ddd2776cb6ac4a463f5fc0e105b56f90fe25a0 -dist/2025-12-10/rustc-nightly-powerpc64le-unknown-linux-gnu.tar.xz=707e947a1a6afb285918f5116a7a821fcbfb5448e9dde4f93aecfd49d0ec206a -dist/2025-12-10/rustc-nightly-powerpc64le-unknown-linux-musl.tar.gz=9f2968856d329a2a87f3d6e035b75d78036941f30c7e5b9b99a8f2e18329d135 -dist/2025-12-10/rustc-nightly-powerpc64le-unknown-linux-musl.tar.xz=138635257545931c183a5c6c41345391190c3bc5b64caf3192f05053f1243f87 -dist/2025-12-10/rustc-nightly-riscv64gc-unknown-linux-gnu.tar.gz=31edf819c4374e2d56a9a3fb125e2879e78067695c05bb165f0246846968fc09 -dist/2025-12-10/rustc-nightly-riscv64gc-unknown-linux-gnu.tar.xz=84c92f5bc6ebd0904db0e91a17163e4aadf93478b09681d7f659b2733e7ec7dd -dist/2025-12-10/rustc-nightly-s390x-unknown-linux-gnu.tar.gz=dd5bb23c59ef383fa51bc59e4dd869d8c195a02512306fa0010c00b0f13c0ad1 -dist/2025-12-10/rustc-nightly-s390x-unknown-linux-gnu.tar.xz=48d041d57df47c4d99fc0ebc0a10b7cb374f664303ea8b4ffca4c08aab20289e -dist/2025-12-10/rustc-nightly-sparcv9-sun-solaris.tar.gz=006f8d00e4bf719a84f3f8244bf7587f6b7fa141d0659941fb1c0bef7e1c0f5c -dist/2025-12-10/rustc-nightly-sparcv9-sun-solaris.tar.xz=dc9b5086fb6f00164fd676baacccfe030af279e75c339162cb666ebba0f76692 -dist/2025-12-10/rustc-nightly-x86_64-apple-darwin.tar.gz=71604d26e35b1d8d47edfa5744e1f56d99ae780ff39780f2e6f91dcd744881e7 -dist/2025-12-10/rustc-nightly-x86_64-apple-darwin.tar.xz=67d9b818da84cae669f13e24e3be2e16036286f4ad3ba82965dbfc6a9cc0bd21 -dist/2025-12-10/rustc-nightly-x86_64-pc-solaris.tar.gz=5b7eb8e65fc1c3f173e640487dce7778167710dfa403bb877905bdfda1f3e6c9 -dist/2025-12-10/rustc-nightly-x86_64-pc-solaris.tar.xz=fdf2bd54e7278c1f601a894fd8e10a22bfef06aac7bd062e08ed08fdffc9d1a4 -dist/2025-12-10/rustc-nightly-x86_64-pc-windows-gnu.tar.gz=4165469f2326441c64874ddddaec7897386e8f7808dbe48762f4e394319c33dd -dist/2025-12-10/rustc-nightly-x86_64-pc-windows-gnu.tar.xz=d60b8e47a871874a1e21b3b3e79255d818596364295b4fc7ab31ebd45576f66a -dist/2025-12-10/rustc-nightly-x86_64-pc-windows-gnullvm.tar.gz=2f6de03a3af0fb2c66eb7a2a01a425435dd3f6025aa9d83073798f37a0311c77 -dist/2025-12-10/rustc-nightly-x86_64-pc-windows-gnullvm.tar.xz=0a4b940cfadddf0c1dd3c6ac44e1db9a48e71578803a1690d92ff35bf062eac0 -dist/2025-12-10/rustc-nightly-x86_64-pc-windows-msvc.tar.gz=08b6ea3a88f0ed773edb97f02995a05afa142f08054a4c076dcfe07d6d95d406 -dist/2025-12-10/rustc-nightly-x86_64-pc-windows-msvc.tar.xz=ed07457a628abfb45c5e1e290cd3df284d7aad4caa2fa72e1042b9c0fd0e8375 -dist/2025-12-10/rustc-nightly-x86_64-unknown-freebsd.tar.gz=2dd8158c9a0f5715c20bc325100f89a8bf73703d426ae7222d86ffc4fc4b1f4f -dist/2025-12-10/rustc-nightly-x86_64-unknown-freebsd.tar.xz=35eca84b519cad4bcbd46cc40bde94ac22bf7e62af32bc802a8a3f05c82ab35d -dist/2025-12-10/rustc-nightly-x86_64-unknown-illumos.tar.gz=f41e19ee9031fd636b8b6ccac51949b0f52a884e866f75a04645f57a24f13216 -dist/2025-12-10/rustc-nightly-x86_64-unknown-illumos.tar.xz=63a3c093db358866ec31c38a872f6024a02a611c5729127d5bff91b394f2b5ab -dist/2025-12-10/rustc-nightly-x86_64-unknown-linux-gnu.tar.gz=056872dae473bc6e843a5272698ab2de04a8d08aa1a510753f4dd46058601b1d -dist/2025-12-10/rustc-nightly-x86_64-unknown-linux-gnu.tar.xz=5342e6efe17f2ffbd2625f758e7389f201c15eff59288c3a929743ae9eb33d95 -dist/2025-12-10/rustc-nightly-x86_64-unknown-linux-musl.tar.gz=9076cb3c1aeacd2e11bb6a2790b6b83234aae46cc956ae615eac171471f2c94f -dist/2025-12-10/rustc-nightly-x86_64-unknown-linux-musl.tar.xz=23ac96d176e79490597c80205c51b51682e7bb0f24e1020367958ec737614722 -dist/2025-12-10/rustc-nightly-x86_64-unknown-netbsd.tar.gz=03c1c5fe68c45392a93774a228ff18abcc1b29fc1e83c3a901604594ef2e78fd -dist/2025-12-10/rustc-nightly-x86_64-unknown-netbsd.tar.xz=274cbef82373e1687534e81c53d2dc909ad8200c21062363bd2c892b528209d8 -dist/2025-12-10/rust-nightly-aarch64-pc-windows-gnullvm.msi=0ad2a86241f5a786e7afeacbed7225f904748c62b0c2a91cc72123392834a234 -dist/2025-12-10/rust-nightly-aarch64-pc-windows-msvc.msi=21b3530f3615448adfe61ce4e28c47fbf0b2f15e674d73b5a11e966476a9473e -dist/2025-12-10/rust-nightly-i686-pc-windows-gnu.msi=93d58d311e7bb3a75903e8539dd34bc65b85b951bf9eff5594f539f79bc65c72 -dist/2025-12-10/rust-nightly-i686-pc-windows-msvc.msi=22ba8e3dfd93267d0c4660cf889951208c17ef0050538206a5fe7f799e24a2fd -dist/2025-12-10/rust-nightly-x86_64-pc-windows-gnu.msi=d8e6963725b2b8fb1c92cec90830a1cd73968450b676ddcd4ccd90b9006281a7 -dist/2025-12-10/rust-nightly-x86_64-pc-windows-gnullvm.msi=d4c1af5399e97ec877d06ad0ef978ba08fb9994b2588b3195316a36c58915151 -dist/2025-12-10/rust-nightly-x86_64-pc-windows-msvc.msi=c738f27b64f63b8702646effaddb4af8398bd2d2ef810ef6b2ac1cee4997c692 -dist/2025-12-10/rust-nightly-aarch64-apple-darwin.pkg=6d35933519ae62d24b8c772aa43483d9e40138f7bb5894fe42fbe6e48299efe8 -dist/2025-12-10/rust-nightly-x86_64-apple-darwin.pkg=388c57b33f3fb46bbf1f194e5bd899316eddf6a067103792e0df64861bbb193e -dist/2025-12-10/rustc-nightly-src.tar.gz=1cb5229e21c945bf992fc9e0eb8c5cbf3516fd7d4caea9969e8515971c45483a -dist/2025-12-10/rustc-nightly-src.tar.xz=96ce631d5b33858d220d686bb2c1388e3f055680366f94833ba4c2a026cfc796 +dist/2026-01-20/rustc-beta-aarch64-apple-darwin.tar.gz=5cc0e51c8a3130f63cd6d13f5c0cab6723ae9fbab0e0a6b95ba11be873eb1b3a +dist/2026-01-20/rustc-beta-aarch64-apple-darwin.tar.xz=c7c7fb474f9b1d2b5a7cff6d4c1503fc3e51624dec02b91c44b437a2fbc1c8fe +dist/2026-01-20/rustc-beta-aarch64-pc-windows-gnullvm.tar.gz=998f017140a97b52cc028410ebaa69dd9d3c40e66e666681cfbae2b567985bb0 +dist/2026-01-20/rustc-beta-aarch64-pc-windows-gnullvm.tar.xz=a73ea4d00dd8465721f3257420494ba24ffc620450949b768f375cb7420eb72d +dist/2026-01-20/rustc-beta-aarch64-pc-windows-msvc.tar.gz=8a9354bb17d8f8bce4a2313f24216b6c52d01f9b54d178b3f4fe51942ef23bff +dist/2026-01-20/rustc-beta-aarch64-pc-windows-msvc.tar.xz=de2e668147224840fa33f4dbf7d4bf97bdee18c29805dcc285e1ed6699f68235 +dist/2026-01-20/rustc-beta-aarch64-unknown-linux-gnu.tar.gz=012e6afd73999fab248497b052c0b7a20c7570bc1a9082806bee1c9171c671a3 +dist/2026-01-20/rustc-beta-aarch64-unknown-linux-gnu.tar.xz=662fdd1472e45b2ca15f1c3fbe6439d9d58f0b7edbfbc54f87a78644c273e52d +dist/2026-01-20/rustc-beta-aarch64-unknown-linux-musl.tar.gz=bba6f41e853989d3b7728d3f1169afa7137196cbc4696aeb43974b5b545b9e18 +dist/2026-01-20/rustc-beta-aarch64-unknown-linux-musl.tar.xz=70717b6bca2409266fdd670d2dcad076f000e6a0da0d6696b27e81c2ae0c132b +dist/2026-01-20/rustc-beta-aarch64-unknown-linux-ohos.tar.gz=54829f68a0fc79b84e80a0d47bc322954f09a59c0a06493bc56bb3ed1552b27e +dist/2026-01-20/rustc-beta-aarch64-unknown-linux-ohos.tar.xz=eb62be9276e425186c3adb0ce918a8d6de03f6f5b7f4e8fa6988369cd965450a +dist/2026-01-20/rustc-beta-arm-unknown-linux-gnueabi.tar.gz=103e62ea960d1d89524c8383bd2dc9ef236eb8334e3813d861092305cf22ed78 +dist/2026-01-20/rustc-beta-arm-unknown-linux-gnueabi.tar.xz=b78e4ce929bba3bd6222a0ff21dc98dbe91f37ab59c5b00b997c67307f7dbcab +dist/2026-01-20/rustc-beta-arm-unknown-linux-gnueabihf.tar.gz=76b0e61c0e412744651e847ca7388832b06173a9d78b92f6311fd3bbb9c56a13 +dist/2026-01-20/rustc-beta-arm-unknown-linux-gnueabihf.tar.xz=0fa5e9c25a4e5c404e6e2cb8c71212c80259d9cddf6462138a540fa83ecb15a6 +dist/2026-01-20/rustc-beta-armv7-unknown-linux-gnueabihf.tar.gz=e86e88bdff894de048566f5e50f9fbedb7465a9cd3ca8e5f60e1a2be36c1bb8f +dist/2026-01-20/rustc-beta-armv7-unknown-linux-gnueabihf.tar.xz=2415d59e1b95ac67cd7dd7d4df0eb24e1c4086134127b0664856fa10f8b45b39 +dist/2026-01-20/rustc-beta-i686-pc-windows-gnu.tar.gz=3ea0d68636eb5d46bbcc14fcd89201f6b1d3e3dc2b5b6aae62eab881e6a51888 +dist/2026-01-20/rustc-beta-i686-pc-windows-gnu.tar.xz=110b6c903c2e835dee00e699bcdded24152421e77ef595f1de59135a4562a88f +dist/2026-01-20/rustc-beta-i686-pc-windows-msvc.tar.gz=1a92b391333148cc6e4edfb405712fc91e7985d9eecfddadf57c1b028a9fd3f5 +dist/2026-01-20/rustc-beta-i686-pc-windows-msvc.tar.xz=92cac54e86536bdd2955e7612884c58a6112f701e923552259c5b18317f6fbcd +dist/2026-01-20/rustc-beta-i686-unknown-linux-gnu.tar.gz=da3501275f4583d4e0edca756eaaffe8844276a3479a47348fa41e6ec9f2bddf +dist/2026-01-20/rustc-beta-i686-unknown-linux-gnu.tar.xz=1373a0d9a5c1d9fa8c6e0001423187084e43f1670583a134497b0d9cb9172737 +dist/2026-01-20/rustc-beta-loongarch64-unknown-linux-gnu.tar.gz=215901dbf0a4281ec49ed87ab9a615e0576a19b29fa7678d6cd82e73a34af665 +dist/2026-01-20/rustc-beta-loongarch64-unknown-linux-gnu.tar.xz=df87f0d1b6db8fb4092ee2cd854fc60cbf61cfa648059f376bb438a51eb4400d +dist/2026-01-20/rustc-beta-loongarch64-unknown-linux-musl.tar.gz=c1ee374b6daca40863eb3c4a6b5158d745d08f98a5fab103ca348efb7e23c93a +dist/2026-01-20/rustc-beta-loongarch64-unknown-linux-musl.tar.xz=7ad8372e9b1f333050c57b9e645c19c45766babaef7ff654c1944415001c1eca +dist/2026-01-20/rustc-beta-powerpc-unknown-linux-gnu.tar.gz=85803d3595fe9d52de6e10e415a8509e9c006dee044640b20ca1cb85adc42122 +dist/2026-01-20/rustc-beta-powerpc-unknown-linux-gnu.tar.xz=4981ce9ab5bb0a8b8d8b6d41836b533193195e415669bf054e8cd30db4a7480b +dist/2026-01-20/rustc-beta-powerpc64-unknown-linux-gnu.tar.gz=4ccb74c4e2d2768f0774ed05feaa22d0dcb2613f6e5dfe8e4d10059c195fbd4f +dist/2026-01-20/rustc-beta-powerpc64-unknown-linux-gnu.tar.xz=c807173335735810b0fc53d368eb142c93014509e1bb834f23260fccc9b6caa4 +dist/2026-01-20/rustc-beta-powerpc64le-unknown-linux-gnu.tar.gz=679d2047f602d36782709a34db884efb252887502035131bd6426c1035a10e99 +dist/2026-01-20/rustc-beta-powerpc64le-unknown-linux-gnu.tar.xz=41c41dbfaf76abddf39633ac1c4fa3b228428ea4dcbd85c07961c6d4350b93fd +dist/2026-01-20/rustc-beta-powerpc64le-unknown-linux-musl.tar.gz=0b05419ba70cea7cb2f3171bceefa35844721c26e34ce36bd2a37ab437d0813e +dist/2026-01-20/rustc-beta-powerpc64le-unknown-linux-musl.tar.xz=77a7e18d4841114c555d6624beffa355ea1685ab74ea0974014252cd2ced8adb +dist/2026-01-20/rustc-beta-riscv64gc-unknown-linux-gnu.tar.gz=af4a951fd83e6e22f902b8dde0ed7cdd3342f6d91dcf844488be3fb88e0edadf +dist/2026-01-20/rustc-beta-riscv64gc-unknown-linux-gnu.tar.xz=30f471ac01b7ac6e6052c0b11fd1fa33dba0af2abdfc8eaf11fa5a48627d5c07 +dist/2026-01-20/rustc-beta-s390x-unknown-linux-gnu.tar.gz=788dd17f29c7594bb425ec9f2686453eeaeedf45c11388b714b1b6f0b35fb018 +dist/2026-01-20/rustc-beta-s390x-unknown-linux-gnu.tar.xz=2117b3e3ad7f252e0790500add59204038b9e4709710df7757ffe2dbc0d264bf +dist/2026-01-20/rustc-beta-sparcv9-sun-solaris.tar.gz=4ef69aa3d5ec31ce15ee7c38667aac9b1c101b948ee3095da23bde2fee75d3a4 +dist/2026-01-20/rustc-beta-sparcv9-sun-solaris.tar.xz=815f1800251b3bb79a681dfdcfc192971465c260ed7c6a57ee964b80962f2ab4 +dist/2026-01-20/rustc-beta-x86_64-apple-darwin.tar.gz=c2ec3532fa91de3fdb0e321db0505bb991349f6029ddcd460998b2141504a38d +dist/2026-01-20/rustc-beta-x86_64-apple-darwin.tar.xz=5c73b88d90f6ae44541d7f4c3dfcce184279f619f74bf3865147008d08ea7889 +dist/2026-01-20/rustc-beta-x86_64-pc-solaris.tar.gz=d278027e01143a16596be0efd73673f721f66618050687f344e98bbb9c248128 +dist/2026-01-20/rustc-beta-x86_64-pc-solaris.tar.xz=8bcc061f863c77b33638f66cc5c2288a3af75a3ce9ac85c9ff6ef2664916f572 +dist/2026-01-20/rustc-beta-x86_64-pc-windows-gnu.tar.gz=2458c5b4cf577e02dddd5bf41b1ef774f3cbb100ed6efbd290f44fdd2539dda0 +dist/2026-01-20/rustc-beta-x86_64-pc-windows-gnu.tar.xz=8bdbce81fb1a1ededf46e8c59e90213110f96c9bdeb3432a9440998968438173 +dist/2026-01-20/rustc-beta-x86_64-pc-windows-gnullvm.tar.gz=ea6132e6b43420787771edd7c1737b22e93e70c87234460053b9061d4404f763 +dist/2026-01-20/rustc-beta-x86_64-pc-windows-gnullvm.tar.xz=06ad990dc69585f8e465b28bf9974e009f846dcaaa0af651fb01b0f6b7d64eb9 +dist/2026-01-20/rustc-beta-x86_64-pc-windows-msvc.tar.gz=3e4700196332989cf177a182f545602e7731e16484b05ae1c30545cbb936d7b8 +dist/2026-01-20/rustc-beta-x86_64-pc-windows-msvc.tar.xz=7c381cfed5cf944beb19ba1349a779c88fbb4a007d2670fb2d5d63d8a2dbe976 +dist/2026-01-20/rustc-beta-x86_64-unknown-freebsd.tar.gz=a2448467346e77904fba417cf6758982711391b1eea6f576d438b886813d9281 +dist/2026-01-20/rustc-beta-x86_64-unknown-freebsd.tar.xz=9153cf38b57677a9f433a2cf70086a13f913445142692513a2b23155d4ae22c5 +dist/2026-01-20/rustc-beta-x86_64-unknown-illumos.tar.gz=b1118dde7d41c97409fc2febd068331c08d8bcca6d281078cfe0a4ce44789fa8 +dist/2026-01-20/rustc-beta-x86_64-unknown-illumos.tar.xz=7f4e7002f9cd612541a4809f907f6e18c0eb1765c621a0a944e87e28c5c6bb8a +dist/2026-01-20/rustc-beta-x86_64-unknown-linux-gnu.tar.gz=cbb5bd4b16665096beb06875c8eab8fb1a0de0043e6d70057bfc826ec4f8894f +dist/2026-01-20/rustc-beta-x86_64-unknown-linux-gnu.tar.xz=04382df840d1a3e24bf8c6f17fe7b39d2ca455204e161a51a0644be30a0c9176 +dist/2026-01-20/rustc-beta-x86_64-unknown-linux-musl.tar.gz=635629efe95735dd0e606e930b466170a40876c295903acdc308a8709976d1c3 +dist/2026-01-20/rustc-beta-x86_64-unknown-linux-musl.tar.xz=005a9e66acb005844eb48c616ad9fde6f830d45099cd68c56868a63bf85ca9a6 +dist/2026-01-20/rustc-beta-x86_64-unknown-netbsd.tar.gz=dbd411c130ef46a8d2618930906615358b77f2805d35cb5c898c63e5220bbaac +dist/2026-01-20/rustc-beta-x86_64-unknown-netbsd.tar.xz=d6de09699651dee3946be112bda37221caafb0f0679181255a512d9045bfd7d0 +dist/2026-01-20/rust-std-beta-aarch64-apple-darwin.tar.gz=cc56445cdf88e1e987991c654b65076132e687e1f81ae0ecde119316db7ee6f8 +dist/2026-01-20/rust-std-beta-aarch64-apple-darwin.tar.xz=157b72888a9c6b358152c5e7876c2a9a28dcc2bc637d24a9e80c2f7b3b2d7c73 +dist/2026-01-20/rust-std-beta-aarch64-apple-ios.tar.gz=337b5e932725b7e7323b3954cc2cbeaddd7060dec14cac5aefae3d139207e0ae +dist/2026-01-20/rust-std-beta-aarch64-apple-ios.tar.xz=941011b45dd518033aee4529fb96c3c18fba386beac6b80b0bde7c67f3e20cbd +dist/2026-01-20/rust-std-beta-aarch64-apple-ios-macabi.tar.gz=56d61f46311c4e60b23337c83a60bf628769da2ae2f998aad704d8e0bdaf46f2 +dist/2026-01-20/rust-std-beta-aarch64-apple-ios-macabi.tar.xz=28c1904b991c23789bb6a947842a01640e6c94826a895f7e251490d7e1245ecf +dist/2026-01-20/rust-std-beta-aarch64-apple-ios-sim.tar.gz=47ce08569d02aa034403416d9082c9c37b248a0c2c95d5e3bc494135686c61cf +dist/2026-01-20/rust-std-beta-aarch64-apple-ios-sim.tar.xz=6d8498fcbf8cf374dc0df7799263f498f9c9bd5696e56d1d405b8c9af1b26b92 +dist/2026-01-20/rust-std-beta-aarch64-linux-android.tar.gz=d192fdcad5fce22b0e33d7112e8e82846efc7df2955e45ed054e33af8f561b0a +dist/2026-01-20/rust-std-beta-aarch64-linux-android.tar.xz=d1b676986e7f14009468d4de953316594cec57454ab66e2c33442045bd786bca +dist/2026-01-20/rust-std-beta-aarch64-pc-windows-gnullvm.tar.gz=b118206b25b341e54b6a1924fba1af128682d439a50922142eabd955492f1506 +dist/2026-01-20/rust-std-beta-aarch64-pc-windows-gnullvm.tar.xz=b6942f69d9cf556692975ddd6e9c6492fc27775543681eda9bbf7b47f7d8e837 +dist/2026-01-20/rust-std-beta-aarch64-pc-windows-msvc.tar.gz=fc1c722efb6c101abf8a9c19be977917f5255b528094a61d47488f2a106df18e +dist/2026-01-20/rust-std-beta-aarch64-pc-windows-msvc.tar.xz=45f76965465de191ffd41391899db000183b3ffe7e09122071b66b53ce3157e5 +dist/2026-01-20/rust-std-beta-aarch64-unknown-fuchsia.tar.gz=e18ae77c355b0f18dd50196cc066a821b349fd51444f60d2cd0513d645f860f6 +dist/2026-01-20/rust-std-beta-aarch64-unknown-fuchsia.tar.xz=dd09b9a2b3123f93bb75d869cefae9629d774afa1ae836baadd4718fad38d03c +dist/2026-01-20/rust-std-beta-aarch64-unknown-linux-gnu.tar.gz=4e5cd07f6d08ee4508866a8746677c4078cb8ae3575fd0d6b360900601f8afd7 +dist/2026-01-20/rust-std-beta-aarch64-unknown-linux-gnu.tar.xz=d1431f472132af6df49700e7713f57127a9436c4997e02cace5fef111aee2677 +dist/2026-01-20/rust-std-beta-aarch64-unknown-linux-musl.tar.gz=a7816e9fd0aa5ea9f8069e7bdb29d851197324de17145af343503d6519d09381 +dist/2026-01-20/rust-std-beta-aarch64-unknown-linux-musl.tar.xz=4d0a144e7483d51c5a6c78a727ccc93e0bb13174bcb06746431804f558c130b3 +dist/2026-01-20/rust-std-beta-aarch64-unknown-linux-ohos.tar.gz=b6e562eb9e07dfe65e84b43fd1ff9886ac7b36952d97c6bcdb56232895797914 +dist/2026-01-20/rust-std-beta-aarch64-unknown-linux-ohos.tar.xz=b52b1e208ab363e1f2a2d8076afaa4db22d83b86ba0eb78c8caee322d270fe8a +dist/2026-01-20/rust-std-beta-aarch64-unknown-none.tar.gz=8d199014e8362b55551f4e05e25ab2a5a7df482ff0f69716dd4fb7fa86c24320 +dist/2026-01-20/rust-std-beta-aarch64-unknown-none.tar.xz=8fe7e72b6cc670c085411f93c821db270c3bee61e96961c199c6dce1ac81898e +dist/2026-01-20/rust-std-beta-aarch64-unknown-none-softfloat.tar.gz=aa1bf4114d684bd97f97b47f38279075670995db4ba545d5428cc8756664113d +dist/2026-01-20/rust-std-beta-aarch64-unknown-none-softfloat.tar.xz=54ef07430e12fab3107e90f4780a8d831626db8158f86e2ea4dce8d0a7a6f080 +dist/2026-01-20/rust-std-beta-aarch64-unknown-uefi.tar.gz=248c804b45350e176e7cf9d3fd9fc1111a5e92f28a709829474f4bc7f73a9868 +dist/2026-01-20/rust-std-beta-aarch64-unknown-uefi.tar.xz=4bc2a262d351cb47e91f075e2febbba413e3bbba38dde88f86c9ad7647d62b4e +dist/2026-01-20/rust-std-beta-arm-linux-androideabi.tar.gz=25fe2b01984a70d184f00692b437a670bc9765172171a04c1027e58d8eb41320 +dist/2026-01-20/rust-std-beta-arm-linux-androideabi.tar.xz=bdf81424c056768e5b2de3d8f47f0fa8c6961609bd771f57014b091751e06137 +dist/2026-01-20/rust-std-beta-arm-unknown-linux-gnueabi.tar.gz=043e50c2670339b87b0544b38fea2ae2d232bdd39c36f452ac2fce36347c57d1 +dist/2026-01-20/rust-std-beta-arm-unknown-linux-gnueabi.tar.xz=143f95f8a2d3d2bd8981de4d9d329a33c90d91b7496f9ba7df02f270f3df0155 +dist/2026-01-20/rust-std-beta-arm-unknown-linux-gnueabihf.tar.gz=40c2c0205bde6a79ed5d04a3a14ee0f764dd8d18ccfdd85c90f20cb42c832c08 +dist/2026-01-20/rust-std-beta-arm-unknown-linux-gnueabihf.tar.xz=3099ccc2867df16e9b1217dd04e81ba109443e80da32a70169ac7b262ebf95fe +dist/2026-01-20/rust-std-beta-arm-unknown-linux-musleabi.tar.gz=424dc7f5da843c2d31e5b05be1ecebd284504905da218a33ddd200db09cca2f8 +dist/2026-01-20/rust-std-beta-arm-unknown-linux-musleabi.tar.xz=062bfea00af6a21989bf65bff127ff3e8fd7a7fe3d219adddccf88ba0bb66662 +dist/2026-01-20/rust-std-beta-arm-unknown-linux-musleabihf.tar.gz=74b0625bec34ecba335939d2f43e3b5762d11671e67870c1bd02f3d48e540c80 +dist/2026-01-20/rust-std-beta-arm-unknown-linux-musleabihf.tar.xz=738a1803a385c41f95af4a0e43a8e5aa8d1aa368ab4a9253c4a1a26471e02779 +dist/2026-01-20/rust-std-beta-arm64ec-pc-windows-msvc.tar.gz=c4eeebec7e64ba5e4ec37e6e971b81acabf72f9183ba6133839048de208dbb62 +dist/2026-01-20/rust-std-beta-arm64ec-pc-windows-msvc.tar.xz=13953caa8c05ee02d3c4ae0e94e0a0e635cf3ba7afc4873f3f14485d39ae8797 +dist/2026-01-20/rust-std-beta-armv5te-unknown-linux-gnueabi.tar.gz=6d3a651bbe5abc175a94e725ea2f0e4c36608f42de4a66610f879d8ddd694af0 +dist/2026-01-20/rust-std-beta-armv5te-unknown-linux-gnueabi.tar.xz=01a8574f91e57e8327017566eb9be470473b45cfee3bf6a9793715421a4d0735 +dist/2026-01-20/rust-std-beta-armv5te-unknown-linux-musleabi.tar.gz=6387160de6758466609c206ddd853be3cf376388f6cf17b616f2a5cfa587232a +dist/2026-01-20/rust-std-beta-armv5te-unknown-linux-musleabi.tar.xz=bbb47df59bcc69584d8cd2915e2bb04b80585b495823e7f8494db1fa93bfcdc7 +dist/2026-01-20/rust-std-beta-armv7-linux-androideabi.tar.gz=44b233bc802b61a535ba1cdfec7e2019d16d7a4e5f004289d329aca394515bc6 +dist/2026-01-20/rust-std-beta-armv7-linux-androideabi.tar.xz=e21f2779120fd6f421562c9298594d4477b1cc50b12153dc486665055a45aeef +dist/2026-01-20/rust-std-beta-armv7-unknown-linux-gnueabi.tar.gz=e5c97d03ed3abd6ddb966e9eec940a90f1d47fe9a30b32618f0e0a9ca12f59b6 +dist/2026-01-20/rust-std-beta-armv7-unknown-linux-gnueabi.tar.xz=ce82bf2aba7b75c6dcb19a7eee70acc934a3b76e01a12048a0f008f971d5ca80 +dist/2026-01-20/rust-std-beta-armv7-unknown-linux-gnueabihf.tar.gz=f5446ab9d2cd61669a22a0f1ae4cba1af43e3c681bcb8f76c4c74ab02a6be5d9 +dist/2026-01-20/rust-std-beta-armv7-unknown-linux-gnueabihf.tar.xz=aaa788f52d1a35307c3483e18d5c2c942fd3bab5770557999d5f96eff65e9054 +dist/2026-01-20/rust-std-beta-armv7-unknown-linux-musleabi.tar.gz=f0d13f8c265bfd2bd262f465f4dbe3a5199a0c64d1e7f732698d4a6a3ce485ae +dist/2026-01-20/rust-std-beta-armv7-unknown-linux-musleabi.tar.xz=f63d8760019bb5147afe3f41b7bee32e77bf145bde7cbd66d967a80cf8732af5 +dist/2026-01-20/rust-std-beta-armv7-unknown-linux-musleabihf.tar.gz=74025d9b500d5d42046ed5d5f61f8e5dfddaca6d4f8e3a70e54770a517206b74 +dist/2026-01-20/rust-std-beta-armv7-unknown-linux-musleabihf.tar.xz=13434d08a93291ca7cdb393723c53550a8fe75edc20533bc6f08500cf700270d +dist/2026-01-20/rust-std-beta-armv7-unknown-linux-ohos.tar.gz=0fe9c1366b0e98bd6539d16f912a6e05b8927282540d087471c64f69e3cf6b4b +dist/2026-01-20/rust-std-beta-armv7-unknown-linux-ohos.tar.xz=2fd56632b57cb681ac6076c554c8666504bf995202e5075588f7c34ed8085807 +dist/2026-01-20/rust-std-beta-armv7a-none-eabi.tar.gz=278acce49b80ffb09a9782d16e0d6a720700c872c75113dd2bcdb85a3026845f +dist/2026-01-20/rust-std-beta-armv7a-none-eabi.tar.xz=e0e52abb27568171ecf80f45690febe6e396d0af5bc38d6e73e7377fabd69899 +dist/2026-01-20/rust-std-beta-armv7a-none-eabihf.tar.gz=a553da7e46e629be7e12329fe236c9abe473e1ccf1a06f6aaf2e0a0d5f3d691b +dist/2026-01-20/rust-std-beta-armv7a-none-eabihf.tar.xz=002fe75542e437e718845832e570982e785202505a8041fecb3123514b2f961b +dist/2026-01-20/rust-std-beta-armv7r-none-eabi.tar.gz=254b5d4747b7ff23620490fbcf66084c8ed25dc0e771eb90e670d87bc0c7f0b7 +dist/2026-01-20/rust-std-beta-armv7r-none-eabi.tar.xz=b6c86fbb8dc2583eca27a7b041fc4f7fe711c663a8cb46f155b468cdc6c7229c +dist/2026-01-20/rust-std-beta-armv7r-none-eabihf.tar.gz=ce2a9737eeda7f8982ecc41e720f9ed4b762288d8223735df5cca77ac2236c78 +dist/2026-01-20/rust-std-beta-armv7r-none-eabihf.tar.xz=acd2ab7fa3a80031880e4ce5061fb2c560ff083b729953225a179e5f8ed0061b +dist/2026-01-20/rust-std-beta-armv8r-none-eabihf.tar.gz=5ad87901a799ae80d3e91b5e17a657d329ae7bd34606cebc5c986a628480c4dc +dist/2026-01-20/rust-std-beta-armv8r-none-eabihf.tar.xz=fa83c2e59bc76031d342aaa57708c68dac145f6e658a645bca872d201e7fca9c +dist/2026-01-20/rust-std-beta-i586-unknown-linux-gnu.tar.gz=fcebb4149026d36215fbac5c30d7b135ceafc963878becc49f4393424230f087 +dist/2026-01-20/rust-std-beta-i586-unknown-linux-gnu.tar.xz=03698b5571e5e7be170ec4ba882158736b232d69ba8465c289827c5509569c9e +dist/2026-01-20/rust-std-beta-i586-unknown-linux-musl.tar.gz=b390bd31913d3b018166df661729e9ee552d46789b6c9ca2d3d5e21026a2195a +dist/2026-01-20/rust-std-beta-i586-unknown-linux-musl.tar.xz=d11de928cb1857eccd2125dabe724d70461d287d3a05e53d0c39c7a020a6b83b +dist/2026-01-20/rust-std-beta-i686-linux-android.tar.gz=8a54e4c05cf8e42c0633c32ff66b6a6d9704688076fb0ccfc3a6ec7eebbce329 +dist/2026-01-20/rust-std-beta-i686-linux-android.tar.xz=875d34834e32b35e76de275d38063be134de8672a692a9739f9abe6197ae25e2 +dist/2026-01-20/rust-std-beta-i686-pc-windows-gnu.tar.gz=38c84e49a2f8f8df4966b3092af8d4cf82a952c89d3bf57ee19a0eab428cd67e +dist/2026-01-20/rust-std-beta-i686-pc-windows-gnu.tar.xz=651da8be90cb2ca29bdbc96bd9fe56d1654fccc2f80eda79d9358159120405a4 +dist/2026-01-20/rust-std-beta-i686-pc-windows-gnullvm.tar.gz=74bdff560b2c21c66e7ebc8e028f05260a9f4d542893f843a49cc0a5904e2e92 +dist/2026-01-20/rust-std-beta-i686-pc-windows-gnullvm.tar.xz=34dbf2186ee00a37482cc2c5540631d0fe879167977685fe1f5f9687b4a13e1a +dist/2026-01-20/rust-std-beta-i686-pc-windows-msvc.tar.gz=ef96af22d000a26b7ccf071c2a57910c761a95d4ba7490eb5a5a6422851ef4bb +dist/2026-01-20/rust-std-beta-i686-pc-windows-msvc.tar.xz=6680b37f26878c91012b20297c8ad3ff318cb1800a7434f3392fb606cd78227a +dist/2026-01-20/rust-std-beta-i686-unknown-freebsd.tar.gz=491599ff71f37c43ffc190f6f48833ac97e7abf2b23399c8f7a7395dfb54cc9e +dist/2026-01-20/rust-std-beta-i686-unknown-freebsd.tar.xz=46a91f11cd54ee4b1cad3b1b93a3b865404b6c87cd077fd9e4b89d84bc5ba836 +dist/2026-01-20/rust-std-beta-i686-unknown-linux-gnu.tar.gz=a4e8882af3628b45a7e09909cdda626df3b18fcac88ee2d295bd16f6aa0b09d6 +dist/2026-01-20/rust-std-beta-i686-unknown-linux-gnu.tar.xz=0f0899389080913cbac8dd531ca3d3eb8503653a551b71f59d238015e025dfe7 +dist/2026-01-20/rust-std-beta-i686-unknown-linux-musl.tar.gz=75e9760f5b416021f8f82f8a20283c6307584df12046680a2981ed306cfcb542 +dist/2026-01-20/rust-std-beta-i686-unknown-linux-musl.tar.xz=b51312fd213eaa7e0f8e374b2421c61822e8912734fbb228f97b045d27121e6d +dist/2026-01-20/rust-std-beta-i686-unknown-uefi.tar.gz=b643b865409e819267c925fe69c84914d71eb634d17591edad1738dabaed9c2a +dist/2026-01-20/rust-std-beta-i686-unknown-uefi.tar.xz=03a9a056d82ef3aeca9ff64e2d3ab5f0bdc0f8ff496393beb63fefbc5e633e84 +dist/2026-01-20/rust-std-beta-loongarch64-unknown-linux-gnu.tar.gz=3f770cac4814cf73bd31aba5c59005cf60aa4f5a40da64d037c9a7235e248291 +dist/2026-01-20/rust-std-beta-loongarch64-unknown-linux-gnu.tar.xz=fa74c6b92a7e61e8f2a33e2c3a2163bfe91273664f1a59e435c6748fe16cb43f +dist/2026-01-20/rust-std-beta-loongarch64-unknown-linux-musl.tar.gz=96cfb6c20488f53791be313e70e147f3257353f39588e7949c487b69fbd0c937 +dist/2026-01-20/rust-std-beta-loongarch64-unknown-linux-musl.tar.xz=7c16dcd6685ef79d8b4e84b2bb06bedcec67498e3112a1322c663118ef49d02d +dist/2026-01-20/rust-std-beta-loongarch64-unknown-none.tar.gz=2bc1dd28e95012670733527d59b391bd578218f38aebcb6990e629e8130d10c8 +dist/2026-01-20/rust-std-beta-loongarch64-unknown-none.tar.xz=d65dc641b81e561ab30823c99cdee32615b9ca56d0a6a75450f44eb25ee66ac6 +dist/2026-01-20/rust-std-beta-loongarch64-unknown-none-softfloat.tar.gz=04fda933fde52c3bb35b52dc38fe973b30d2e1a2369d1d500d20781e7014b65a +dist/2026-01-20/rust-std-beta-loongarch64-unknown-none-softfloat.tar.xz=d2ce8dbade8c3a7c8ad9fb697d6f4b8551845263e8e9993772679c9a2e8334ff +dist/2026-01-20/rust-std-beta-nvptx64-nvidia-cuda.tar.gz=819464b843b4218f3e77613094615701e3b6b31fdff1ef8781c98d482f7bb6a7 +dist/2026-01-20/rust-std-beta-nvptx64-nvidia-cuda.tar.xz=fa5dca88bcec7f44f8ac52f207ba8029e167de23d377e03ba7f60e8e2211b2c8 +dist/2026-01-20/rust-std-beta-powerpc-unknown-linux-gnu.tar.gz=bd5667a613dcb10a5d7d86f63123acd967e8572c16c0d39969dfadfc8c7182ca +dist/2026-01-20/rust-std-beta-powerpc-unknown-linux-gnu.tar.xz=4b1092fcd8481a8e611b7f621348ae09f22eec3b50d1ca1aefdcd8c7d22a7d5c +dist/2026-01-20/rust-std-beta-powerpc64-unknown-linux-gnu.tar.gz=3a9f61f1da7d463ee4a06bda52dc534b8550beb09c82227c21ff02b0e2b94b44 +dist/2026-01-20/rust-std-beta-powerpc64-unknown-linux-gnu.tar.xz=cc2c6a28f7b5182675c18f1cc87ba87a215eb91bfce45726970a23554c98ce25 +dist/2026-01-20/rust-std-beta-powerpc64le-unknown-linux-gnu.tar.gz=14b80b314e8778a057c45164ca13f5c66a621a2f882143fd3bf21f2804a7547e +dist/2026-01-20/rust-std-beta-powerpc64le-unknown-linux-gnu.tar.xz=ad7082205aeff5014dfb7923bbf313cbfa8bcd97da098be6f267a4c45c0d53a1 +dist/2026-01-20/rust-std-beta-powerpc64le-unknown-linux-musl.tar.gz=eaad6ab10d812cf3e5eec9b829614d011f9f9afc171c9e9226660ad54e40fb2e +dist/2026-01-20/rust-std-beta-powerpc64le-unknown-linux-musl.tar.xz=6bb3bf669bf53eb5b13e9387c057b33bff4e6ed63af92e0a611c3813032ef3dd +dist/2026-01-20/rust-std-beta-riscv32i-unknown-none-elf.tar.gz=2520f4f0569554108302f174dd1586752f6e987956e3e9a451ead4174a7a534e +dist/2026-01-20/rust-std-beta-riscv32i-unknown-none-elf.tar.xz=935a00898ae51312b31a74f626f54901f1ea20a7ad34c46b0afe52e73030336d +dist/2026-01-20/rust-std-beta-riscv32im-unknown-none-elf.tar.gz=704b2ffb62e06b81ba554eec92ecf764660cf34afa2a6c24baeb352da70505b9 +dist/2026-01-20/rust-std-beta-riscv32im-unknown-none-elf.tar.xz=f673b92435126d88ab3282b25e20738aedb997db4c4a5ea74d49b8f4498c45e9 +dist/2026-01-20/rust-std-beta-riscv32imac-unknown-none-elf.tar.gz=b8cde078357091c89532baca3d1703db779a762e32b2f0dd10a2be6b10fabae1 +dist/2026-01-20/rust-std-beta-riscv32imac-unknown-none-elf.tar.xz=fc5ca415261fbaa65ffde2641bab65473201aa966d3bf99f11030af32f79685d +dist/2026-01-20/rust-std-beta-riscv32imafc-unknown-none-elf.tar.gz=636f2ba1ba6b443a76d7a03561a001a874e10559cfc0d2941a003eb6b2eab810 +dist/2026-01-20/rust-std-beta-riscv32imafc-unknown-none-elf.tar.xz=5cbe945f2db55cdf1b06e0424f342aa509bb0689a131a309812da45a33e6b56b +dist/2026-01-20/rust-std-beta-riscv32imc-unknown-none-elf.tar.gz=89dbfe19f8841cd04d59b8cfed9475df1accc991d60c0f14f66ec78341182abf +dist/2026-01-20/rust-std-beta-riscv32imc-unknown-none-elf.tar.xz=975bf46c3ac09ff68d6f2f3ac151c173a626e730243d52834de8c2304ffec18f +dist/2026-01-20/rust-std-beta-riscv64a23-unknown-linux-gnu.tar.gz=22e2d02b26cef510ad3c9dbe3d90bc37e024a3845e6a6310dad9a550910823e2 +dist/2026-01-20/rust-std-beta-riscv64a23-unknown-linux-gnu.tar.xz=9c3f58c9bebf264afb837cba63a09ae77ac5ca22f4063d290eca7e79c27253f9 +dist/2026-01-20/rust-std-beta-riscv64gc-unknown-linux-gnu.tar.gz=c8151863450d144882557691a8903912605f713fc9d1423d71270aff7e0cfa9d +dist/2026-01-20/rust-std-beta-riscv64gc-unknown-linux-gnu.tar.xz=c896fc03d5df106d1ffd92a9d8eefbe68ded5298ef7802816460a184da99ecf7 +dist/2026-01-20/rust-std-beta-riscv64gc-unknown-linux-musl.tar.gz=753981a75540a01945ed929105f5f484e58e2c2e16d8e1a00217fd1cc1fbfc2b +dist/2026-01-20/rust-std-beta-riscv64gc-unknown-linux-musl.tar.xz=d6186cd8f829c57357c1d494e11d0a1ddf58d10f7cc0fc063eca63099bab832b +dist/2026-01-20/rust-std-beta-riscv64gc-unknown-none-elf.tar.gz=f89ffb6abceef381d0305f35b4366349d7a1739ede655071b105511b602a1f8e +dist/2026-01-20/rust-std-beta-riscv64gc-unknown-none-elf.tar.xz=02a077f1aca2d02ab9d14531ea2c3728d7e4ed6551b065aaea0a7831f9d5a7d4 +dist/2026-01-20/rust-std-beta-riscv64imac-unknown-none-elf.tar.gz=88e3800176211ee1f149a7073caf1b9c81fc51e77b8f2f20fd0fed19382cddc1 +dist/2026-01-20/rust-std-beta-riscv64imac-unknown-none-elf.tar.xz=3824e9b78247a6213456b015dc7158702e05adda4b7147a6336a106dc94dc740 +dist/2026-01-20/rust-std-beta-s390x-unknown-linux-gnu.tar.gz=95456e51cb0c764293879722c4a54d89c5fe362f7fd5aad886591df807fc95f7 +dist/2026-01-20/rust-std-beta-s390x-unknown-linux-gnu.tar.xz=9b448fc6cee52ec53baca1bd5f93387e2f94f8f90d27172f50b10173e9e5b891 +dist/2026-01-20/rust-std-beta-sparc64-unknown-linux-gnu.tar.gz=407517411ae7ba6c7914bb64ed326e04e269bb5a8dfe0f832cc3176d04f7198d +dist/2026-01-20/rust-std-beta-sparc64-unknown-linux-gnu.tar.xz=b026f85cef121272c1e5cfbb289a65c398c463b9c9f3b03fe8691bc58b5778f8 +dist/2026-01-20/rust-std-beta-sparcv9-sun-solaris.tar.gz=c768d7d28d68c0e0b38d9e20abfe150e0bf883b5033f59d82b57daf63b7e5aa8 +dist/2026-01-20/rust-std-beta-sparcv9-sun-solaris.tar.xz=084fcfaa613aad7ee636c51d17c50455c6561b1287feef061e92d3acc3ee2be4 +dist/2026-01-20/rust-std-beta-thumbv6m-none-eabi.tar.gz=e14071a8e9b46f2d9a4f1e07c44bb28d884dfa1764d15fb7a2b255ac1aece1d7 +dist/2026-01-20/rust-std-beta-thumbv6m-none-eabi.tar.xz=d4ed2c2cab6e1522a8b571151da07a52350e795b5cb40a25409de49ea93fbd82 +dist/2026-01-20/rust-std-beta-thumbv7em-none-eabi.tar.gz=b8669b9842251cc2192a57471968765b431ebaa8753a1e6e18296e9cd6a157c8 +dist/2026-01-20/rust-std-beta-thumbv7em-none-eabi.tar.xz=dad30dafe030d3527762152d3df1b4e32d752341c8a53a7bb0946c818b85cfea +dist/2026-01-20/rust-std-beta-thumbv7em-none-eabihf.tar.gz=758a607c2f1d4000e6f70ef504da421d3177b810f42c0869d11063a6ffe31fbe +dist/2026-01-20/rust-std-beta-thumbv7em-none-eabihf.tar.xz=354853d1edf7546feef1de3256608d1c1dddb41774063b4356fa62de5bbefbee +dist/2026-01-20/rust-std-beta-thumbv7m-none-eabi.tar.gz=080c85f6510a78226c9f538a9735f4c878a2e1ae5ecc37e96dc68a618ed0c3c0 +dist/2026-01-20/rust-std-beta-thumbv7m-none-eabi.tar.xz=840ee359261a182053592c27f6428593bb5c20ff9c9574a09613f1c75fb9a2cf +dist/2026-01-20/rust-std-beta-thumbv7neon-linux-androideabi.tar.gz=14569501fcc481b5453e912bc5ed6f3b106c2d3f5068582beedc120d488c720a +dist/2026-01-20/rust-std-beta-thumbv7neon-linux-androideabi.tar.xz=50fb6c749858767db6e1bfe52205bf7761c2d287c3b8e2f882137c5096912745 +dist/2026-01-20/rust-std-beta-thumbv7neon-unknown-linux-gnueabihf.tar.gz=05d86630c938e3902d339e9cee306a97e459de5f4588aeac2075c5686f79cd35 +dist/2026-01-20/rust-std-beta-thumbv7neon-unknown-linux-gnueabihf.tar.xz=1ff3979060d0b74ef841148ad0b3c124989a49b97fbc2cec01f0f342a758f610 +dist/2026-01-20/rust-std-beta-thumbv8m.base-none-eabi.tar.gz=6031caa8a04bbc2cbfa2bad982743dfba1d74215b21fb799c5d5ea21d598aebe +dist/2026-01-20/rust-std-beta-thumbv8m.base-none-eabi.tar.xz=4ab93e3d8b24dee229b76cecfd17acf37a785eceeb6f18b9b0131b18ee879dff +dist/2026-01-20/rust-std-beta-thumbv8m.main-none-eabi.tar.gz=02f3083cedee8072f7028de80f22a5ae769af34163ef60736012d262b2d971f2 +dist/2026-01-20/rust-std-beta-thumbv8m.main-none-eabi.tar.xz=87cb4cf2256f8027a05543182431f8fc95f1fa51c10faefedb45de5eaccee3d2 +dist/2026-01-20/rust-std-beta-thumbv8m.main-none-eabihf.tar.gz=900474351bc843213c48e3d6a9e6de76555184b3993853ed547115e85f003545 +dist/2026-01-20/rust-std-beta-thumbv8m.main-none-eabihf.tar.xz=4cce3bd9620f6f895ea6fb9a26008ea6c482680059982a39ffd77c20bb803150 +dist/2026-01-20/rust-std-beta-wasm32-unknown-emscripten.tar.gz=fd050397dc018d910262d8269b55eae0f78582094b7c7eb7b69891f25768f60c +dist/2026-01-20/rust-std-beta-wasm32-unknown-emscripten.tar.xz=665e65eed6dd420566b971104b649521468df5eef5510b1a7fa2c5414f5dab94 +dist/2026-01-20/rust-std-beta-wasm32-unknown-unknown.tar.gz=2588ec7952e575d48d2584f7697c782b4daa61c35a54919d434552034c0f494a +dist/2026-01-20/rust-std-beta-wasm32-unknown-unknown.tar.xz=42718adabbe3effd1e89c08b446e8a18851d13ec7a50e426898402fbba00204c +dist/2026-01-20/rust-std-beta-wasm32-wasip1.tar.gz=9659b9e17e7fb0ecb14885dc404a47f17a35612490fcf834040050876c4a87b0 +dist/2026-01-20/rust-std-beta-wasm32-wasip1.tar.xz=c81860bb8271c0d6fb2df38b1b4a0ba006b47af9aab9c6fd88610780d708ff79 +dist/2026-01-20/rust-std-beta-wasm32-wasip1-threads.tar.gz=138cfe4a6414bcac1a4fed1713840f245fe57ab732e86b46ea66f89b38814837 +dist/2026-01-20/rust-std-beta-wasm32-wasip1-threads.tar.xz=b3b7ff4265e0d22aaea372e8355265d30f38fc73ab4e491eb9e36e261e107e5d +dist/2026-01-20/rust-std-beta-wasm32-wasip2.tar.gz=2b0ed2d38970294665f8c5515f2b23b8c447d19159c2317d456efe723ccdc282 +dist/2026-01-20/rust-std-beta-wasm32-wasip2.tar.xz=eb208d4ff325e675a5396acca80ac4594f1d8487136b044cb063140c38c9f900 +dist/2026-01-20/rust-std-beta-wasm32v1-none.tar.gz=2fc3a05f25b26e82b7589eba95b06f60923d83dc6d75566ee64967dd27392be0 +dist/2026-01-20/rust-std-beta-wasm32v1-none.tar.xz=733cfb74da7faae63b7d471d069c18e35e6d3ebd49bb7af929aeddc16a6bf41c +dist/2026-01-20/rust-std-beta-x86_64-apple-darwin.tar.gz=77a9a5614f59a026cbd265ad97d7acda3ecfbc441e550f82146e4eecae43c0d5 +dist/2026-01-20/rust-std-beta-x86_64-apple-darwin.tar.xz=8fb75751c0494fb331cfcd40de32877fb4eb3419d31867296d0c4c9b65884764 +dist/2026-01-20/rust-std-beta-x86_64-apple-ios.tar.gz=db33e16445c89a739ef351699dad17ff7f0317c299ffe3a45dad681ef023b3fc +dist/2026-01-20/rust-std-beta-x86_64-apple-ios.tar.xz=55377880102139275bcc523f0936e47a88486887f0d66ecfe0b90bdb4ecbd2e3 +dist/2026-01-20/rust-std-beta-x86_64-apple-ios-macabi.tar.gz=ecb3e64fe4b05426446a7cf49d203c82501bdf4222724189c2e0718b2392360e +dist/2026-01-20/rust-std-beta-x86_64-apple-ios-macabi.tar.xz=e39ef0d40e8beccb2704ee197b2d3986314aa0ec56dff73c284cc8920518c4dc +dist/2026-01-20/rust-std-beta-x86_64-fortanix-unknown-sgx.tar.gz=e8fb4aeb988c62140928da488091c73e96181b2c87af9716e80a3eb8fb841448 +dist/2026-01-20/rust-std-beta-x86_64-fortanix-unknown-sgx.tar.xz=7f42f9dd7a47b784186d7ede3643185e92a1d85932e6238668097efa7f45cfd0 +dist/2026-01-20/rust-std-beta-x86_64-linux-android.tar.gz=098e55a9e7ed0dec4235682cd70836cf5e1b327de7dfcf8e18c49faf3d3e7b56 +dist/2026-01-20/rust-std-beta-x86_64-linux-android.tar.xz=1e8ec49d649cdcfb9ee49740639f1f123d3c9d8b722553f104858fccae0e6d1d +dist/2026-01-20/rust-std-beta-x86_64-pc-solaris.tar.gz=b21ec57c249842b9407ffeb67e0732ed69991470b2d6e726adc3d3b06ab79705 +dist/2026-01-20/rust-std-beta-x86_64-pc-solaris.tar.xz=da37239ac84b376190f99bc7c103f315a153b33c22393a453a80e2f0c3867c55 +dist/2026-01-20/rust-std-beta-x86_64-pc-windows-gnu.tar.gz=63dda15c97c519e336382ad12e02f8d59b19310ca87be4bfccd668616ad839e9 +dist/2026-01-20/rust-std-beta-x86_64-pc-windows-gnu.tar.xz=4a3fcde123276fe18e70fde97c04cd5e5083cd2079911a4be9f203fc079820cb +dist/2026-01-20/rust-std-beta-x86_64-pc-windows-gnullvm.tar.gz=124d9b525f103c033f4f3178fbef407ffe54a1ccfa2f93c5ca29923717bcb10e +dist/2026-01-20/rust-std-beta-x86_64-pc-windows-gnullvm.tar.xz=7eb9ec5f20575d9a1aa3d252b3c92a077c8edb845cb16eb8df127cffea5c12f1 +dist/2026-01-20/rust-std-beta-x86_64-pc-windows-msvc.tar.gz=72944c39dbb92c4d08d962cc0de6aa70e4c2519d457796db9d81ce26850690f4 +dist/2026-01-20/rust-std-beta-x86_64-pc-windows-msvc.tar.xz=4fd4289e64c6a0f26de760a6dfe42065dcba2b7c1a68b3ce21080d89f21cc439 +dist/2026-01-20/rust-std-beta-x86_64-unknown-freebsd.tar.gz=175fa2f4353203445f3accfc9a3958f94490b69ad3b3dbde4fa706c95dfb4208 +dist/2026-01-20/rust-std-beta-x86_64-unknown-freebsd.tar.xz=8baa09381fa21da8b0d5c24212696975ca83f7bfb3ee29bd64a8f2c47bda9bfe +dist/2026-01-20/rust-std-beta-x86_64-unknown-fuchsia.tar.gz=81fe291afe4619e75e3d7fc509e5dd6dee7e60e2fbb35410da13ddadcc6ae4f2 +dist/2026-01-20/rust-std-beta-x86_64-unknown-fuchsia.tar.xz=498874af8343cfe6bc588f0bf6a90c393586c9d683feeab34dcf5a2dadf2cdeb +dist/2026-01-20/rust-std-beta-x86_64-unknown-illumos.tar.gz=69de9a4ceeb07503f5d8a9e0a263a25b005657ce42ca0a83c52579869f2883d5 +dist/2026-01-20/rust-std-beta-x86_64-unknown-illumos.tar.xz=a218bab24c2b85fbc11ca846da6090f6fb0cee74d86ff4a540a98297379d4588 +dist/2026-01-20/rust-std-beta-x86_64-unknown-linux-gnu.tar.gz=58e74c1f7459b13130713007dfc70c7444f0627f016154dbd564a84016c1df72 +dist/2026-01-20/rust-std-beta-x86_64-unknown-linux-gnu.tar.xz=ae2b69792ddff5f60b2c0060d59b2b17491769f6fcf6abd44b64435c5920e7cc +dist/2026-01-20/rust-std-beta-x86_64-unknown-linux-gnux32.tar.gz=8efeaae9589fd41ef558bb6587f1619c356c2da2ab2a7ae63b31961cc2a7c2be +dist/2026-01-20/rust-std-beta-x86_64-unknown-linux-gnux32.tar.xz=451dcc4dbdf2b9e9b08165745ceb7d9d5c2c93f65288023b24d818d567a3d827 +dist/2026-01-20/rust-std-beta-x86_64-unknown-linux-musl.tar.gz=cbf91ce153ae8a9108e0396beab208cf1c263351fe4638eb1f4ff90d5f00e018 +dist/2026-01-20/rust-std-beta-x86_64-unknown-linux-musl.tar.xz=b5392dae5fef54f9418318ecedab57404f03aef618231a6431162078a283aa34 +dist/2026-01-20/rust-std-beta-x86_64-unknown-linux-ohos.tar.gz=b071ea7128235d11560e6e58666311f96940454070a641bca27709bfbe608bb4 +dist/2026-01-20/rust-std-beta-x86_64-unknown-linux-ohos.tar.xz=8a85c937fed532e558e5d0919913071a5873db08fe3f8c7121c708df2f2c10ae +dist/2026-01-20/rust-std-beta-x86_64-unknown-netbsd.tar.gz=e77192be66c874d102d68848bc750007328a4034047c1379138a6e12e5cb5c7d +dist/2026-01-20/rust-std-beta-x86_64-unknown-netbsd.tar.xz=ce899ed2702c32b813e5f754cc0af85ce0a7bd08770440291de758b30457abc9 +dist/2026-01-20/rust-std-beta-x86_64-unknown-none.tar.gz=2b5a6e82c398ddd10cbfc28714ee82778126906a102af59f6689eeb485cfa59c +dist/2026-01-20/rust-std-beta-x86_64-unknown-none.tar.xz=75f5a1f61f3fbd5f59b8da5b3d68612d879356a3a76a3325e115cda69bbec8ba +dist/2026-01-20/rust-std-beta-x86_64-unknown-redox.tar.gz=c42257ac8de158a1baeae3a0ccc786f7ce44e2119e222a0ae145c8d087d25ff5 +dist/2026-01-20/rust-std-beta-x86_64-unknown-redox.tar.xz=93bee91a6cf012da2a244bb77c2ecf6b5079d4139510e0cadf827e3f1d0f949f +dist/2026-01-20/rust-std-beta-x86_64-unknown-uefi.tar.gz=bb7721b8cece5bc774bc24cd75126e9be5625a1fbb46f7df343069b8f9941e0c +dist/2026-01-20/rust-std-beta-x86_64-unknown-uefi.tar.xz=fb5b68cdaab325cb6c7ac91803b694f3c13df87af9069426a26bb33a0029e378 +dist/2026-01-20/cargo-beta-aarch64-apple-darwin.tar.gz=68018a555a01fd5fb0a614668c64502d512ec21b8bad10186928d6ee351743a2 +dist/2026-01-20/cargo-beta-aarch64-apple-darwin.tar.xz=61ccbaeb46baa8a5cb984f6bb389c2b2e9e56784ae5f94500cd85c876e84e9a6 +dist/2026-01-20/cargo-beta-aarch64-pc-windows-gnullvm.tar.gz=6c94f4be14fc692f0cf30abdbaf6500aedf2de4bb30fd6cea3c6df004cfab3e5 +dist/2026-01-20/cargo-beta-aarch64-pc-windows-gnullvm.tar.xz=e5b104152c93682c2c04d0735547611cb9ddf0ca97655da9181a72186bf1e148 +dist/2026-01-20/cargo-beta-aarch64-pc-windows-msvc.tar.gz=6e362f5864b79406982592c497e8e8706cc543452d12856baf440df6d8e1c2b4 +dist/2026-01-20/cargo-beta-aarch64-pc-windows-msvc.tar.xz=80634e4cc4b3a90660be35e50b358c924a44d28feae7350a7cd4540aa58cb759 +dist/2026-01-20/cargo-beta-aarch64-unknown-linux-gnu.tar.gz=0826dccf72f8a52127ce935fef0b260c41a1e6e677c0e0b35c3180395efa257e +dist/2026-01-20/cargo-beta-aarch64-unknown-linux-gnu.tar.xz=bc1cea64723b5ff68c3cb7a7848a1e3d058d60d4dd01b68e2bb0dc9f7e377883 +dist/2026-01-20/cargo-beta-aarch64-unknown-linux-musl.tar.gz=e959fc9b4dced7f1fc7ddb5be1f59cbaa80e67fba4c8b811e66c980920f50a89 +dist/2026-01-20/cargo-beta-aarch64-unknown-linux-musl.tar.xz=7f44f2e9696333dcc1bdd9ad27761025573a2a29f16ece6e952136278bf0c0c7 +dist/2026-01-20/cargo-beta-aarch64-unknown-linux-ohos.tar.gz=39100832eb910130177359850f1dbc63c7006f763313313d046132b9b408ec2b +dist/2026-01-20/cargo-beta-aarch64-unknown-linux-ohos.tar.xz=4da74538df99ffc89f5a4e4b920f8b91b63809814032d9be4747d856c2481391 +dist/2026-01-20/cargo-beta-arm-unknown-linux-gnueabi.tar.gz=1640df82cffe0e12b78ba50c778441d468da647508275a1624d9ddee42bf80a4 +dist/2026-01-20/cargo-beta-arm-unknown-linux-gnueabi.tar.xz=f7e5ae4dffa52e89d5cf0983255e2c4e12b482c1b9bd8f9121a27f9d859291ae +dist/2026-01-20/cargo-beta-arm-unknown-linux-gnueabihf.tar.gz=76fd2a8a2a0cf4583c16c0f0d58c19651a259d947b5f570e934c9ea8a288ec95 +dist/2026-01-20/cargo-beta-arm-unknown-linux-gnueabihf.tar.xz=159491a9f53719b0cef45c38483632fb3ea3cb1d8edc3a2069eb6bdfc74af59a +dist/2026-01-20/cargo-beta-armv7-unknown-linux-gnueabihf.tar.gz=debd3631a510f713276a2ff7feb163414e1c5617df75c7b8fb012568f2bf0f37 +dist/2026-01-20/cargo-beta-armv7-unknown-linux-gnueabihf.tar.xz=d1ee0a450c4d2f34d76a0b4f904e344f68de0102777aca20c2e1c4bd6249006d +dist/2026-01-20/cargo-beta-i686-pc-windows-gnu.tar.gz=cd339637c333db74c684597d9c817aa80bde1b3a2ca436678b16cf3b4954a8c1 +dist/2026-01-20/cargo-beta-i686-pc-windows-gnu.tar.xz=aad0ae08d8da64076f20479de9efe6cb4dac0ef3b35940b86b13d1035c033dfb +dist/2026-01-20/cargo-beta-i686-pc-windows-msvc.tar.gz=2b24c735d2cbc73d9cdda6877e15e443a975acae78d9e7a6756464b2cca30b0e +dist/2026-01-20/cargo-beta-i686-pc-windows-msvc.tar.xz=8e5ae923bd2627354783c5ea036c31bac672c5ebabe01cd09ae591ae982d25ba +dist/2026-01-20/cargo-beta-i686-unknown-linux-gnu.tar.gz=3d4b141d6a79db23e5fca439c2dcd60b578404a0487fa8444d2310b7d48962d8 +dist/2026-01-20/cargo-beta-i686-unknown-linux-gnu.tar.xz=98ee2d83f2d9a2a8bad7706f9dd3fc94b4292c5ebe68abf1daa295e5f762617f +dist/2026-01-20/cargo-beta-loongarch64-unknown-linux-gnu.tar.gz=5cf7b73a394c70935b3a3734db36e59b8118ebe576e5a8115c8cb134ec08a0a0 +dist/2026-01-20/cargo-beta-loongarch64-unknown-linux-gnu.tar.xz=f02d05725f2d0f50588ab2c6a07794225787f25b914498d68a863b0572e3a35e +dist/2026-01-20/cargo-beta-loongarch64-unknown-linux-musl.tar.gz=6a040c1db1261aa353fa0b76b604d390ba55b128a8e228d5fa6f3aa7a2f9d649 +dist/2026-01-20/cargo-beta-loongarch64-unknown-linux-musl.tar.xz=de23eb854b648a895993402f9b8331819ac407047c52e4ed688e04377d31ac52 +dist/2026-01-20/cargo-beta-powerpc-unknown-linux-gnu.tar.gz=b228b304546200fbc1336d2d4411a9a6b5b87a5e345c880d879a8f79ee491a80 +dist/2026-01-20/cargo-beta-powerpc-unknown-linux-gnu.tar.xz=5b5c759ffff62c12b1629d2e7b651a1155ce88e7588be2a2d0b4d9ca3d0a726a +dist/2026-01-20/cargo-beta-powerpc64-unknown-linux-gnu.tar.gz=8436db28b1d269969e6607c8838ccb2147b1bd0c7a284826c11cd4ce35b89847 +dist/2026-01-20/cargo-beta-powerpc64-unknown-linux-gnu.tar.xz=9c585cf6ac5893c156e1b9d747656d9575611f75bb8032267a898b34845069d9 +dist/2026-01-20/cargo-beta-powerpc64le-unknown-linux-gnu.tar.gz=e5b2ec927cd671d52e0506d4df7185750fdb564692a14ea49d8c23dc53a534b2 +dist/2026-01-20/cargo-beta-powerpc64le-unknown-linux-gnu.tar.xz=69a1b43bb32d784719903694eb7ede8301b86ecea3eebfc58844c41cd393f84f +dist/2026-01-20/cargo-beta-powerpc64le-unknown-linux-musl.tar.gz=95adea6787309366ec745933daacdc1a821f981bdacdd648697eb9dbb6a5a8b9 +dist/2026-01-20/cargo-beta-powerpc64le-unknown-linux-musl.tar.xz=3d67b80fdc9f47822082664b7f5dc1cc0b456db00ef479c8744f660de7873902 +dist/2026-01-20/cargo-beta-riscv64gc-unknown-linux-gnu.tar.gz=cc1b3ad4ca1f4bf0ef3a7b5e5d58985d40fad6142099776bfea8c6e81fece140 +dist/2026-01-20/cargo-beta-riscv64gc-unknown-linux-gnu.tar.xz=9f0a936690f17b320c84a70b3135526bfc7aa5d36d5cfb97547c5fc53b657c04 +dist/2026-01-20/cargo-beta-s390x-unknown-linux-gnu.tar.gz=d44fde497ca4c2a750453f75a0eec1200ac928ddd8078cc233c53fe2b066b19a +dist/2026-01-20/cargo-beta-s390x-unknown-linux-gnu.tar.xz=fa6d932e55b8aa814e428b973a62fb7db6a603e728b114f7e2165e90721ec05e +dist/2026-01-20/cargo-beta-sparcv9-sun-solaris.tar.gz=ed500af7a213c1892eceb574cf06b1f3c621355f5084f998cb501b5f87345e07 +dist/2026-01-20/cargo-beta-sparcv9-sun-solaris.tar.xz=29e4a58324e846421f10e33c7aaeb9bdf6bef646c59aade71468f29c4b16b789 +dist/2026-01-20/cargo-beta-x86_64-apple-darwin.tar.gz=8ed894b81f29b0a4d27333d0ed5e68de0e5f98163b5ce7a3e71c66e3b1cc2f12 +dist/2026-01-20/cargo-beta-x86_64-apple-darwin.tar.xz=52b7f245f126a55054aca75f61e44a29c5adbb80aa4524287d414703de8e8332 +dist/2026-01-20/cargo-beta-x86_64-pc-solaris.tar.gz=7bd13a3901013768bc18fa4a317c5998478a4ba2fcd865329fc2d29a39e5fe61 +dist/2026-01-20/cargo-beta-x86_64-pc-solaris.tar.xz=791386564dad9e76d2904311a5bbbd0383df8a8557d59e2f110a745d332eba75 +dist/2026-01-20/cargo-beta-x86_64-pc-windows-gnu.tar.gz=a4adf7a0298ffed28396c2863d8ed61d37255602295a34c5c7570c03221a85e2 +dist/2026-01-20/cargo-beta-x86_64-pc-windows-gnu.tar.xz=2e274955324ff915c569e9069e9a88ce6984803d3dc2d86d8f46b634b2ff0e42 +dist/2026-01-20/cargo-beta-x86_64-pc-windows-gnullvm.tar.gz=dfc4395f5415555772b1ac9de9b9c7ea27154ae74382a323c4878f5bd0775bcb +dist/2026-01-20/cargo-beta-x86_64-pc-windows-gnullvm.tar.xz=3b512d1cc1550612bf321a645752b46f6c13ac42ef2dfd010d44f678bacb2e44 +dist/2026-01-20/cargo-beta-x86_64-pc-windows-msvc.tar.gz=6c438b7e06c492118c41a990a16c7e369781e0d603482ac4af43c2e416edd52c +dist/2026-01-20/cargo-beta-x86_64-pc-windows-msvc.tar.xz=9c2c2d29221a02ed062d59bce2e66679c89e30a1b0fe06f66ffdd8d5aa6978f9 +dist/2026-01-20/cargo-beta-x86_64-unknown-freebsd.tar.gz=900cdde5911be20bff4ddb571b48584c2bc5d2aa86ef15f4c285a3f84a683e7c +dist/2026-01-20/cargo-beta-x86_64-unknown-freebsd.tar.xz=6b3143539a6d938a236364eb8c6b5a042f154daaa120e2ae00e7610c60e5e0a7 +dist/2026-01-20/cargo-beta-x86_64-unknown-illumos.tar.gz=b5444471825952571816fd9862fd395b24baf33afa7b029e6c86421dcd8c2093 +dist/2026-01-20/cargo-beta-x86_64-unknown-illumos.tar.xz=d5b06bba257688118366ee99b4f9f0e744236aca8a8b445146ff0875f84d2cc5 +dist/2026-01-20/cargo-beta-x86_64-unknown-linux-gnu.tar.gz=83876014627bddf2919ae79ba4f96bef45087691cfcaff7a9736d4c2ad9948a9 +dist/2026-01-20/cargo-beta-x86_64-unknown-linux-gnu.tar.xz=f6d9fb70437613afddad7b6ae5114173154167701ff532e3303a0af1212fc35e +dist/2026-01-20/cargo-beta-x86_64-unknown-linux-musl.tar.gz=d4614e938888253e68f38ef5fd3a78b243b068c6e4c675e7ba320a85dbfefb5c +dist/2026-01-20/cargo-beta-x86_64-unknown-linux-musl.tar.xz=05db3574910b1d8d6ae8ebd938008d8d38aeeb1e3b6b59dfbbad6cbeb1bca315 +dist/2026-01-20/cargo-beta-x86_64-unknown-netbsd.tar.gz=16b8c2c5e61f8ff700024e4dd958e93b6f1376e3a06f4d7184ce0849f1dd860a +dist/2026-01-20/cargo-beta-x86_64-unknown-netbsd.tar.xz=f8b0133051d851c42da4c774793b91c68e5073dfd51a7e55e7360bbadb034dc4 +dist/2026-01-20/clippy-beta-aarch64-apple-darwin.tar.gz=f7cfef036026ec14dc58c3ce72e247b2abfc3b14d77a69dfc66ca7c02dfac56e +dist/2026-01-20/clippy-beta-aarch64-apple-darwin.tar.xz=dc4af216099b3d12b0bec8914ad8dfd0bb0f0c6e09c98c54b0f0208a1aa63fc6 +dist/2026-01-20/clippy-beta-aarch64-pc-windows-gnullvm.tar.gz=dce2a442cccf2d571db1f57a44361ed4ee8fd1c6364a12d5fed2afa5c2bb03bb +dist/2026-01-20/clippy-beta-aarch64-pc-windows-gnullvm.tar.xz=232fc9cc1f2c49b893a139d4551b13acb439d06d0188c736439004dd0632f294 +dist/2026-01-20/clippy-beta-aarch64-pc-windows-msvc.tar.gz=fc62e5afc9d5f3feafdf666e4db4fe49b28df1e6155af1d4a2f72de82c923ee6 +dist/2026-01-20/clippy-beta-aarch64-pc-windows-msvc.tar.xz=880ae8ad600f0ec4fd5a6d8dfa581477d4e60f5d5c184e30e44f0f7b2254100d +dist/2026-01-20/clippy-beta-aarch64-unknown-linux-gnu.tar.gz=ccce4428c7962a7f0afa8e80a714a7b9b0377afe385330326c65ec819c7dbbdb +dist/2026-01-20/clippy-beta-aarch64-unknown-linux-gnu.tar.xz=30423c514d1f0ac7f091c4573bdefed369325107b34a8aaeb4d5c94c347e927a +dist/2026-01-20/clippy-beta-aarch64-unknown-linux-musl.tar.gz=d1b1c05f6f7dbcbb3aeff8db0138c4d06ff42d7db61fccacaebffeeea105fd9d +dist/2026-01-20/clippy-beta-aarch64-unknown-linux-musl.tar.xz=11e49da32d955bfad341153b4b0e929f0786d380a9e9480fe89e409a0c399eda +dist/2026-01-20/clippy-beta-aarch64-unknown-linux-ohos.tar.gz=6d2975db64417367af5216eb2c1d873e214e7fccf1ea74ce4a1ad92cc42f9f94 +dist/2026-01-20/clippy-beta-aarch64-unknown-linux-ohos.tar.xz=45d2c04bb0e80d9b6e3a0bb257d1d483837e423450d93beae96c99fc9fd8ce8b +dist/2026-01-20/clippy-beta-arm-unknown-linux-gnueabi.tar.gz=8000aa8009d7277981d9bd535947afb85a0002408e433db61332b1a4860492d9 +dist/2026-01-20/clippy-beta-arm-unknown-linux-gnueabi.tar.xz=5934f3238d15d6ad4c739d9a4583dd7ac1a66a767ed876c093becb87c7d3f568 +dist/2026-01-20/clippy-beta-arm-unknown-linux-gnueabihf.tar.gz=d7d2ee5e23e543fb75ccfd4329df70a9d41b4e567815034f83bf56110a55acf1 +dist/2026-01-20/clippy-beta-arm-unknown-linux-gnueabihf.tar.xz=d453d595d4af2106724441f381e77dadd4734aeff6f1040ed66e07ac8d7b7074 +dist/2026-01-20/clippy-beta-armv7-unknown-linux-gnueabihf.tar.gz=580508614f633e31e913443581ce17dbcc0e8778412b19ada22e80faa164ac58 +dist/2026-01-20/clippy-beta-armv7-unknown-linux-gnueabihf.tar.xz=b035f1890147e91f09f16dd4787df44f790b9fbd3089f784eadcc4a62969a79e +dist/2026-01-20/clippy-beta-i686-pc-windows-gnu.tar.gz=1ad03bd2b785f50261fc19204474ee99880dd0637e9cd7837eeb6f03c61ae822 +dist/2026-01-20/clippy-beta-i686-pc-windows-gnu.tar.xz=659adaa8aeb3155461989dae4d9de803652fe22a17add9257d44a60ef962e626 +dist/2026-01-20/clippy-beta-i686-pc-windows-msvc.tar.gz=2b1b31b8fc2e73630f2b457d2795a2b4dace68c69410c54571edc7f642c3ed34 +dist/2026-01-20/clippy-beta-i686-pc-windows-msvc.tar.xz=8071e38db44b00ea6d1b5fbf8428406d2a4138f0d05df2e0ebca245995ca508c +dist/2026-01-20/clippy-beta-i686-unknown-linux-gnu.tar.gz=76b77a78d8f28b0d71ad03b5c7a56574378a8e1a9366754197fcd278640430ca +dist/2026-01-20/clippy-beta-i686-unknown-linux-gnu.tar.xz=c70373e4e3bd2a2c5b2c98a26aadc3626adbe30365ebaa67d2c6754fecceb7be +dist/2026-01-20/clippy-beta-loongarch64-unknown-linux-gnu.tar.gz=a41df8095cb7587ba984b7bf1e2d1bf024c69ba3301f829ec1d1bdda1b8b4fc4 +dist/2026-01-20/clippy-beta-loongarch64-unknown-linux-gnu.tar.xz=ec6a573da42202239275c2fb0454016d213f0e4e2a6f923c8a27a576d586199a +dist/2026-01-20/clippy-beta-loongarch64-unknown-linux-musl.tar.gz=bf0fdb37814bf8e8917d6a282e6e3a243e28f6962b79159aea5e0bcedf16ebc6 +dist/2026-01-20/clippy-beta-loongarch64-unknown-linux-musl.tar.xz=c968aed1e04970f170b8a9350c69265eb9147ad12f1ef51b2e8b38994147f686 +dist/2026-01-20/clippy-beta-powerpc-unknown-linux-gnu.tar.gz=60e18cfc96bf3e31f019a4e8c9bc33b06931c3d0784c69ca06d26cba0bc780e3 +dist/2026-01-20/clippy-beta-powerpc-unknown-linux-gnu.tar.xz=a9e0907635db2ae0bf67aefb3f709266c6b538fb3c7dad1ba4401959a8a2eee7 +dist/2026-01-20/clippy-beta-powerpc64-unknown-linux-gnu.tar.gz=0bfbc082f733c5e11b85a96ae2261ac0eef097660f170f0b4d06602daeb08513 +dist/2026-01-20/clippy-beta-powerpc64-unknown-linux-gnu.tar.xz=de78563496c3017aa234783ea1d33693279870f7a4c7c20d197187a525762d81 +dist/2026-01-20/clippy-beta-powerpc64le-unknown-linux-gnu.tar.gz=1d657f6310b161ccac78f7b630e28a50620b1afbfb056a53cd94543a3e75ad30 +dist/2026-01-20/clippy-beta-powerpc64le-unknown-linux-gnu.tar.xz=edfe6128c0d45f69155605379a2f5684de11779c1f2778ed92c5ec428f293c34 +dist/2026-01-20/clippy-beta-powerpc64le-unknown-linux-musl.tar.gz=b3afd87d12e3117408b6e8047c20cded8400ea5c37a4eeb014b8a24b9dcf6cc6 +dist/2026-01-20/clippy-beta-powerpc64le-unknown-linux-musl.tar.xz=77391e9ac30a1e60f30b1893fffe5241ab2bcf7636d125dd71ff885dfac2b7c0 +dist/2026-01-20/clippy-beta-riscv64gc-unknown-linux-gnu.tar.gz=926303f213e55c98571e2f901491ab4d17f446ac6f45de356b6965093df54219 +dist/2026-01-20/clippy-beta-riscv64gc-unknown-linux-gnu.tar.xz=edd50203651d647ad23e1a729327d7ba9c8e9b6a27a0f4cc3142afa3517aeba8 +dist/2026-01-20/clippy-beta-s390x-unknown-linux-gnu.tar.gz=c04a8c4d6a04b204b2efc549e21ce06e72dbbffcd73ee33cb56eba6dc203086c +dist/2026-01-20/clippy-beta-s390x-unknown-linux-gnu.tar.xz=fa5b4a1c53b98885294572536e218eb9325491fed01af40f3c6383f8dbff5560 +dist/2026-01-20/clippy-beta-sparcv9-sun-solaris.tar.gz=95f86bc253baa53f720282f43274091cf43ca940e97eb349c4943068b5f0b458 +dist/2026-01-20/clippy-beta-sparcv9-sun-solaris.tar.xz=b605395af4e223ae367bf1beafbed1e956983997b48f81e71b5fdecf96268102 +dist/2026-01-20/clippy-beta-x86_64-apple-darwin.tar.gz=2b3b01bd6d6b8cc28e5562b5f1eb5349f738a5fd9a30476c951e318714b50ac9 +dist/2026-01-20/clippy-beta-x86_64-apple-darwin.tar.xz=11d1ce0a7246929e7cd15506d846a48f258d63eadbdaf24a451f1b70e1581467 +dist/2026-01-20/clippy-beta-x86_64-pc-solaris.tar.gz=4f57f33c563555eb7b4256116564a458b517cdc353adabb7bca41b592529e900 +dist/2026-01-20/clippy-beta-x86_64-pc-solaris.tar.xz=14243b22bcbec5b294be7c2844f55c4f1274a164c6cf012f3cb6164776069982 +dist/2026-01-20/clippy-beta-x86_64-pc-windows-gnu.tar.gz=74c09292424154c7ffb03a440eb46c0f71a37756002bcce5d0d14000ffd274c0 +dist/2026-01-20/clippy-beta-x86_64-pc-windows-gnu.tar.xz=4d902583e62f6355e786cc3f37a8d708cbff1ecaa1ab341b799f2b4b54b3b9aa +dist/2026-01-20/clippy-beta-x86_64-pc-windows-gnullvm.tar.gz=ef8f5a386a8749142c4039c31823f742f88db4d401b1d276a555d42ffbe353f3 +dist/2026-01-20/clippy-beta-x86_64-pc-windows-gnullvm.tar.xz=30cfea6a64414b471896d592756761c87646f06e6bfcd82e0c906c932b83b28f +dist/2026-01-20/clippy-beta-x86_64-pc-windows-msvc.tar.gz=0a302c0457662833894a3e55e6748a83fc787cabf756fc5a9d79412478694552 +dist/2026-01-20/clippy-beta-x86_64-pc-windows-msvc.tar.xz=ce09b46b20b7fce72a5e6081dc7ab98f5607b6a4145506f2d1d982ef7244bf1b +dist/2026-01-20/clippy-beta-x86_64-unknown-freebsd.tar.gz=d8bd34c3bff9fdd878631faf0597cd0c412c1057e1b49c0b7389d363b0da59e8 +dist/2026-01-20/clippy-beta-x86_64-unknown-freebsd.tar.xz=ff2be9e56354cc83444420b7273502b58043fb02c83903e02e84e51d92522d10 +dist/2026-01-20/clippy-beta-x86_64-unknown-illumos.tar.gz=ab0f8fa1b33d20d336dd0db526cff16524c701987bdbe337758be39d58e7f267 +dist/2026-01-20/clippy-beta-x86_64-unknown-illumos.tar.xz=495c84f3c712105152438428e0d9f021ea9ecba702622e09414b7f7e36a1db24 +dist/2026-01-20/clippy-beta-x86_64-unknown-linux-gnu.tar.gz=cf7303b5c60576390900a1fff488aa86a1c1c78a0bb120fbcb6b9af3bfd63811 +dist/2026-01-20/clippy-beta-x86_64-unknown-linux-gnu.tar.xz=803f29605e90e31c47e6ae33c3372f183738ec4492d284ef5f97e736aacbf739 +dist/2026-01-20/clippy-beta-x86_64-unknown-linux-musl.tar.gz=ae482a158faacc4553b57c8acf6e4662d4f1f903b69a22dfe69b1532315cc8f5 +dist/2026-01-20/clippy-beta-x86_64-unknown-linux-musl.tar.xz=bfe63363bd713b6ab862081a8208c4d8212a0aa542a603aaee595277e546f07e +dist/2026-01-20/clippy-beta-x86_64-unknown-netbsd.tar.gz=905da9ea5d1713ff3bd7b1997f20f4cad58f00c4a863b28164b42d738300a628 +dist/2026-01-20/clippy-beta-x86_64-unknown-netbsd.tar.xz=45f890606a33a3ca0cb07015df19d2e1862531100448f55ffa77f79c1f7b9751 +dist/2026-01-20/rust-beta-aarch64-pc-windows-gnullvm.msi=6d26fbdb64ee9c02e7794bf3b011e19ae1587a4cf5c5e78a5b8d0419a8a03547 +dist/2026-01-20/rust-beta-aarch64-pc-windows-msvc.msi=eb21e2dcd91047d24ea166385c429069703abcb23206cdd914b8f19390229101 +dist/2026-01-20/rust-beta-i686-pc-windows-gnu.msi=6eb532574513a21ac1a8d6d2839d17e7534a452adf37d944069d383d5769944a +dist/2026-01-20/rust-beta-i686-pc-windows-msvc.msi=77b733b05099cfa7c0073d7a748ec2bcc9f040d865897518e0f1786688e9b8d2 +dist/2026-01-20/rust-beta-x86_64-pc-windows-gnu.msi=1273f7f4055ee165476843034d5411e267729d4789dd439939582160d57f29f7 +dist/2026-01-20/rust-beta-x86_64-pc-windows-gnullvm.msi=b22d27a6b3db65eac75b8ad1cd3484bd344ec22c653b3ee939ea6e7649cd69a5 +dist/2026-01-20/rust-beta-x86_64-pc-windows-msvc.msi=5ccaf24b67a8096f1090e27a1c71ff69e721de076ea2fafbcc8f788988bd51d6 +dist/2026-01-20/rust-beta-aarch64-apple-darwin.pkg=5280c8dadec5a0bee55f4a682b20df0330369bce0eb1528036078e779248bf6f +dist/2026-01-20/rust-beta-x86_64-apple-darwin.pkg=51b525faa1b74c7d90b9a5b0858697d22aeb214e7d85c5dfb6d56cef1d2351d6 +dist/2026-01-20/rustc-beta-src.tar.gz=6737690a0fa28bcfdb154384a49428a7d752586f8e8ea22bd1e2029e6da2a2bc +dist/2026-01-20/rustc-beta-src.tar.xz=3184947f6744d0b049fcbc528f9cad6b0861daba8f883650d7cf0591e144d52e +dist/2026-01-21/rustfmt-nightly-aarch64-apple-darwin.tar.gz=affc4e2ba7673815113ebd077d40981b0eba06bd321f503b8fda8f4ad041993c +dist/2026-01-21/rustfmt-nightly-aarch64-apple-darwin.tar.xz=63ff46d1b84d4a5f0aae251fd6636fde72a9ead0f379bb5af709aa781f9010f0 +dist/2026-01-21/rustfmt-nightly-aarch64-pc-windows-gnullvm.tar.gz=37f974a21309fde6201af7f738cc243ee1f5d18f4f43833c5dec95623bc48681 +dist/2026-01-21/rustfmt-nightly-aarch64-pc-windows-gnullvm.tar.xz=a69d9654017ff44ec6cb0b2c47ba62c07f0ba114d1f50bb8322994d646f99c50 +dist/2026-01-21/rustfmt-nightly-aarch64-pc-windows-msvc.tar.gz=08bac0b794d237022227043b4bca1a94561eaad7f047dc050c2ddd9a638f9382 +dist/2026-01-21/rustfmt-nightly-aarch64-pc-windows-msvc.tar.xz=14919590f33efb9a005a7dedab82cd74d520799c46ecd9243a9c265a0d7fc7dc +dist/2026-01-21/rustfmt-nightly-aarch64-unknown-linux-gnu.tar.gz=d0047fc62080e4a30f398de07c2dda5f6b2c1b28afbf1acd6932d826cf111827 +dist/2026-01-21/rustfmt-nightly-aarch64-unknown-linux-gnu.tar.xz=18c1476d5052da02ea353a6b7881c9125231f044b1ed64edbf4a996ac5e677eb +dist/2026-01-21/rustfmt-nightly-aarch64-unknown-linux-musl.tar.gz=380ca0dfa172a5eb6f2f3e1254e4d4c2cf96518d991ca09a6c582cad8a8b9bf7 +dist/2026-01-21/rustfmt-nightly-aarch64-unknown-linux-musl.tar.xz=8c4aec7b93972e480b0ca9664fd231b47c4197ea0ae06ecbbf978aec7238b787 +dist/2026-01-21/rustfmt-nightly-aarch64-unknown-linux-ohos.tar.gz=68573867ceec9311464e45e31bb2e4b65d68eca62a488afc2309a40a3c1bb003 +dist/2026-01-21/rustfmt-nightly-aarch64-unknown-linux-ohos.tar.xz=affab0babcbb414de642817ae1f667c36e429e22d0db6e4dad62321fdb35b126 +dist/2026-01-21/rustfmt-nightly-arm-unknown-linux-gnueabi.tar.gz=435f927bcbc1a5b3625abcdb1c38aaaa26d8cae0928740b425246c92bf2427e0 +dist/2026-01-21/rustfmt-nightly-arm-unknown-linux-gnueabi.tar.xz=7d6482df5e8e0530f39e1661bc9ba56765512e800c1e2a387657f62c67fc4062 +dist/2026-01-21/rustfmt-nightly-arm-unknown-linux-gnueabihf.tar.gz=b7c509220780e000f6f5f21527d6faa4e53fc099aab70b566c2f6ae16a407caf +dist/2026-01-21/rustfmt-nightly-arm-unknown-linux-gnueabihf.tar.xz=c2a8ba39291834512596eb7861f486af6c6e34123da36c0030841f9fa0b8265f +dist/2026-01-21/rustfmt-nightly-armv7-unknown-linux-gnueabihf.tar.gz=7da502260349e6d6b7f79280f8973f1a5368821ab4bd88f92df7f2b04ccd0529 +dist/2026-01-21/rustfmt-nightly-armv7-unknown-linux-gnueabihf.tar.xz=0a0390f87cd6c3c8e522a8729ac836285521ac563afb6d3d1b42117ef846922b +dist/2026-01-21/rustfmt-nightly-i686-pc-windows-gnu.tar.gz=d19be564735e74a31cc3ce32afd0b19bb1e2bc8cda682661d8de179ae1c6daf4 +dist/2026-01-21/rustfmt-nightly-i686-pc-windows-gnu.tar.xz=ecc5e809442b3e775158d81a16844d9cccf89d48e5e404780459c4b9a3257d2a +dist/2026-01-21/rustfmt-nightly-i686-pc-windows-msvc.tar.gz=8a888e80fb00b3f7351848947a1f44f1a7fa63ca52c279c7da4067e0db6c3be2 +dist/2026-01-21/rustfmt-nightly-i686-pc-windows-msvc.tar.xz=dd3cdf3a1a3984e2e563bb83aa0e97548a5d02f10aa1d0da50127bc56869428d +dist/2026-01-21/rustfmt-nightly-i686-unknown-linux-gnu.tar.gz=8670a561b2c7e356415d930b3ddbb561c6957351cb4bc048a804edc14a92a308 +dist/2026-01-21/rustfmt-nightly-i686-unknown-linux-gnu.tar.xz=51899130ab87607e203a6c9f27f0c22ad34642e6df40df2ab77f4863b582697e +dist/2026-01-21/rustfmt-nightly-loongarch64-unknown-linux-gnu.tar.gz=1485f91c3cefeeab023faef5a8b93f7c2af91d4c47d5ac79683ff58f7c1557c1 +dist/2026-01-21/rustfmt-nightly-loongarch64-unknown-linux-gnu.tar.xz=05a3d5b87af407b42f6985b84515463d924b8af126cb927f57de5e1bc0f8ab07 +dist/2026-01-21/rustfmt-nightly-loongarch64-unknown-linux-musl.tar.gz=def8a13af57f5a8603b3efad06031a78ad8b0ff111123970594ed61c52a28e9a +dist/2026-01-21/rustfmt-nightly-loongarch64-unknown-linux-musl.tar.xz=f4b47d15291cf78830c88d5bb404035f9ce5dffbb5b6bc79ea987ae0995b3e30 +dist/2026-01-21/rustfmt-nightly-powerpc-unknown-linux-gnu.tar.gz=8d4574b8a8407d0740ef3978ef6ee44f59fc7586893ad76ad176785ca12f091d +dist/2026-01-21/rustfmt-nightly-powerpc-unknown-linux-gnu.tar.xz=f59e764f38cfcfc620f522f99be7fa2ed36ef23b8d45887da78839afb0a91083 +dist/2026-01-21/rustfmt-nightly-powerpc64-unknown-linux-gnu.tar.gz=2a98d3ac86e927646884c50338fc87ef218ea026c5b3ff1a899bccb6ed67a4d3 +dist/2026-01-21/rustfmt-nightly-powerpc64-unknown-linux-gnu.tar.xz=6b282883509ff1b1b74e7e484f124018e5044dc13e83cd626a12690577be9a02 +dist/2026-01-21/rustfmt-nightly-powerpc64le-unknown-linux-gnu.tar.gz=b18dc4ee75f208fabf5fd5765572d33bc7f8862fefc1628bcd61438e83ab525f +dist/2026-01-21/rustfmt-nightly-powerpc64le-unknown-linux-gnu.tar.xz=d1b158a365a28d440459aeeff4154106d7e340db2b64f2defc53c6b102d839c0 +dist/2026-01-21/rustfmt-nightly-powerpc64le-unknown-linux-musl.tar.gz=62eff4eac793fd4b4e4ccd377e9d6925812a65196e5d17b6c80aca7b2387b624 +dist/2026-01-21/rustfmt-nightly-powerpc64le-unknown-linux-musl.tar.xz=fd95f22a380c281cfa919c45d060418d753923cc14dfc4f13885ba9aa23425ef +dist/2026-01-21/rustfmt-nightly-riscv64gc-unknown-linux-gnu.tar.gz=f139664d1bb30c7c0e01ebe66c0a24372fa22c95f32d49e9d4422c36eb83005b +dist/2026-01-21/rustfmt-nightly-riscv64gc-unknown-linux-gnu.tar.xz=00317b285892b5f294db45957214cea31b7cbf238c329b752fe6b38d89a74574 +dist/2026-01-21/rustfmt-nightly-s390x-unknown-linux-gnu.tar.gz=29e9bb3622b98e198fb552ba83de4c54b60c60ee3a06824eff9e814ebf5b4f78 +dist/2026-01-21/rustfmt-nightly-s390x-unknown-linux-gnu.tar.xz=8fd331c828e5a4b9b0ed29c4931b299d08464db303985398f466aee05f214338 +dist/2026-01-21/rustfmt-nightly-sparcv9-sun-solaris.tar.gz=3f590d494a001ddeeab24ca3754a8344b0397839cf3df82d6ab571804910a9b7 +dist/2026-01-21/rustfmt-nightly-sparcv9-sun-solaris.tar.xz=ad4a1b9d2446cb037cd1429c77781473c2c50892fa3e3c97a15abf4a34952a95 +dist/2026-01-21/rustfmt-nightly-x86_64-apple-darwin.tar.gz=ac4b6f7d51288d756765fa72faff773a5f57681ffed9b9230db3f116f4b1ce5e +dist/2026-01-21/rustfmt-nightly-x86_64-apple-darwin.tar.xz=e8dc9b7c5230e2fcff79cc78da9e426cf46e3b0925524e672376ca454d928aea +dist/2026-01-21/rustfmt-nightly-x86_64-pc-solaris.tar.gz=300937f554725ab7faa68bdc37655c93a40c49dc29a9a2706f188ecd26fdd76b +dist/2026-01-21/rustfmt-nightly-x86_64-pc-solaris.tar.xz=6c5c7d56a4434cf282499a6c7e6c6aa6029313a1fb92a6d09e6a42d4b11df2e1 +dist/2026-01-21/rustfmt-nightly-x86_64-pc-windows-gnu.tar.gz=297c396dc372f7e5230c012c082d45b322adf7ef959d560d213cc338d556eb60 +dist/2026-01-21/rustfmt-nightly-x86_64-pc-windows-gnu.tar.xz=43b9f55634b0d276d348271696f024ad01744ab96a8d5ac66b88bd9f7c471efa +dist/2026-01-21/rustfmt-nightly-x86_64-pc-windows-gnullvm.tar.gz=40330c41b78296e15401f48732b8de62120085c5455bef223906f220919506b1 +dist/2026-01-21/rustfmt-nightly-x86_64-pc-windows-gnullvm.tar.xz=e437a17c2aecfa01c35ae3a2cbd199b0dc6b6c1039be7e45b089e05ae5cabaee +dist/2026-01-21/rustfmt-nightly-x86_64-pc-windows-msvc.tar.gz=7915476f152fd05c8b1b3f2114a2762fa2241ec873e40a817bc478934ed5b631 +dist/2026-01-21/rustfmt-nightly-x86_64-pc-windows-msvc.tar.xz=931f4b5d7028e34fe56b01d4f6d2796fad15e99868054390d0b0e929b96a794a +dist/2026-01-21/rustfmt-nightly-x86_64-unknown-freebsd.tar.gz=0246e43067b01d5418926c978da82d99341610ab6449911993bb92b4934f2bbb +dist/2026-01-21/rustfmt-nightly-x86_64-unknown-freebsd.tar.xz=18dd4a5564dadaa55e3ce102cefc98ebcfaaf5aa8d51e5176ef6419be45efaab +dist/2026-01-21/rustfmt-nightly-x86_64-unknown-illumos.tar.gz=ad3c0773583835431b7b284005ca0cc859b27e1bc7a68201746bd969af16755d +dist/2026-01-21/rustfmt-nightly-x86_64-unknown-illumos.tar.xz=528856180a0b335f1fe28e10021a921ceaca8db61fb98d2d732831dff0bc3467 +dist/2026-01-21/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.gz=2e517f4312bc3fe31ed294fea9df818bd271f8d97b094a199275c8c229284c69 +dist/2026-01-21/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.xz=69a37d60e9de3e3e718e08d31b7c5807c06d482e9d3b1d0679571493e9cd26db +dist/2026-01-21/rustfmt-nightly-x86_64-unknown-linux-musl.tar.gz=ee8cf1139bd721c7e1d8bf2755ca1778e2d324d117c714c06ab1e9fa3af5c27a +dist/2026-01-21/rustfmt-nightly-x86_64-unknown-linux-musl.tar.xz=032bfb8c944a2edf113703a8154bc2fd27a73112a6f5fcd6cd137617df1d0966 +dist/2026-01-21/rustfmt-nightly-x86_64-unknown-netbsd.tar.gz=93f89369e38d2f452ec887b1c6e5e987320ebde2675613e8f370ce46adcb2e6d +dist/2026-01-21/rustfmt-nightly-x86_64-unknown-netbsd.tar.xz=e6db8c3bcd35c942ff6b97e600f5021c57c8da8b0523f93d4367de27a1e19d28 +dist/2026-01-21/rustc-nightly-aarch64-apple-darwin.tar.gz=05ca50a36c2b8681ba6467f71800942da3120ed74b80f25a9a53f859fb2c4cca +dist/2026-01-21/rustc-nightly-aarch64-apple-darwin.tar.xz=aefda689c6c6aed7eb68ca8acac0809c1cbbbb35fa96e60f50bf79a0f80147f8 +dist/2026-01-21/rustc-nightly-aarch64-pc-windows-gnullvm.tar.gz=9554e05afa28b776f85b50100582d1287320046612eebd1b1e1eb9e99b425559 +dist/2026-01-21/rustc-nightly-aarch64-pc-windows-gnullvm.tar.xz=fb0d1852343fbd21b94001729f9185202c704a3f0ce387079225112ed1795b36 +dist/2026-01-21/rustc-nightly-aarch64-pc-windows-msvc.tar.gz=795158ddd8aaf40878fb477145f327c91f3c51cad195272f80e693488ca815e5 +dist/2026-01-21/rustc-nightly-aarch64-pc-windows-msvc.tar.xz=d816aa3f7b5f81550f02982300b9b0d8c258d1ed5a1dac837e45db1067eee984 +dist/2026-01-21/rustc-nightly-aarch64-unknown-linux-gnu.tar.gz=62852a17246080ae06159eaa290910fefc5a6ad43e3e801e348a1e04998b2002 +dist/2026-01-21/rustc-nightly-aarch64-unknown-linux-gnu.tar.xz=ce688272bec1372fd1c27c5e6c228c1a6696376ed33c034da7070fa0353c1c5c +dist/2026-01-21/rustc-nightly-aarch64-unknown-linux-musl.tar.gz=1d6c4f926c4fd7f09b4bff2f0754191fc94758fd80dec401a18b6f5cac907ac2 +dist/2026-01-21/rustc-nightly-aarch64-unknown-linux-musl.tar.xz=1f75d8d3e04da5d44770b45073fc71bf54d08a079a9aeba34effa7e620e4ffdd +dist/2026-01-21/rustc-nightly-aarch64-unknown-linux-ohos.tar.gz=312ffa2180b4f0e99d577e584a8c8e89ec763d83ea3347b3c905e5bd0871e0c9 +dist/2026-01-21/rustc-nightly-aarch64-unknown-linux-ohos.tar.xz=7dbdc7c25ef72dd904d7565b8d4b038dcfb51ea451107ab100027a6e8dccae88 +dist/2026-01-21/rustc-nightly-arm-unknown-linux-gnueabi.tar.gz=628f2ef937685ec2642fc49b834bd30fcc1c64ad6019feb659877e20b3e3884d +dist/2026-01-21/rustc-nightly-arm-unknown-linux-gnueabi.tar.xz=bad0dc6b0454ab24527aed9640fc68f422ec3efbe7fe7d9c4c07fa273d3915a7 +dist/2026-01-21/rustc-nightly-arm-unknown-linux-gnueabihf.tar.gz=a2635ca207aa8461296a6b40283f92865ddb15b95927ccb28eee332fb9d1e9bd +dist/2026-01-21/rustc-nightly-arm-unknown-linux-gnueabihf.tar.xz=9558ef1d896813b02203b5b5f784627d74a678c62fc7f3580b5d2a4bfda9ed44 +dist/2026-01-21/rustc-nightly-armv7-unknown-linux-gnueabihf.tar.gz=fa8e5603562a361dc2335e4aed12dc9d997ef53a0eb6ad6fd9503a70d2816f7a +dist/2026-01-21/rustc-nightly-armv7-unknown-linux-gnueabihf.tar.xz=3f6f152fd6f8dc3dd9ee204f4ee1408a82a619e817c08c739b90c56d992fa3f6 +dist/2026-01-21/rustc-nightly-i686-pc-windows-gnu.tar.gz=f1bcd3ef4d74260eac3fec3ab623c5bdb506c5ebd506602957601e24c11516b0 +dist/2026-01-21/rustc-nightly-i686-pc-windows-gnu.tar.xz=29f5072a55299a2a93a2842318608735967e46b744af550aa19fc6b43ebce2f0 +dist/2026-01-21/rustc-nightly-i686-pc-windows-msvc.tar.gz=77001ad2709e35f22be3410afcb061d060eee6d2a7690ad93371d85c77163d87 +dist/2026-01-21/rustc-nightly-i686-pc-windows-msvc.tar.xz=88d617bef85fc9b99d730346f22a884363db3f111e1301d9fe0f807966e13bd3 +dist/2026-01-21/rustc-nightly-i686-unknown-linux-gnu.tar.gz=a8dd200f6f6df430c023707797f3793670d0e5df1f71d74edc67c300c9ea9ee7 +dist/2026-01-21/rustc-nightly-i686-unknown-linux-gnu.tar.xz=c7578f1360c23af97bdd3d76b802f0ab5da289f1000f49909803a5aa957ab2b6 +dist/2026-01-21/rustc-nightly-loongarch64-unknown-linux-gnu.tar.gz=ebdbe1939f4fe80b7b90222eac5a76dcf40c99dff11342cd3f8b4af32d5e85e3 +dist/2026-01-21/rustc-nightly-loongarch64-unknown-linux-gnu.tar.xz=4c8894c0c888075cb54834b00250871ca8c71d42d1ad2bded20e8678deff3683 +dist/2026-01-21/rustc-nightly-loongarch64-unknown-linux-musl.tar.gz=40851b65b3ab065ddf184096ed58b8deddd80bc33047f5d4524361ef99123f16 +dist/2026-01-21/rustc-nightly-loongarch64-unknown-linux-musl.tar.xz=657f707ea176d03b36bc73abedc8947c6f1b47e8836f8154a21770273fa05bd8 +dist/2026-01-21/rustc-nightly-powerpc-unknown-linux-gnu.tar.gz=4cec47f661bd413f415a21f0951a028f2f7aecd22cb708713f08a7ea1d5828fe +dist/2026-01-21/rustc-nightly-powerpc-unknown-linux-gnu.tar.xz=f9984bf28f179296a1d66de91920c5b6e482430f3aab278db82fb8d4a6b96e00 +dist/2026-01-21/rustc-nightly-powerpc64-unknown-linux-gnu.tar.gz=8433b87fb9d5f257e4439f2d5db3559b9c54dcf7f504331b1f9e10b4290e3d61 +dist/2026-01-21/rustc-nightly-powerpc64-unknown-linux-gnu.tar.xz=e84f672d2e4cc6a6e3d13e1cf429f498fe64327bb85e82d6437cdd527332b462 +dist/2026-01-21/rustc-nightly-powerpc64le-unknown-linux-gnu.tar.gz=981e05ff04a005d193d2f5feb12656f2bd5d2dbad4e8bf7d40421eafe52b7f44 +dist/2026-01-21/rustc-nightly-powerpc64le-unknown-linux-gnu.tar.xz=fa05d796d40ecc3b8d552f86c690b465044462b0820cd3774eb8957c1fc05c99 +dist/2026-01-21/rustc-nightly-powerpc64le-unknown-linux-musl.tar.gz=74dd0095d0ac98a29b217728edd3cb1f521ab59fbc2a3927281d26cfbc5d5829 +dist/2026-01-21/rustc-nightly-powerpc64le-unknown-linux-musl.tar.xz=4a4f61d37ae4f9a2c26069cd6422acdbb3ee43a6a4b4e32a20ca76a855a5b40f +dist/2026-01-21/rustc-nightly-riscv64gc-unknown-linux-gnu.tar.gz=1038bec45e312d6c7c5802914ee31603fe0a14628786c216ef4feef0399ccb26 +dist/2026-01-21/rustc-nightly-riscv64gc-unknown-linux-gnu.tar.xz=534d286cb8b5131e34263edb189253f4f83c4274678017d4161c92ddcd2b925c +dist/2026-01-21/rustc-nightly-s390x-unknown-linux-gnu.tar.gz=01c14dda8ba60125208377dffbfecd074ef9c42acd21a1cd330a6b772d419e6a +dist/2026-01-21/rustc-nightly-s390x-unknown-linux-gnu.tar.xz=d52e035c78aec546b820dd085ddc097dc30b111ce6b6616751f15e60a294e7c1 +dist/2026-01-21/rustc-nightly-sparcv9-sun-solaris.tar.gz=c0abaeca6731e2c0b2d6437bc3d7c0c240cabc6373773a5c53614c6170c82d91 +dist/2026-01-21/rustc-nightly-sparcv9-sun-solaris.tar.xz=6dbfcee73e53c92e7f80e81bae9c86da392ff46667867bec5a5eb771b734c52a +dist/2026-01-21/rustc-nightly-x86_64-apple-darwin.tar.gz=0a5c541c832312723e6d1ca0dca655f380118c57d29d1629310bdfd116628a98 +dist/2026-01-21/rustc-nightly-x86_64-apple-darwin.tar.xz=78f631995200a5a48156321ad3abb8d97983080134c2404681a48b5007dda2c3 +dist/2026-01-21/rustc-nightly-x86_64-pc-solaris.tar.gz=fe0d0240075ba8545845323c1966cac7c45d14f34f5fdee547e1b1c3847e3453 +dist/2026-01-21/rustc-nightly-x86_64-pc-solaris.tar.xz=09a3e0be0f2bc5ab6af1726e479150be43b7dd9e3bd459998d7bdb30a4f16b73 +dist/2026-01-21/rustc-nightly-x86_64-pc-windows-gnu.tar.gz=7ca059132ba0615d17b6c32f5f74b86bdceac13940198cb6b9b6bb0b821db118 +dist/2026-01-21/rustc-nightly-x86_64-pc-windows-gnu.tar.xz=93aad27c0870881af1f58e91e4015fd3ef6c023fcf9877b34c301e5c0a23b4cb +dist/2026-01-21/rustc-nightly-x86_64-pc-windows-gnullvm.tar.gz=a731ea06a52953dd1741be00ec0d9c651080c1725c9298f22afcce2500bb74e4 +dist/2026-01-21/rustc-nightly-x86_64-pc-windows-gnullvm.tar.xz=81cb2094a2aa287cf940bc637990771b3243434f54523dfe5133ad476967cf30 +dist/2026-01-21/rustc-nightly-x86_64-pc-windows-msvc.tar.gz=cfb755273c592a5bce52728454eb4b880022e2ee6cecec9f9f4206599ea0ee5d +dist/2026-01-21/rustc-nightly-x86_64-pc-windows-msvc.tar.xz=2d3ded1d4a048146a56182d106fe82a6357fdf688921701fa2d1a93733a05eb9 +dist/2026-01-21/rustc-nightly-x86_64-unknown-freebsd.tar.gz=49355564096356792020a1fef64a3e413f35790e40b572e36e26307c38fad144 +dist/2026-01-21/rustc-nightly-x86_64-unknown-freebsd.tar.xz=2178ff7a29f514adc3cbd93940956fa397611e90ab51da87b5087071512bb15f +dist/2026-01-21/rustc-nightly-x86_64-unknown-illumos.tar.gz=1851080c6461ab09568fa537f604dfba79bc55e06b434029d69445d8963b1f27 +dist/2026-01-21/rustc-nightly-x86_64-unknown-illumos.tar.xz=a6d4ddfd1985471c05bd70d18a56da3afae4039c2680813338e1189b1240d28b +dist/2026-01-21/rustc-nightly-x86_64-unknown-linux-gnu.tar.gz=40b6c623ded8ea06fbb97303cdf8a8c1fbf3bf16ca38bfda8b7e118480c6fb1f +dist/2026-01-21/rustc-nightly-x86_64-unknown-linux-gnu.tar.xz=8ac14c7783ca3e8b4fa8fb7df22f3950418c7a37ddb1f327d336de72e25e92b9 +dist/2026-01-21/rustc-nightly-x86_64-unknown-linux-musl.tar.gz=2bd8b16b8632b290516dd1638ce088905d06784fb638eb765ab0b7ed6a9d6528 +dist/2026-01-21/rustc-nightly-x86_64-unknown-linux-musl.tar.xz=5e7fd38662525448b8d223be07894bf600686c2bc28d926074967d9717b14063 +dist/2026-01-21/rustc-nightly-x86_64-unknown-netbsd.tar.gz=e5d06dce9f4659a7ceb9ad5f88226e447c5e095a2944d0727b475d9990d7d7b6 +dist/2026-01-21/rustc-nightly-x86_64-unknown-netbsd.tar.xz=48f8198fe59877d31cdb01d6560fda88e3a194a75eb4c664b5397061ca877f3d +dist/2026-01-21/rust-nightly-aarch64-pc-windows-gnullvm.msi=003330d02b7ccdf87a54aef9afe5d5d164f433ceec98d7f8e22ed8349f5c07a6 +dist/2026-01-21/rust-nightly-aarch64-pc-windows-msvc.msi=ab2d63a49e1d9c3c9fb2e5b59fb456b022680adf6b0707ee2223a4fb4eb66aaf +dist/2026-01-21/rust-nightly-i686-pc-windows-gnu.msi=fff10ea8984cee03280c4b10d2f6c740a88d26216aea661ee67580c64f69e8f2 +dist/2026-01-21/rust-nightly-i686-pc-windows-msvc.msi=f78b7b22d7505e361201ac502596e9cddf04a625af287801c89b8e46908f82fe +dist/2026-01-21/rust-nightly-x86_64-pc-windows-gnu.msi=f26775794a4079aa09bdd69706c6d3b8b5c67d4264a1859302939f2a647b6d88 +dist/2026-01-21/rust-nightly-x86_64-pc-windows-gnullvm.msi=114a595e1091daa04a3652a0c8b2dd21992848118bdacba4b076ea28f8e7dbd9 +dist/2026-01-21/rust-nightly-x86_64-pc-windows-msvc.msi=2813a6cf26e45fff004e2f531d61d1cb08187ebf0f3c6395d017a4c5e3ce5032 +dist/2026-01-21/rust-nightly-aarch64-apple-darwin.pkg=17093b3b31ec58273f7bbd52014436ed001b14ff76dabd1df4018d9a8e95e0ca +dist/2026-01-21/rust-nightly-x86_64-apple-darwin.pkg=e758c7a74f3599f2bd10a58c78b8d0a60bcfe356b87d65c8430081556f0b4cdd +dist/2026-01-21/rustc-nightly-src.tar.gz=0af498197bb5c995f078770a208c609b60baf20b27fa54c5888d9e38c66bcf8e +dist/2026-01-21/rustc-nightly-src.tar.xz=2e44bad1f973ebe58ae463559752d7e2a93511927e847957867ee781140b15bc diff --git a/src/tools/clippy/clippy_lints/src/lib.rs b/src/tools/clippy/clippy_lints/src/lib.rs index ae236ac25de79..a5e5ecb5fa190 100644 --- a/src/tools/clippy/clippy_lints/src/lib.rs +++ b/src/tools/clippy/clippy_lints/src/lib.rs @@ -1,4 +1,3 @@ -#![cfg_attr(bootstrap, feature(array_windows))] #![feature(box_patterns)] #![feature(macro_metavar_expr_concat)] #![feature(f128)] diff --git a/src/tools/clippy/clippy_utils/src/lib.rs b/src/tools/clippy/clippy_utils/src/lib.rs index 9b6a9937b8ac7..7e3b1ccd224e8 100644 --- a/src/tools/clippy/clippy_utils/src/lib.rs +++ b/src/tools/clippy/clippy_utils/src/lib.rs @@ -5,7 +5,6 @@ #![feature(rustc_private)] #![feature(assert_matches)] #![feature(unwrap_infallible)] -#![cfg_attr(bootstrap, feature(array_windows))] #![recursion_limit = "512"] #![allow( clippy::missing_errors_doc, diff --git a/tests/ui/attributes/crate-type-delimited.stderr b/tests/ui/attributes/crate-type-delimited.stderr index e9616f27174c8..a31d8dadc66e1 100644 --- a/tests/ui/attributes/crate-type-delimited.stderr +++ b/tests/ui/attributes/crate-type-delimited.stderr @@ -1,10 +1,11 @@ -error: malformed `crate_type` attribute input +error[E0539]: malformed `crate_type` attribute input --> $DIR/crate-type-delimited.rs:2:1 | LL | #![crate_type(lib)] - | ^^^^^^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#![crate_type = "crate type"]` | = note: for more information, visit error: aborting due to 1 previous error +For more information about this error, try `rustc --explain E0539`. diff --git a/tests/ui/attributes/crate-type-empty.stderr b/tests/ui/attributes/crate-type-empty.stderr index b8eca61748ead..bc085b8c7c07e 100644 --- a/tests/ui/attributes/crate-type-empty.stderr +++ b/tests/ui/attributes/crate-type-empty.stderr @@ -1,10 +1,11 @@ -error: malformed `crate_type` attribute input +error[E0539]: malformed `crate_type` attribute input --> $DIR/crate-type-empty.rs:2:1 | LL | #![crate_type] - | ^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^ help: must be of the form: `#![crate_type = "crate type"]` | = note: for more information, visit error: aborting due to 1 previous error +For more information about this error, try `rustc --explain E0539`. diff --git a/tests/ui/attributes/crate-type-macro-call.rs b/tests/ui/attributes/crate-type-macro-call.rs index 9ba5e79ba947a..0d074422d951c 100644 --- a/tests/ui/attributes/crate-type-macro-call.rs +++ b/tests/ui/attributes/crate-type-macro-call.rs @@ -1,4 +1,5 @@ -#![crate_type = foo!()] //~ ERROR malformed `crate_type` attribute +#![crate_type = foo!()] +//~^ ERROR attribute value must be a literal macro_rules! foo { () => {"rlib"}; diff --git a/tests/ui/attributes/crate-type-macro-call.stderr b/tests/ui/attributes/crate-type-macro-call.stderr index b3927fef47183..690f09984710c 100644 --- a/tests/ui/attributes/crate-type-macro-call.stderr +++ b/tests/ui/attributes/crate-type-macro-call.stderr @@ -1,10 +1,8 @@ -error: malformed `crate_type` attribute input - --> $DIR/crate-type-macro-call.rs:1:1 +error: attribute value must be a literal + --> $DIR/crate-type-macro-call.rs:1:17 | LL | #![crate_type = foo!()] - | ^^^^^^^^^^^^^^^^^^^^^^^ - | - = note: for more information, visit + | ^^^^^^ error: aborting due to 1 previous error diff --git a/tests/ui/attributes/crate-type-macro-empty.rs b/tests/ui/attributes/crate-type-macro-empty.rs index cfc71e6b938f2..d55074ed686cb 100644 --- a/tests/ui/attributes/crate-type-macro-empty.rs +++ b/tests/ui/attributes/crate-type-macro-empty.rs @@ -1,7 +1,7 @@ // Tests for the issue in #137589 #[crate_type = foo!()] //~^ ERROR cannot find macro `foo` in this scope -//~| WARN crate-level attribute should be an inner attribute +//~| ERROR attribute value must be a literal macro_rules! foo {} //~ ERROR macros must contain at least one rule diff --git a/tests/ui/attributes/crate-type-macro-empty.stderr b/tests/ui/attributes/crate-type-macro-empty.stderr index 0c2c4cf2a9b2d..2e24a99722879 100644 --- a/tests/ui/attributes/crate-type-macro-empty.stderr +++ b/tests/ui/attributes/crate-type-macro-empty.stderr @@ -16,17 +16,11 @@ note: a macro with the same name exists, but it appears later LL | macro_rules! foo {} | ^^^ -warning: crate-level attribute should be an inner attribute - --> $DIR/crate-type-macro-empty.rs:2:1 +error: attribute value must be a literal + --> $DIR/crate-type-macro-empty.rs:2:16 | LL | #[crate_type = foo!()] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: requested on the command line with `-W unused-attributes` -help: add a `!` - | -LL | #![crate_type = foo!()] - | + + | ^^^^^^ -error: aborting due to 2 previous errors; 1 warning emitted +error: aborting due to 3 previous errors diff --git a/tests/ui/attributes/crate-type-macro-not-found.rs b/tests/ui/attributes/crate-type-macro-not-found.rs index b9f05fa7caa13..eac7809445728 100644 --- a/tests/ui/attributes/crate-type-macro-not-found.rs +++ b/tests/ui/attributes/crate-type-macro-not-found.rs @@ -1,6 +1,7 @@ // Tests for the issue in #137589 -#[crate_type = foo!()] //~ ERROR cannot find macro `foo` in this scope -//~| WARN crate-level attribute should be an inner attribute +#[crate_type = foo!()] +//~^ ERROR cannot find macro `foo` in this scope +//~| ERROR attribute value must be a literal macro_rules! foo { ($x:expr) => {"rlib"} diff --git a/tests/ui/attributes/crate-type-macro-not-found.stderr b/tests/ui/attributes/crate-type-macro-not-found.stderr index 7b8c6a8083497..9db7f7f6ec0bc 100644 --- a/tests/ui/attributes/crate-type-macro-not-found.stderr +++ b/tests/ui/attributes/crate-type-macro-not-found.stderr @@ -5,22 +5,16 @@ LL | #[crate_type = foo!()] | ^^^ consider moving the definition of `foo` before this call | note: a macro with the same name exists, but it appears later - --> $DIR/crate-type-macro-not-found.rs:5:14 + --> $DIR/crate-type-macro-not-found.rs:6:14 | LL | macro_rules! foo { | ^^^ -warning: crate-level attribute should be an inner attribute - --> $DIR/crate-type-macro-not-found.rs:2:1 +error: attribute value must be a literal + --> $DIR/crate-type-macro-not-found.rs:2:16 | LL | #[crate_type = foo!()] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: requested on the command line with `-W unused-attributes` -help: add a `!` - | -LL | #![crate_type = foo!()] - | + + | ^^^^^^ -error: aborting due to 1 previous error; 1 warning emitted +error: aborting due to 2 previous errors diff --git a/tests/ui/attributes/crate-type-non-crate.rs b/tests/ui/attributes/crate-type-non-crate.rs new file mode 100644 index 0000000000000..bd667b4b0a453 --- /dev/null +++ b/tests/ui/attributes/crate-type-non-crate.rs @@ -0,0 +1,19 @@ +//! Test the behavior of various malformed `crate_type` attributes applied to a non-crate target. +#![allow(unused_attributes)] + +// No arguments +#[crate_type] //~ ERROR malformed `crate_type` attribute input +// List/NameValue with/without strings +#[crate_type(lib)] //~ ERROR malformed `crate_type` attribute input +#[crate_type("lib")] //~ ERROR malformed `crate_type` attribute input +#[crate_type = lib] //~ ERROR attribute value must be a literal +#[crate_type = "lib"] // OK +// Same as above but with invalid names +#[crate_type(foo)] //~ ERROR malformed `crate_type` attribute input +#[crate_type("foo")] //~ ERROR malformed `crate_type` attribute input +#[crate_type = foo] //~ ERROR attribute value must be a literal +#[crate_type = "foo"] // OK - we don't report errors on invalid crate types here +// Non-string literals +#[crate_type(1)] //~ ERROR malformed `crate_type` attribute input +#[crate_type = 1] //~ ERROR malformed `crate_type` attribute input +fn main() {} diff --git a/tests/ui/attributes/crate-type-non-crate.stderr b/tests/ui/attributes/crate-type-non-crate.stderr new file mode 100644 index 0000000000000..03bafeaf5ebd2 --- /dev/null +++ b/tests/ui/attributes/crate-type-non-crate.stderr @@ -0,0 +1,74 @@ +error[E0539]: malformed `crate_type` attribute input + --> $DIR/crate-type-non-crate.rs:5:1 + | +LL | #[crate_type] + | ^^^^^^^^^^^^^ help: must be of the form: `#[crate_type = "crate type"]` + | + = note: for more information, visit + +error[E0539]: malformed `crate_type` attribute input + --> $DIR/crate-type-non-crate.rs:7:1 + | +LL | #[crate_type(lib)] + | ^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[crate_type = "crate type"]` + | + = note: for more information, visit + +error[E0539]: malformed `crate_type` attribute input + --> $DIR/crate-type-non-crate.rs:8:1 + | +LL | #[crate_type("lib")] + | ^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[crate_type = "crate type"]` + | + = note: for more information, visit + +error: attribute value must be a literal + --> $DIR/crate-type-non-crate.rs:9:16 + | +LL | #[crate_type = lib] + | ^^^ + +error[E0539]: malformed `crate_type` attribute input + --> $DIR/crate-type-non-crate.rs:12:1 + | +LL | #[crate_type(foo)] + | ^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[crate_type = "crate type"]` + | + = note: for more information, visit + +error[E0539]: malformed `crate_type` attribute input + --> $DIR/crate-type-non-crate.rs:13:1 + | +LL | #[crate_type("foo")] + | ^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[crate_type = "crate type"]` + | + = note: for more information, visit + +error: attribute value must be a literal + --> $DIR/crate-type-non-crate.rs:14:16 + | +LL | #[crate_type = foo] + | ^^^ + +error[E0539]: malformed `crate_type` attribute input + --> $DIR/crate-type-non-crate.rs:17:1 + | +LL | #[crate_type(1)] + | ^^^^^^^^^^^^^^^^ help: must be of the form: `#[crate_type = "crate type"]` + | + = note: for more information, visit + +error[E0539]: malformed `crate_type` attribute input + --> $DIR/crate-type-non-crate.rs:18:1 + | +LL | #[crate_type = 1] + | ^^^^^^^^^^^^^^^-^ + | | | + | | expected a string literal here + | help: must be of the form: `#[crate_type = "crate type"]` + | + = note: for more information, visit + +error: aborting due to 9 previous errors + +For more information about this error, try `rustc --explain E0539`. diff --git a/tests/ui/consts/control-flow/issue-50577.rs b/tests/ui/consts/control-flow/issue-50577.rs index beb9a44fca52d..1cecbadbbe635 100644 --- a/tests/ui/consts/control-flow/issue-50577.rs +++ b/tests/ui/consts/control-flow/issue-50577.rs @@ -1,6 +1,6 @@ fn main() { enum Foo { Drop = assert_eq!(1, 1), - //~^ ERROR `if` may be missing an `else` clause + //~^ ERROR mismatched types [E0308] } } diff --git a/tests/ui/consts/control-flow/issue-50577.stderr b/tests/ui/consts/control-flow/issue-50577.stderr index 1556c6f9c5588..96b11f71bb3e3 100644 --- a/tests/ui/consts/control-flow/issue-50577.stderr +++ b/tests/ui/consts/control-flow/issue-50577.stderr @@ -1,13 +1,11 @@ -error[E0317]: `if` may be missing an `else` clause +error[E0308]: mismatched types --> $DIR/issue-50577.rs:3:16 | LL | Drop = assert_eq!(1, 1), | ^^^^^^^^^^^^^^^^ expected `isize`, found `()` | - = note: `if` expressions without `else` evaluate to `()` - = help: consider adding an `else` block that evaluates to the expected type = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) error: aborting due to 1 previous error -For more information about this error, try `rustc --explain E0317`. +For more information about this error, try `rustc --explain E0308`. diff --git a/tests/ui/expr/if/assert-macro-without-else.rs b/tests/ui/expr/if/assert-macro-without-else.rs new file mode 100644 index 0000000000000..a808528ab9e4f --- /dev/null +++ b/tests/ui/expr/if/assert-macro-without-else.rs @@ -0,0 +1,34 @@ +//@ dont-require-annotations: NOTE + +fn f() -> bool { + assert!(1 < 2) + //~^ ERROR mismatched types [E0308] +} + +fn g() -> i32 { + assert_eq!(1, 1) + //~^ ERROR mismatched types [E0308] +} + +fn h() -> bool { + assert_ne!(1, 2) + //~^ ERROR mismatched types [E0308] +} + +// Test nested macros +macro_rules! g { + () => { + f!() + }; +} +macro_rules! f { + () => { + assert!(1 < 2) + //~^ ERROR mismatched types [E0308] + }; +} +fn nested() -> bool { + g!() +} + +fn main() {} diff --git a/tests/ui/expr/if/assert-macro-without-else.stderr b/tests/ui/expr/if/assert-macro-without-else.stderr new file mode 100644 index 0000000000000..74179ba899f5f --- /dev/null +++ b/tests/ui/expr/if/assert-macro-without-else.stderr @@ -0,0 +1,40 @@ +error[E0308]: mismatched types + --> $DIR/assert-macro-without-else.rs:4:5 + | +LL | fn f() -> bool { + | ---- expected `bool` because of this return type +LL | assert!(1 < 2) + | ^^^^^^^^^^^^^^ expected `bool`, found `()` + +error[E0308]: mismatched types + --> $DIR/assert-macro-without-else.rs:9:5 + | +LL | assert_eq!(1, 1) + | ^^^^^^^^^^^^^^^^ expected `i32`, found `()` + | + = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0308]: mismatched types + --> $DIR/assert-macro-without-else.rs:14:5 + | +LL | assert_ne!(1, 2) + | ^^^^^^^^^^^^^^^^ expected `bool`, found `()` + | + = note: this error originates in the macro `assert_ne` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0308]: mismatched types + --> $DIR/assert-macro-without-else.rs:26:9 + | +LL | assert!(1 < 2) + | ^^^^^^^^^^^^^^ expected `bool`, found `()` +... +LL | fn nested() -> bool { + | ---- expected `bool` because of this return type +LL | g!() + | ---- in this macro invocation + | + = note: this error originates in the macro `assert` which comes from the expansion of the macro `g` (in Nightly builds, run with -Z macro-backtrace for more info) + +error: aborting due to 4 previous errors + +For more information about this error, try `rustc --explain E0308`. diff --git a/tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs b/tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs index 89c67325d6d16..9695a73c137f6 100644 --- a/tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs +++ b/tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs @@ -835,26 +835,26 @@ mod crate_name { #[crate_type = "0800"] //~^ WARN crate-level attribute should be an inner attribute -//~| HELP add a `!` mod crate_type { +//~^ NOTE this attribute does not have an `!`, which means it is applied to this module mod inner { #![crate_type="0800"] } -//~^ WARN crate-level attribute should be in the root module +//~^ WARN the `#![crate_type]` attribute can only be used at the crate root #[crate_type = "0800"] fn f() { } //~^ WARN crate-level attribute should be an inner attribute - //~| HELP add a `!` + //~| NOTE this attribute does not have an `!`, which means it is applied to this function #[crate_type = "0800"] struct S; //~^ WARN crate-level attribute should be an inner attribute - //~| HELP add a `!` + //~| NOTE this attribute does not have an `!`, which means it is applied to this struct #[crate_type = "0800"] type T = S; //~^ WARN crate-level attribute should be an inner attribute - //~| HELP add a `!` + //~| NOTE this attribute does not have an `!`, which means it is applied to this type alias #[crate_type = "0800"] impl S { } //~^ WARN crate-level attribute should be an inner attribute - //~| HELP add a `!` + //~| NOTE this attribute does not have an `!`, which means it is applied to this implementation block } #[feature(x0600)] diff --git a/tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr b/tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr index b0c1edeff8d93..fd90fe4c837bc 100644 --- a/tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr +++ b/tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr @@ -218,17 +218,6 @@ LL | | } | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! -warning: crate-level attribute should be an inner attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:836:1 - | -LL | #[crate_type = "0800"] - | ^^^^^^^^^^^^^^^^^^^^^^ - | -help: add a `!` - | -LL | #![crate_type = "0800"] - | + - warning: crate-level attribute should be an inner attribute --> $DIR/issue-43106-gating-of-builtin-attrs.rs:860:1 | @@ -354,56 +343,6 @@ LL | #[link(name = "x")] extern "Rust" {} | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! -warning: crate-level attribute should be in the root module - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:840:17 - | -LL | mod inner { #![crate_type="0800"] } - | ^^^^^^^^^^^^^^^^^^^^^ - -warning: crate-level attribute should be an inner attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:843:5 - | -LL | #[crate_type = "0800"] fn f() { } - | ^^^^^^^^^^^^^^^^^^^^^^ - | -help: add a `!` - | -LL | #![crate_type = "0800"] fn f() { } - | + - -warning: crate-level attribute should be an inner attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:847:5 - | -LL | #[crate_type = "0800"] struct S; - | ^^^^^^^^^^^^^^^^^^^^^^ - | -help: add a `!` - | -LL | #![crate_type = "0800"] struct S; - | + - -warning: crate-level attribute should be an inner attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:851:5 - | -LL | #[crate_type = "0800"] type T = S; - | ^^^^^^^^^^^^^^^^^^^^^^ - | -help: add a `!` - | -LL | #![crate_type = "0800"] type T = S; - | + - -warning: crate-level attribute should be an inner attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:855:5 - | -LL | #[crate_type = "0800"] impl S { } - | ^^^^^^^^^^^^^^^^^^^^^^ - | -help: add a `!` - | -LL | #![crate_type = "0800"] impl S { } - | + - warning: crate-level attribute should be in the root module --> $DIR/issue-43106-gating-of-builtin-attrs.rs:864:17 | @@ -1285,6 +1224,76 @@ note: this attribute does not have an `!`, which means it is applied to this imp LL | #[crate_name = "0900"] impl S { } | ^^^^^^^^^^ +warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![crate_type]` + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:836:1 + | +LL | #[crate_type = "0800"] + | ^^^^^^^^^^^^^^^^^^^^^^ + | +note: this attribute does not have an `!`, which means it is applied to this module + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:838:1 + | +LL | / mod crate_type { +LL | | +LL | | mod inner { #![crate_type="0800"] } +... | +LL | | } + | |_^ + +warning: the `#![crate_type]` attribute can only be used at the crate root + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:840:17 + | +LL | mod inner { #![crate_type="0800"] } + | ^^^^^^^^^^^^^^^^^^^^^ + +warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![crate_type]` + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:843:5 + | +LL | #[crate_type = "0800"] fn f() { } + | ^^^^^^^^^^^^^^^^^^^^^^ + | +note: this attribute does not have an `!`, which means it is applied to this function + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:843:28 + | +LL | #[crate_type = "0800"] fn f() { } + | ^^^^^^^^^^ + +warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![crate_type]` + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:847:5 + | +LL | #[crate_type = "0800"] struct S; + | ^^^^^^^^^^^^^^^^^^^^^^ + | +note: this attribute does not have an `!`, which means it is applied to this struct + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:847:28 + | +LL | #[crate_type = "0800"] struct S; + | ^^^^^^^^^ + +warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![crate_type]` + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:851:5 + | +LL | #[crate_type = "0800"] type T = S; + | ^^^^^^^^^^^^^^^^^^^^^^ + | +note: this attribute does not have an `!`, which means it is applied to this type alias + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:851:28 + | +LL | #[crate_type = "0800"] type T = S; + | ^^^^^^^^^^^ + +warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![crate_type]` + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:855:5 + | +LL | #[crate_type = "0800"] impl S { } + | ^^^^^^^^^^^^^^^^^^^^^^ + | +note: this attribute does not have an `!`, which means it is applied to this implementation block + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:855:28 + | +LL | #[crate_type = "0800"] impl S { } + | ^^^^^^^^^^ + warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![no_main]` --> $DIR/issue-43106-gating-of-builtin-attrs.rs:885:1 | diff --git a/tests/ui/invalid/invalid-crate-type.rs b/tests/ui/invalid/invalid-crate-type.rs index 6c44c3b4f2b13..c233e7d5e3db8 100644 --- a/tests/ui/invalid/invalid-crate-type.rs +++ b/tests/ui/invalid/invalid-crate-type.rs @@ -26,7 +26,7 @@ #![crate_type="dlib"] //~^ ERROR invalid `crate_type` value //~| HELP did you mean -//~| SUGGESTION rlib +//~| SUGGESTION lib #![crate_type="lob"] //~^ ERROR invalid `crate_type` value diff --git a/tests/ui/invalid/invalid-crate-type.stderr b/tests/ui/invalid/invalid-crate-type.stderr index 59d5d7bc9bbf0..3eae04678b4a7 100644 --- a/tests/ui/invalid/invalid-crate-type.stderr +++ b/tests/ui/invalid/invalid-crate-type.stderr @@ -34,7 +34,7 @@ error: invalid `crate_type` value --> $DIR/invalid-crate-type.rs:26:15 | LL | #![crate_type="dlib"] - | ^^^^^^ help: did you mean: `"rlib"` + | ^^^^^^ help: did you mean: `"lib"` error: invalid `crate_type` value --> $DIR/invalid-crate-type.rs:31:15 diff --git a/tests/ui/lint/lint-misplaced-attr.rs b/tests/ui/lint/lint-misplaced-attr.rs index d06917ea3f8ab..557dbe2949436 100644 --- a/tests/ui/lint/lint-misplaced-attr.rs +++ b/tests/ui/lint/lint-misplaced-attr.rs @@ -4,7 +4,7 @@ #![deny(unused_attributes)] mod a { - #![crate_type = "bin"] //~ ERROR should be in the root module + #![crate_type = "bin"] //~ ERROR the `#![crate_type]` attribute can only be used at the crate root } #[crate_type = "bin"] fn main() {} //~ ERROR should be an inner diff --git a/tests/ui/lint/lint-misplaced-attr.stderr b/tests/ui/lint/lint-misplaced-attr.stderr index bcfda1700800e..d46bbc44c1b2b 100644 --- a/tests/ui/lint/lint-misplaced-attr.stderr +++ b/tests/ui/lint/lint-misplaced-attr.stderr @@ -1,4 +1,4 @@ -error: crate-level attribute should be in the root module +error: the `#![crate_type]` attribute can only be used at the crate root --> $DIR/lint-misplaced-attr.rs:7:5 | LL | #![crate_type = "bin"] @@ -10,16 +10,17 @@ note: the lint level is defined here LL | #![deny(unused_attributes)] | ^^^^^^^^^^^^^^^^^ -error: crate-level attribute should be an inner attribute +error: crate-level attribute should be an inner attribute: add an exclamation mark: `#![crate_type]` --> $DIR/lint-misplaced-attr.rs:10:1 | LL | #[crate_type = "bin"] fn main() {} | ^^^^^^^^^^^^^^^^^^^^^ | -help: add a `!` +note: this attribute does not have an `!`, which means it is applied to this function + --> $DIR/lint-misplaced-attr.rs:10:23 | -LL | #![crate_type = "bin"] fn main() {} - | + +LL | #[crate_type = "bin"] fn main() {} + | ^^^^^^^^^^^^ error: aborting due to 2 previous errors diff --git a/tests/ui/reflection/dump.bit32.run.stdout b/tests/ui/reflection/dump.bit32.run.stdout index 0c8a835923be7..d15b46509ff20 100644 --- a/tests/ui/reflection/dump.bit32.run.stdout +++ b/tests/ui/reflection/dump.bit32.run.stdout @@ -194,7 +194,11 @@ Type { size: None, } Type { - kind: Other, + kind: Slice( + Slice { + element_ty: TypeId(0x0596b48cc04376e64d5c788c2aa46bdb), + }, + ), size: None, } Type { diff --git a/tests/ui/reflection/dump.bit64.run.stdout b/tests/ui/reflection/dump.bit64.run.stdout index 20af4deb4e416..efae226539515 100644 --- a/tests/ui/reflection/dump.bit64.run.stdout +++ b/tests/ui/reflection/dump.bit64.run.stdout @@ -194,7 +194,11 @@ Type { size: None, } Type { - kind: Other, + kind: Slice( + Slice { + element_ty: TypeId(0x0596b48cc04376e64d5c788c2aa46bdb), + }, + ), size: None, } Type {