1use std::hash::{Hash, Hasher};
6use std::{fmt, str};
7
8use rustc_arena::DroplessArena;
9use rustc_data_structures::fx::{FxHashSet, FxIndexSet};
10use rustc_data_structures::stable_hasher::{
11 StableCompare, StableHash, StableHashCtxt, StableHasher, ToStableHashKey,
12};
13use rustc_data_structures::sync::Lock;
14use rustc_macros::{Decodable, Encodable, StableHash, symbols};
15
16use crate::edit_distance::find_best_match_for_name;
17use crate::{DUMMY_SP, Edition, Span, with_session_globals};
18
19#[cfg(test)]
20mod tests;
21
22impl Interner {
#[doc =
r" Creates an `Interner` with the predefined symbols from the `symbols!` macro and"]
#[doc = r" any extra symbols provided by external drivers such as Clippy"]
pub(crate) fn with_extra_symbols(extra_symbols: &[&'static str]) -> Self {
Interner::prefill(&["$crate", "{{root}}", "_", "as", "break", "const",
"continue", "crate", "else", "enum", "extern", "false",
"fn", "for", "if", "impl", "in", "let", "loop", "match",
"mod", "move", "mut", "pub", "ref", "return", "self",
"Self", "static", "struct", "super", "trait", "true",
"type", "unsafe", "use", "where", "while", "abstract",
"become", "box", "do", "final", "macro", "override", "priv",
"typeof", "unsized", "virtual", "yield", "async", "await",
"dyn", "gen", "try", "'static", "'_", "auto", "builtin",
"catch", "contract_ensures", "contract_requires", "default",
"macro_rules", "raw", "reuse", "safe", "union", "yeet",
"Abi", "AcqRel", "Acquire", "Active", "ActiveOnly",
"Alignment", "Arc", "ArcWeak", "Array", "AsMut", "AsRef",
"AssertParamIsClone", "AssertParamIsCopy",
"AssertParamIsEq", "AsyncGenFinished", "AsyncGenPending",
"AsyncGenReady", "Atomic", "BTreeMap", "Bool", "Borrow",
"BorrowMut", "Break", "BuildHasher", "CStr",
"CallOnceFuture", "CallRefFuture", "Capture", "Cell",
"Char", "Cleanup", "Clone", "CoercePointee",
"CoercePointeeValidated", "CoerceUnsized", "Const",
"ConstParamTy", "ConstParamTy_", "Context", "Continue",
"ControlFlow", "Copy", "Cow", "Debug", "Default", "Deref",
"DispatchFromDyn", "Display", "Dual", "DualOnly", "Dualv",
"DualvOnly", "Duplicated", "DuplicatedOnly", "DynTrait",
"Enum", "Eq", "Equal", "Err", "ExternC", "ExternRust",
"Float", "FmtArgumentsNew", "Fn", "FnMut", "FnOnce",
"FnPtr", "Formatter", "Forward", "From", "FromIterator",
"FromResidual", "GlobalAlloc", "Hash", "HashMap", "HashSet",
"Hasher", "InCleanup", "IndexOutput", "Input", "Int",
"Into", "IntoFuture", "IntoIterator", "IntoIteratorItem",
"IrTyKind", "Item", "ItemContext", "Iterator",
"IteratorItem", "IteratorMap", "Layout", "Lifetime",
"LintPass", "LocalKey", "Mutex", "MutexGuard", "Named",
"NonNull", "NonZero", "None", "Normal", "Ok", "Option",
"Ord", "Ordering", "Other", "Output", "ParamSet",
"PartialEq", "PartialOrd", "Pending", "PinDerefMutHelper",
"Pointer", "Poll", "ProcMacro", "Range", "RangeCopy",
"RangeFrom", "RangeFromCopy", "RangeFull", "RangeInclusive",
"RangeInclusiveCopy", "RangeMax", "RangeMin", "RangeSub",
"RangeTo", "RangeToInclusive", "RangeToInclusiveCopy", "Rc",
"RcWeak", "Ready", "RefCell", "Reference", "Relaxed",
"Release", "Result", "ResumeTy", "Reverse", "Rust",
"RustaceansAreAwesome", "RwLock", "RwLockReadGuard",
"RwLockWriteGuard", "SelfTy", "Send", "SeqCst", "Sized",
"Slice", "SliceIndex", "Some", "Source", "SpanCtxt", "Str",
"String", "Struct", "StructuralPartialEq", "SymbolIntern",
"Sync", "SyncUnsafeCell", "Target", "This", "TokenStream",
"Trait", "TrivialClone", "Try", "TryCaptureGeneric",
"TryCapturePrintable", "TryFrom", "TryInto", "Tuple", "Ty",
"TyCtxt", "TyKind", "Type", "Union", "Unsize", "Vec",
"Wrapper", "_DECLS", "__H", "__S", "__awaitee", "__try_var",
"_t", "_task_context", "a32", "aarch64",
"aarch64_target_feature", "aarch64_unstable_target_feature",
"aarch64_ver_target_feature", "abi", "abi_amdgpu_kernel",
"abi_avr_interrupt", "abi_c_cmse_nonsecure_call",
"abi_cmse_nonsecure_call", "abi_custom", "abi_efiapi",
"abi_gpu_kernel", "abi_msp430_interrupt", "abi_ptx",
"abi_riscv_interrupt", "abi_sysv64", "abi_thiscall",
"abi_unadjusted", "abi_vectorcall", "abi_x86_interrupt",
"abort", "add", "add_assign", "add_with_overflow",
"address", "adt_const_params", "advanced_slice_patterns",
"adx_target_feature", "aes", "aggregate_raw_ptr", "alias",
"align", "align_of", "align_of_val", "alignment", "all",
"alloc", "alloc_error_handler", "alloc_layout",
"alloc_zeroed", "allocator", "allocator_api",
"allocator_internals", "allow", "allow_fail",
"allow_internal_unsafe", "allow_internal_unstable",
"altivec", "alu32", "always", "amdgpu",
"amdgpu_dispatch_ptr", "analysis", "and", "and_then",
"anon", "anon_assoc", "anonymous_lifetime_in_impl_trait",
"any", "apx_target_feature", "arbitrary_enum_discriminant",
"arbitrary_self_types", "arbitrary_self_types_pointers",
"areg", "args", "arith_offset", "arm", "arm64ec",
"arm::a32", "arm::t32", "arm_target_feature", "array",
"as-needed", "as_ref", "asm", "asm_cfg", "asm_const",
"asm_experimental_arch", "asm_experimental_reg", "asm_goto",
"asm_goto_with_outputs", "asm_sym", "asm_unwind", "assert",
"assert_eq", "assert_eq_macro", "assert_fields_are_eq",
"assert_inhabited", "assert_macro",
"assert_mem_uninitialized_valid", "assert_ne_macro",
"assert_receiver_is_total_eq", "assert_zero_valid",
"asserting", "associated_const_equality",
"associated_consts", "associated_type_bounds",
"associated_type_defaults", "associated_types", "assume",
"assume_init", "*", "async_await", "async_call",
"async_call_mut", "async_call_once", "async_closure",
"async_drop", "async_drop_in_place", "async_fn",
"async_fn_in_dyn_trait", "async_fn_in_trait",
"async_fn_kind_helper", "async_fn_kind_upvars",
"async_fn_mut", "async_fn_once", "async_fn_once_output",
"async_fn_track_caller", "async_fn_traits",
"async_for_loop", "async_gen_internals", "async_iterator",
"async_iterator_poll_next", "async_trait_bounds",
"atomic_and", "atomic_cxchg", "atomic_cxchgweak",
"atomic_fence", "atomic_load", "atomic_max", "atomic_min",
"atomic_nand", "atomic_or", "atomic_singlethreadfence",
"atomic_store", "atomic_umax", "atomic_umin", "atomic_xadd",
"atomic_xchg", "atomic_xor", "atomic_xsub", "atomics",
"att_syntax", "attr", "attr_literals", "attribute",
"attributes", "audit_that", "augmented_assignments",
"auto_cfg", "auto_traits", "autodiff", "autodiff_forward",
"autodiff_reverse", "automatically_derived",
"available_externally", "avr", "avr_target_feature", "avx",
"avx10_target_feature", "avx512_target_feature", "avx512bw",
"avx512f", "await_macro", "backchain", "backend_repr",
"bang", "begin_panic", "bench", "bevy_ecs", "bikeshed",
"bikeshed_guaranteed_no_drop", "bin",
"bind_by_move_pattern_guards", "bindings_after_at",
"bitand", "bitand_assign", "bitor", "bitor_assign",
"bitreverse", "bits", "bitxor", "bitxor_assign",
"black_box", "block", "blocking", "bool",
"borrowck_graphviz_format", "borrowck_graphviz_postflow",
"box_new", "box_patterns", "box_syntax", "boxed_slice",
"bpf", "bpf_target_feature", "braced_empty_structs",
"branch", "breakpoint", "bridge", "bswap", "built",
"builtin_syntax", "bundle", "c_dash_variadic",
"c_str_literals", "c_unwind", "c_variadic",
"c_variadic_experimental_arch",
"c_variadic_naked_functions", "c_void", "call", "call_mut",
"call_once", "call_once_future", "call_ref_future",
"caller", "caller_location", "capture_disjoint_fields",
"carrying_mul_add", "carryless_mul", "catch_unwind",
"cause", "cdylib", "ceilf16", "ceilf32", "ceilf64",
"ceilf128", "cfg", "cfg_accessible", "cfg_attr",
"cfg_attr_multi", "<cfg_attr_trace>",
"cfg_boolean_literals", "cfg_contract_checks",
"cfg_doctest", "cfg_emscripten_wasm_eh", "cfg_eval",
"cfg_overflow_checks", "cfg_panic", "cfg_relocation_model",
"cfg_sanitize", "cfg_sanitizer_cfi", "cfg_select",
"cfg_target_abi", "cfg_target_compact",
"cfg_target_feature", "cfg_target_has_atomic",
"cfg_target_has_atomic_equal_alignment",
"cfg_target_has_reliable_f16_f128",
"cfg_target_object_format", "cfg_target_thread_local",
"cfg_target_vendor", "<cfg_trace>", "cfg_ub_checks",
"cfg_version", "cfi", "cfi_encoding", "char", "client",
"clippy", "clobber_abi", "clone", "clone_closures",
"clone_fn", "clone_from", "closure",
"closure_lifetime_binder", "closure_to_fn_coercion",
"closure_track_caller", "cmp", "cmp_ord_max", "cmp_ord_min",
"cmp_partialeq_eq", "cmp_partialeq_ne",
"cmp_partialord_cmp", "cmp_partialord_ge",
"cmp_partialord_gt", "cmp_partialord_le",
"cmp_partialord_lt", "cmpxchg16b_target_feature",
"cmse_nonsecure_entry", "coerce_pointee_validated",
"coerce_shared", "coerce_unsized", "coff", "cold",
"cold_path", "collapse_debuginfo", "column", "common",
"compare_bytes", "compare_exchange",
"compare_exchange_weak", "compile_error", "compiler",
"compiler_builtins", "compiler_copy", "compiler_fence",
"compiler_move", "concat", "concat_bytes",
"conservative_impl_trait", "console", "const_allocate",
"const_async_blocks", "const_block_items",
"const_c_variadic", "const_closures",
"const_compare_raw_pointers", "const_constructor",
"const_continue", "const_deallocate", "const_destruct",
"const_eval_limit", "const_eval_select",
"const_evaluatable_checked", "const_extern_fn", "const_fn",
"const_fn_floating_point_arithmetic",
"const_fn_fn_ptr_basics", "const_fn_trait_bound",
"const_fn_transmute", "const_fn_union", "const_fn_unsize",
"const_for", "const_format_args", "const_generics",
"const_generics_defaults", "const_if_match",
"const_impl_trait", "const_in_array_repeat_expressions",
"const_indexing", "const_let", "const_loop",
"const_make_global", "const_mut_refs", "const_panic",
"const_panic_fmt", "const_param_ty",
"const_param_ty_unchecked", "const_precise_live_drops",
"const_ptr_cast", "const_raw_ptr_deref",
"const_raw_ptr_to_usize_cast", "const_refs_to_cell",
"const_refs_to_static", "const_trait_bound_opt_out",
"const_trait_impl", "const_try", "<const_ty>", "constant",
"constructor", "contract_build_check_ensures",
"contract_check_ensures", "contract_check_requires",
"contract_checks", "contracts", "contracts_ensures",
"contracts_internals", "contracts_requires", "convert",
"copy", "copy_closures", "copy_nonoverlapping",
"copysignf16", "copysignf32", "copysignf64", "copysignf128",
"core", "core_panic", "core_panic_2015_macro",
"core_panic_macro", "coroutine", "coroutine_clone",
"coroutine_resume", "coroutine_return", "coroutine_state",
"coroutine_yield", "coroutines", "cosf16", "cosf32",
"cosf64", "cosf128", "count", "coverage",
"coverage_attribute", "cr", "crate_in_paths", "crate_local",
"crate_name", "crate_type", "crate_visibility_modifier",
"crt-static", "csky", "csky_target_feature", "cstr_type",
"cstring_type", "ctlz", "ctlz_nonzero", "ctpop", "ctr",
"cttz", "cttz_nonzero", "custom_attribute",
"custom_code_classes_in_docs", "custom_derive",
"custom_inner_attributes", "custom_mir",
"custom_test_frameworks", "d32", "dbg_macro", "dead_code",
"dealloc", "debug", "debug_assert_eq_macro",
"debug_assert_macro", "debug_assert_ne_macro",
"debug_assertions", "debug_struct_fields_finish",
"debug_tuple_fields_finish", "debugger_visualizer",
"decl_macro", "declare_lint_pass", "decorated",
"default_alloc_error_handler", "default_field_values",
"default_fn", "default_lib_allocator",
"default_method_body_is_const", "default_trait1",
"default_trait2", "default_trait3", "default_trait4",
"default_type_parameter_fallback", "default_type_params",
"define_opaque", "deny", "deprecated", "deprecated_safe",
"deprecated_suggestion", "deref", "deref_method",
"deref_mut", "deref_patterns", "deref_pure", "deref_target",
"derive", "derive_const", "118304", "derive_default_enum",
"derive_from", "derive_smart_pointer", "destruct",
"destructuring_assignment", "diagnostic",
"diagnostic_namespace", "diagnostic_on_const",
"diagnostic_on_move", "diagnostic_on_unknown",
"diagnostic_on_unmatch_args", "dialect", "direct",
"discriminant_kind", "discriminant_type",
"discriminant_value", "disjoint_bitor", "dispatch_from_dyn",
"div", "div_assign", "diverging_block_default", "dl",
"do_not_recommend", "doc", "doc_alias", "doc_auto_cfg",
"doc_cfg", "doc_cfg_hide", "doc_keyword", "doc_masked",
"doc_notable_trait", "doc_primitive", "doc_spotlight",
"doctest", "dotdot_in_tuple_patterns",
"dotdoteq_in_patterns", "dreg", "dreg_low8", "dreg_low16",
"drop", "drop_in_place", "drop_types_in_const",
"dropck_eyepatch", "dropck_parametricity", "<!dummy!>",
"dummy_cgu_name", "dylib", "dyn_compatible_for_dispatch",
"dyn_metadata", "dyn_star", "dyn_trait", "dynamic-no-pic",
"edition_panic", "effective_target_features", "effects",
"eh_catch_typeinfo", "eh_personality", "eii",
"eii_declaration", "eii_internals", "eii_shared_macro",
"element_ty", "elf", "", "{}", "emscripten_wasm_eh",
"enable", "end", "entry_nops", "env", "eq",
"ergonomic_clones", "ermsb_target_feature", "exact_div",
"except", "exception-handling", "exclusive_range_pattern",
"exhaustive_integer_patterns", "exhaustive_patterns",
"existential_type", "exp2f16", "exp2f32", "exp2f64",
"exp2f128", "expect", "expected", "expf16", "expf32",
"expf64", "expf128", "explicit_extern_abis",
"explicit_generic_args_with_impl_trait",
"explicit_tail_calls", "export_name", "export_stable",
"export-symbols", "expr", "expr_2021",
"expr_fragment_specifier_2024",
"extended_key_value_attributes",
"extended_varargs_abi_support", "extern_absolute_paths",
"extern_crate_item_prelude", "extern_crate_self",
"extern_in_paths", "extern_item_impls", "extern_prelude",
"extern_system_varargs", "extern_types", "extern_weak",
"external", "external_doc", "f16", "f16_nan",
"f16c_target_feature", "f32", "f32_nan", "f64", "f64_nan",
"f128", "f128_nan", "fabs", "fadd_algebraic", "fadd_fast",
"fake_variadic", "fallback", "fdiv_algebraic", "fdiv_fast",
"feature", "fence", "🦀", "fetch_update", "ffi_const",
"ffi_pure", "ffi_returns_twice", "field", "field_base",
"field_init_shorthand", "field_of", "field_offset",
"field_projections", "field_representing_type",
"field_representing_type_raw", "field_type", "fields",
"file", "final_associated_functions",
"float_to_int_unchecked", "floorf16", "floorf32",
"floorf64", "floorf128", "fma4_target_feature", "fmaf16",
"fmaf32", "fmaf64", "fmaf128", "fmt", "fmt_debug",
"fmul_algebraic", "fmul_fast", "fmuladdf16", "fmuladdf32",
"fmuladdf64", "fmuladdf128", "fn_align", "fn_body",
"fn_delegation", "fn_must_use", "fn_mut", "fn_once",
"fn_once_output", "fn_ptr_addr", "fn_ptr_trait", "forbid",
"force_target_feature", "forget", "format_args",
"format_args_capture", "format_args_nl", "format_argument",
"format_arguments", "format_macro", "framework", "freeze",
"freeze_impls", "freg", "frem_algebraic", "frem_fast",
"from", "from_desugaring", "from_iter", "from_output",
"from_residual", "from_size_align_unchecked",
"from_size_alignment_unchecked", "from_str",
"from_str_nonconst", "from_usize", "from_yeet",
"frontmatter", "fsub_algebraic", "fsub_fast", "full",
"fundamental", "fused_iterator", "future_output",
"future_trait", "fxsr", "gdb_script_file", "ge",
"gen_blocks", "gen_future", "generator_clone", "generators",
"generic_arg_infer", "generic_assert",
"generic_associated_types",
"generic_associated_types_extended", "generic_const_args",
"generic_const_exprs", "generic_const_items",
"generic_const_parameter_types", "generic_param_attrs",
"generic_pattern_types", "generics", "get_context",
"global_alloc_ty", "global_allocator", "global_asm",
"global_registration", "globs",
"gpu_launch_sized_workgroup_mem", "gt", "guard",
"guard_patterns", "half_open_range_patterns",
"half_open_range_patterns_in_slices", "hash", "hexagon",
"hexagon_target_feature", "hidden", "hide",
"homogeneous_aggregate", "html_favicon_url",
"html_logo_url", "html_no_source", "html_playground_url",
"html_root_url", "hvx", "hvx-length64b", "hvx-length128b",
"hwaddress", "i8", "i16", "i32", "i64", "i128", "i128_type",
"ident", "if_let", "if_let_guard", "if_let_rescope",
"if_while_or_patterns", "ignore", "immediate-abort",
"impl_header_lifetime_elision", "impl_lint_pass",
"impl_restriction", "impl_trait_in_assoc_type",
"impl_trait_in_bindings", "impl_trait_in_fn_trait_return",
"impl_trait_projections", "implied_by", "import",
"import_name_type", "import_shadowing",
"import_trait_associated_functions", "imported_main",
"in_band_lifetimes", "include", "include_bytes",
"include_str", "inclusive_range_syntax",
"incomplete_features", "index", "index_mut",
"infer_outlives_requirements",
"infer_static_outlives_requirements",
"inherent_associated_types", "initial", "inlateout",
"inline", "inline_const", "inline_const_pat", "inout",
"inputs", "instruction_set", "integer", "integral",
"internal", "internal_eq_trait_method_impls",
"internal_features", "into_async_iter_into_iter",
"into_future", "into_iter", "into_try_type",
"intra_doc_pointers", "intrinsics",
"irrefutable_let_patterns", "is", "is_auto",
"is_val_statically_known", "isa_attribute", "isize",
"issue", "issue_5723_bootstrap", "issue_tracker_base_url",
"item", "item_like_imports", "iter", "iter_mut", "iterator",
"iterator_collect_fn", "kcfi", "kernel_address",
"kernel_hwaddress", "keylocker_x86", "keyword", "kind",
"kreg", "kreg0", "label", "label_break_value",
"lahfsahf_target_feature", "lang", "lang_items",
"large_assignments", "last", "lateout",
"lazy_normalization_consts", "lazy_type_alias", "le",
"legacy_receiver", "len", "let_chains", "let_else", "lhs",
"lib", "libc", "lifetime", "lifetime_capture_rules_2024",
"lifetimes", "line", "link", "link_arg_attribute",
"link_args", "link_cfg", "link-arg", "link_llvm_intrinsics",
"link_name", "link_ordinal", "link_section", "linkage",
"linker", "linker_info", "linker_messages", "linkonce",
"linkonce_odr", "lint_reasons", "literal", "little", "big",
"load", "loaded_from_disk", "local", "local_inner_macros",
"log2f16", "log2f32", "log2f64", "log2f128", "log10f16",
"log10f32", "log10f64", "log10f128", "log_syntax", "logf16",
"logf32", "logf64", "logf128", "loongarch32", "loongarch64",
"loongarch_target_feature", "loop_break_value",
"loop_match", "lr", "lt", "m68k", "m68k_target_feature",
"mach-o", "macro_at_most_once_rep", "macro_attr",
"macro_attributes_in_derive_output", "macro_derive",
"macro_escape", "macro_export", "macro_guard_matcher",
"macro_lifetime_matcher", "macro_literal_matcher",
"macro_metavar_expr", "macro_metavar_expr_concat",
"macro_reexport", "macro_use", "macro_vis_matcher",
"macros_in_extern", "main", "managed_boxes",
"manually_drop", "map", "map_err", "marker",
"marker_trait_attr", "masked", "match_beginning_vert",
"match_default_bindings", "maximum_number_nsz_f16",
"maximum_number_nsz_f32", "maximum_number_nsz_f64",
"maximum_number_nsz_f128", "maximumf16", "maximumf32",
"maximumf64", "maximumf128", "may_dangle", "may_unwind",
"maybe_dangling", "maybe_uninit", "maybe_uninit_uninit",
"maybe_uninit_zeroed", "mem", "mem_align_const",
"mem_discriminant", "mem_drop", "mem_forget",
"mem_size_const", "mem_swap", "mem_uninitialized",
"mem_variant_count", "mem_zeroed", "member_constraints",
"memory", "memtag", "message", "meta", "meta_sized",
"metadata_type", "mgca_type_const_syntax",
"min_adt_const_params", "min_const_fn",
"min_const_generics", "min_const_unsafe_fn",
"min_exhaustive_patterns", "min_generic_const_args",
"min_specialization", "min_type_alias_impl_trait",
"minimum_number_nsz_f16", "minimum_number_nsz_f32",
"minimum_number_nsz_f64", "minimum_number_nsz_f128",
"minimumf16", "minimumf32", "minimumf64", "minimumf128",
"mips", "mips32r6", "mips64", "mips64r6",
"mips_target_feature", "mir_assume", "mir_basic_block",
"mir_call", "mir_cast_ptr_to_ptr", "mir_cast_transmute",
"mir_cast_unsize", "mir_checked", "mir_debuginfo",
"mir_discriminant", "mir_drop", "mir_field", "mir_goto",
"mir_make_place", "mir_move", "mir_offset",
"mir_ptr_metadata", "mir_return", "mir_return_to",
"mir_set_discriminant", "mir_static", "mir_static_mut",
"mir_storage_dead", "mir_storage_live", "mir_tail_call",
"mir_unreachable", "mir_unwind_cleanup",
"mir_unwind_continue", "mir_unwind_resume",
"mir_unwind_terminate", "mir_unwind_terminate_reason",
"mir_unwind_unreachable", "mir_variant", "miri", "mmx_reg",
"modifiers", "module", "module_path", "more_maybe_bounds",
"more_qualified_paths", "more_struct_aliases",
"movbe_target_feature", "move_ref_pattern",
"move_size_limit", "movrs_target_feature", "msp430", "mul",
"mul_assign", "mul_with_overflow",
"multiple_supertrait_upcastable", "must_not_suspend",
"must_use", "mut_preserve_binding_mode_2024", "mut_ref",
"mutable", "naked", "naked_asm", "naked_functions",
"naked_functions_rustic_abi",
"naked_functions_target_feature", "name", "names",
"native_link_modifiers", "native_link_modifiers_as_needed",
"native_link_modifiers_bundle",
"native_link_modifiers_verbatim",
"native_link_modifiers_whole_archive", "natvis_file", "ne",
"needs_allocator", "needs_drop", "needs_panic_runtime",
"neg", "negate_unsigned", "negative_bounds",
"negative_impls", "neon", "nested", "never",
"never_patterns", "never_type", "never_type_fallback",
"new", "new_binary", "new_debug", "new_debug_noop",
"new_display", "new_lower_exp", "new_lower_hex",
"new_octal", "new_pointer", "new_range", "new_unchecked",
"new_upper_exp", "new_upper_hex", "next", "niko", "nll",
"no", "no_builtins", "no_core", "no_coverage",
"no_crate_inject", "no_debug", "no_default_passes",
"no_implicit_prelude", "no_inline", "no_link", "no_main",
"no_mangle", "no_sanitize", "no_stack_check", "no_std",
"nomem", "non_ascii_idents", "non_exhaustive",
"non_exhaustive_omitted_patterns_lint",
"non_lifetime_binders", "non_modrs_mods", "nonblocking",
"none", "nontemporal_store", "noop_method_borrow",
"noop_method_clone", "noop_method_deref", "noprefix",
"noreturn", "nostack", "not", "notable_trait", "note",
"null", "nvptx64", "nvptx_target_feature",
"object_safe_for_dispatch", "of", "off", "offload",
"offset", "offset_of", "offset_of_enum", "offset_of_nested",
"offset_of_slice", "ok_or_else", "old_name",
"omit_gdb_pretty_printer_section", "on", "on_const",
"on_move", "on_unimplemented", "on_unknown",
"on_unmatch_args", "opaque", "<opaque>", "ops",
"opt_out_copy", "optimize", "optimize_attribute",
"optimized", "optin_builtin_traits", "option", "option_env",
"options", "or", "or_patterns", "ord_cmp_method", "other",
"out", "output", "overflow_checks",
"overlapping_marker_traits", "owned_box", "packed",
"packed_bundled_libs", "panic", "panic_2015", "panic_2021",
"panic_abort", "panic_bounds_check", "panic_cannot_unwind",
"panic_const_add_overflow", "panic_const_async_fn_resumed",
"panic_const_async_fn_resumed_drop",
"panic_const_async_fn_resumed_panic",
"panic_const_async_gen_fn_resumed",
"panic_const_async_gen_fn_resumed_drop",
"panic_const_async_gen_fn_resumed_panic",
"panic_const_coroutine_resumed",
"panic_const_coroutine_resumed_drop",
"panic_const_coroutine_resumed_panic",
"panic_const_div_by_zero", "panic_const_div_overflow",
"panic_const_gen_fn_none", "panic_const_gen_fn_none_drop",
"panic_const_gen_fn_none_panic", "panic_const_mul_overflow",
"panic_const_neg_overflow", "panic_const_rem_by_zero",
"panic_const_rem_overflow", "panic_const_shl_overflow",
"panic_const_shr_overflow", "panic_const_sub_overflow",
"panic_display", "panic_fmt", "panic_handler", "panic_impl",
"panic_implementation", "panic_in_cleanup", "panic_info",
"panic_invalid_enum_construction", "panic_location",
"panic_misaligned_pointer_dereference", "panic_nounwind",
"panic_null_pointer_dereference", "panic_runtime",
"panic_str_2015", "panic_unwind", "panicking",
"param_attrs", "parent_label", "partial_cmp", "partial_ord",
"passes", "pat", "pat_param", "patchable_function_entry",
"path", "pattern_complexity_limit", "pattern_parentheses",
"pattern_type", "pattern_type_range_trait", "pattern_types",
"phantom_data", "phase", "pic", "pie", "pin",
"pin_ergonomics", "pin_v2", "platform_intrinsics", "plugin",
"plugin_registrar", "plugins", "pointee", "pointee_sized",
"pointee_trait", "pointer", "poll", "post-cleanup",
"post-lto", "postfix_match", "powerpc", "powerpc64",
"powerpc_target_feature", "powf16", "powf32", "powf64",
"powf128", "powif16", "powif32", "powif64", "powif128",
"pre-lto", "precise_capturing",
"precise_capturing_in_traits",
"precise_pointer_size_matching", "predicates",
"pref_align_of", "prefetch_read_data",
"prefetch_read_instruction", "prefetch_write_data",
"prefetch_write_instruction", "prefix_nops", "preg",
"prelude", "prelude_import", "preserves_flags",
"prfchw_target_feature", "proc-macro", "proc_macro",
"proc_macro_attribute", "proc_macro_derive",
"proc_macro_expr", "proc_macro_gen", "proc_macro_hygiene",
"proc_macro_internals", "proc_macro_mod",
"proc_macro_non_items", "proc_macro_path_invoc",
"profiler_runtime", "ptr", "ptr_cast", "ptr_cast_const",
"ptr_cast_mut", "ptr_const_is_null", "ptr_copy",
"ptr_copy_nonoverlapping", "ptr_from_ref",
"ptr_guaranteed_cmp", "ptr_is_null", "ptr_mask",
"ptr_metadata", "ptr_null", "ptr_null_mut",
"ptr_offset_from", "ptr_offset_from_unsigned", "ptr_read",
"ptr_read_unaligned", "ptr_replace", "ptr_swap",
"ptr_swap_nonoverlapping", "ptr_write", "ptr_write_bytes",
"ptr_write_unaligned", "ptr_write_volatile",
"pub_macro_rules", "pub_restricted", "public", "pure",
"pushpop_unsafe", "qreg", "qreg_low4", "qreg_low8",
"quad_precision_float", "question_mark", "quote",
"range_inclusive_new", "raw-dylib", "raw_dylib",
"raw_dylib_elf", "raw_eq", "raw_identifiers", "raw_ref_op",
"re_rebalance_coherence", "read_via_copy", "readonly",
"realloc", "realtime", "reason", "reborrow", "receiver",
"receiver_target", "recursion_limit",
"reexport_test_harness_main", "ref_pat_eat_one_layer_2024",
"ref_pat_eat_one_layer_2024_structural",
"ref_pat_everywhere", "ref_unwind_safe_trait", "reference",
"reflect", "reg", "reg16", "reg32", "reg64", "reg_abcd",
"reg_addr", "reg_byte", "reg_data", "reg_iw", "reg_nonzero",
"reg_pair", "reg_ptr", "reg_upper", "register_attr",
"register_tool", "relaxed_adts", "relaxed_struct_unsize",
"relocation_model", "rem", "rem_assign", "repr", "repr128",
"repr_align", "repr_align_enum", "repr_packed", "repr_simd",
"repr_transparent", "require", "reserve-x18", "residual",
"result", "result_ffi_guarantees",
"return_position_impl_trait_in_trait",
"return_type_notation", "riscv32", "riscv64",
"riscv_target_feature", "rlib", "ropi", "ropi-rwpi",
"rotate_left", "rotate_right", "round_ties_even_f16",
"round_ties_even_f32", "round_ties_even_f64",
"round_ties_even_f128", "roundf16", "roundf32", "roundf64",
"roundf128", "rtm_target_feature", "runtime", "rust",
"rust_2015", "rust_2018", "rust_2018_preview", "rust_2021",
"rust_2024", "rust_analyzer", "rust_begin_unwind",
"rust_cold_cc", "rust_eh_catch_typeinfo",
"rust_eh_personality", "rust_future", "rust_logo",
"rust_out", "rust_preserve_none_cc", "rustc", "rustc_abi",
"rustc_align", "rustc_align_static", "rustc_allocator",
"rustc_allocator_zeroed", "rustc_allocator_zeroed_variant",
"rustc_allow_const_fn_unstable",
"rustc_allow_incoherent_impl",
"rustc_allowed_through_unstable_modules", "rustc_as_ptr",
"rustc_attrs", "rustc_autodiff", "rustc_builtin_macro",
"rustc_capture_analysis", "rustc_clean",
"rustc_coherence_is_core", "rustc_coinductive",
"rustc_confusables", "rustc_const_stable",
"rustc_const_stable_indirect", "rustc_const_unstable",
"rustc_conversion_suggestion", "rustc_deallocator",
"rustc_default_body_unstable",
"rustc_delayed_bug_from_inside_query",
"rustc_deny_explicit_impl", "rustc_deprecated_safe_2024",
"rustc_diagnostic_item", "rustc_diagnostic_macros",
"rustc_do_not_const_check", "rustc_doc_primitive",
"rustc_driver", "rustc_dummy", "rustc_dump_def_parents",
"rustc_dump_def_path", "rustc_dump_hidden_type_of_opaques",
"rustc_dump_inferred_outlives", "rustc_dump_item_bounds",
"rustc_dump_layout", "rustc_dump_object_lifetime_defaults",
"rustc_dump_predicates", "rustc_dump_symbol_name",
"rustc_dump_user_args", "rustc_dump_variances",
"rustc_dump_variances_of_opaques", "rustc_dump_vtable",
"rustc_dyn_incompatible_trait",
"rustc_effective_visibility", "rustc_eii_foreign_item",
"rustc_evaluate_where_clauses", "rustc_expected_cgu_reuse",
"rustc_force_inline", "rustc_has_incoherent_inherent_impls",
"rustc_if_this_changed", "rustc_inherit_overflow_checks",
"rustc_insignificant_dtor", "rustc_intrinsic",
"rustc_intrinsic_const_stable_indirect",
"rustc_legacy_const_generics",
"rustc_lint_opt_deny_field_access", "rustc_lint_opt_ty",
"rustc_lint_query_instability",
"rustc_lint_untracked_query_information",
"rustc_macro_transparency", "rustc_main", "rustc_mir",
"rustc_must_implement_one_of",
"rustc_must_match_exhaustively",
"rustc_never_returns_null_ptr", "rustc_never_type_options",
"rustc_no_implicit_autorefs", "rustc_no_implicit_bounds",
"rustc_no_mir_inline", "rustc_no_writable",
"rustc_non_const_trait_method",
"rustc_nonnull_optimization_guaranteed", "rustc_nounwind",
"rustc_objc_class", "rustc_objc_selector",
"rustc_offload_kernel", "rustc_on_unimplemented",
"rustc_paren_sugar", "rustc_partition_codegened",
"rustc_partition_reused", "rustc_pass_by_value",
"rustc_pass_indirectly_in_non_rustic_abis", "rustc_peek",
"rustc_peek_liveness", "rustc_peek_maybe_init",
"rustc_peek_maybe_uninit", "rustc_preserve_ub_checks",
"rustc_private", "rustc_proc_macro_decls",
"rustc_promotable", "rustc_pub_transparent",
"rustc_reallocator", "rustc_regions",
"rustc_reservation_impl", "rustc_scalable_vector",
"rustc_should_not_be_called_on_const_items",
"rustc_simd_monomorphize_lane_limit",
"rustc_skip_during_method_dispatch",
"rustc_specialization_trait", "rustc_std_internal_symbol",
"rustc_strict_coherence", "rustc_test_marker",
"rustc_then_this_would_need", "rustc_trivial_field_reads",
"rustc_unsafe_specialization_marker", "rustdoc",
"rustdoc_internals", "rustdoc_missing_doc_code_examples",
"rustfmt", "rvalue_static_promotion", "rwpi", "s390x",
"s390x_target_feature", "s390x_target_feature_vector",
"safety", "sanitize", "sanitizer_cfi_generalize_pointers",
"sanitizer_cfi_normalize_integers", "sanitizer_runtime",
"saturating_add", "saturating_sub", "sdylib",
"search_unbox", "select_unpredictable", "self_in_typedefs",
"self_struct_ctor", "semiopaque", "sha2", "sha3",
"sha512_sm_x86", "shadow_call_stack", "shallow", "shl",
"shl_assign", "shorter_tail_lifetimes", "should_panic",
"show", "shr", "shr_assign", "signed", "simd", "simd_add",
"simd_and", "simd_arith_offset", "simd_as", "simd_bitmask",
"simd_bitreverse", "simd_bswap", "simd_carryless_mul",
"simd_cast", "simd_cast_ptr", "simd_ceil", "simd_ctlz",
"simd_ctpop", "simd_cttz", "simd_div", "simd_eq",
"simd_expose_provenance", "simd_extract",
"simd_extract_dyn", "simd_fabs", "simd_fcos", "simd_fexp",
"simd_fexp2", "simd_ffi", "simd_flog", "simd_flog2",
"simd_flog10", "simd_floor", "simd_fma", "simd_fsin",
"simd_fsqrt", "simd_funnel_shl", "simd_funnel_shr",
"simd_gather", "simd_ge", "simd_gt", "simd_insert",
"simd_insert_dyn", "simd_le", "simd_lt", "simd_masked_load",
"simd_masked_store", "simd_maximum_number_nsz",
"simd_minimum_number_nsz", "simd_mul", "simd_ne",
"simd_neg", "simd_or", "simd_reduce_add_ordered",
"simd_reduce_add_unordered", "simd_reduce_all",
"simd_reduce_and", "simd_reduce_any", "simd_reduce_max",
"simd_reduce_min", "simd_reduce_mul_ordered",
"simd_reduce_mul_unordered", "simd_reduce_or",
"simd_reduce_xor", "simd_relaxed_fma", "simd_rem",
"simd_round", "simd_round_ties_even", "simd_saturating_add",
"simd_saturating_sub", "simd_scatter", "simd_select",
"simd_select_bitmask", "simd_shl", "simd_shr",
"simd_shuffle", "simd_shuffle_const_generic", "simd_splat",
"simd_sub", "simd_trunc", "simd_with_exposed_provenance",
"simd_xor", "since", "sinf16", "sinf32", "sinf64",
"sinf128", "size", "size_of", "size_of_val", "sized",
"sized_hierarchy", "slice", "slice_from_raw_parts",
"slice_from_raw_parts_mut", "slice_get_unchecked",
"slice_len_fn", "slice_patterns", "slicing_syntax",
"soft-float", "sparc", "sparc64", "sparc_target_feature",
"spe_acc", "specialization", "speed", "spirv", "spotlight",
"sqrtf16", "sqrtf32", "sqrtf64", "sqrtf128", "sreg",
"sreg_low16", "sse", "sse2", "sse4a_target_feature",
"stable", "staged_api", "start", "state", "static_align",
"static_in_const", "static_nobundle", "static_recursion",
"staticlib", "std", "std_lib_injection", "std_panic",
"std_panic_2015_macro", "std_panic_macro", "stmt",
"stmt_expr_attributes", "stop_after_dataflow", "store",
"str", "str_from_utf8", "str_from_utf8_mut",
"str_from_utf8_unchecked", "str_from_utf8_unchecked_mut",
"str_inherent_from_utf8", "str_inherent_from_utf8_mut",
"str_inherent_from_utf8_unchecked",
"str_inherent_from_utf8_unchecked_mut",
"strict_provenance_lints", "string_deref_patterns",
"stringify", "struct_field_attributes", "struct_inherit",
"struct_variant", "structural_match", "structural_peq",
"sub", "sub_assign", "sub_with_overflow", "suggestion",
"super_let", "supertrait_item_shadowing", "sve_cast",
"sve_tuple_create2", "sve_tuple_create3",
"sve_tuple_create4", "sve_tuple_get", "sve_tuple_set",
"sym", "sync", "synthetic", "t32", "target", "target_abi",
"target_arch", "target_endian", "target_env",
"target_family", "target_feature", "target_feature_11",
"target_feature_inline_always", "target_has_atomic",
"target_has_atomic_equal_alignment",
"target_has_atomic_load_store", "target_has_reliable_f16",
"target_has_reliable_f16_math", "target_has_reliable_f128",
"target_has_reliable_f128_math", "target_object_format",
"target_os", "target_pointer_width", "target_thread_local",
"target_vendor", "tbm_target_feature", "termination",
"termination_trait", "termination_trait_test", "test",
"test_2018_feature", "test_accepted_feature", "test_case",
"test_incomplete_feature", "test_removed_feature",
"test_runner", "test_unstable_lint", "thread",
"thread_local", "three_way_compare", "thumb2", "thumb-mode",
"tmm_reg", "to_owned_method", "to_string", "to_vec",
"tool_attributes", "tool_lints", "trace_macros",
"track_caller", "trait_alias", "trait_ty",
"trait_upcasting", "transmute", "transmute_generic_consts",
"transmute_opts", "transmute_trait", "transmute_unchecked",
"transparent", "transparent_enums", "transparent_unions",
"trivial_bounds", "trivial_clone", "truncf16", "truncf32",
"truncf64", "truncf128", "try_blocks",
"try_blocks_heterogeneous", "try_capture", "try_from",
"try_into", "try_trait_v2", "try_trait_v2_residual",
"try_update", "tt", "tuple", "tuple_indexing",
"tuple_trait", "two_phase", "ty",
"type_alias_enum_variants", "type_alias_impl_trait",
"type_ascribe", "type_ascription",
"type_changing_struct_update", "type_id", "type_id_eq",
"type_id_vtable", "type_info", "type_ir",
"type_ir_infer_ctxt_like", "type_ir_inherent",
"type_ir_interner", "type_length_limit", "type_macros",
"type_name", "type_of", "type_privacy_lints",
"typed_swap_nonoverlapping", "u8", "u8_legacy_const_max",
"u8_legacy_const_min", "u8_legacy_fn_max_value",
"u8_legacy_fn_min_value", "u8_legacy_mod", "u16",
"u16_legacy_const_max", "u16_legacy_const_min",
"u16_legacy_fn_max_value", "u16_legacy_fn_min_value",
"u16_legacy_mod", "u32", "u32_legacy_const_max",
"u32_legacy_const_min", "u32_legacy_fn_max_value",
"u32_legacy_fn_min_value", "u32_legacy_mod", "u64",
"u64_legacy_const_max", "u64_legacy_const_min",
"u64_legacy_fn_max_value", "u64_legacy_fn_min_value",
"u64_legacy_mod", "u128", "u128_legacy_const_max",
"u128_legacy_const_min", "u128_legacy_fn_max_value",
"u128_legacy_fn_min_value", "u128_legacy_mod", "ub_checks",
"unaligned_volatile_load", "unaligned_volatile_store",
"unboxed_closures", "unchecked_add", "unchecked_div",
"unchecked_funnel_shl", "unchecked_funnel_shr",
"unchecked_mul", "unchecked_rem", "unchecked_shl",
"unchecked_shr", "unchecked_sub", "undecorated",
"underscore_const_names", "underscore_imports",
"underscore_lifetimes", "uniform_paths", "unit",
"universal_impl_trait", "unix", "unlikely", "unmarked_api",
"unnamed_fields", "unpin", "unqualified_local_imports",
"unreachable", "unreachable_2015", "unreachable_2015_macro",
"unreachable_2021", "unreachable_code",
"unreachable_display", "unreachable_macro",
"unrestricted_attribute_tokens", "unsafe_attributes",
"unsafe_binders", "unsafe_block_in_unsafe_fn",
"unsafe_cell", "unsafe_cell_raw_get", "unsafe_eii",
"unsafe_extern_blocks", "unsafe_fields",
"unsafe_no_drop_flag", "unsafe_pinned", "unsafe_unpin",
"unsafety", "unsize", "unsized_const_param_ty",
"unsized_const_params", "unsized_fn_params",
"unsized_locals", "unsized_tuple_coercion", "unstable",
"unstable_feature_bound",
"this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?",
"unstable_removed", "untagged_unions", "unused_imports",
"unwind", "unwind_attributes", "unwind_safe_trait",
"unwrap", "unwrap_binder", "unwrap_or", "update",
"use_cloned", "use_extern_macros", "use_nested_groups",
"used", "used_with_arg", "using", "usize",
"usize_legacy_const_max", "usize_legacy_const_min",
"usize_legacy_fn_max_value", "usize_legacy_fn_min_value",
"usize_legacy_mod", "v1", "v8plus", "va_arg", "va_arg_safe",
"va_copy", "va_end", "va_list", "va_start", "val",
"validity", "value", "values", "var", "variadic",
"variant_count", "variants", "vec", "vector", "verbatim",
"version", "vfp2", "view_types", "vis",
"visible_private_types", "volatile", "volatile_copy_memory",
"volatile_copy_nonoverlapping_memory", "volatile_load",
"volatile_set_memory", "volatile_store", "vreg",
"vreg_low16", "vreg_pair", "vsreg", "vsx", "vtable_align",
"vtable_size", "warn", "wasip2", "wasm", "wasm32", "wasm64",
"wasm_abi", "wasm_import_module", "wasm_target_feature",
"weak", "weak_odr", "where_clause_attrs", "while_let",
"whole-archive", "width", "windows", "windows_subsystem",
"with_negative_coherence", "wrap_binder", "wrapping_add",
"wrapping_div", "wrapping_mul", "wrapping_rem",
"wrapping_rem_euclid", "wrapping_sub", "wreg",
"write_box_via_move", "write_bytes", "write_fmt",
"write_macro", "write_str", "write_via_move",
"writeln_macro", "x86", "x86_64", "x86_amx_intrinsics",
"x87_reg", "x87_target_feature", "xcoff", "xer", "xmm_reg",
"xop_target_feature", "xtensa", "yeet_desugar_details",
"yeet_expr", "yes", "yield_expr", "ymm_reg", "yreg", "zca",
"zfh", "zfhmin", "zmm_reg", "ztso", "0", "1", "2", "3", "4",
"5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S",
"T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e",
"f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q",
"r", "s", "t", "u", "v", "w", "x", "y", "z",
"1.97.0-nightly"], extra_symbols)
}
}symbols! {
24 Keywords {
33 DollarCrate: "$crate",
39 PathRoot: "{{root}}",
40 Underscore: "_",
41 As: "as",
47 Break: "break",
48 Const: "const",
49 Continue: "continue",
50 Crate: "crate",
51 Else: "else",
52 Enum: "enum",
53 Extern: "extern",
54 False: "false",
55 Fn: "fn",
56 For: "for",
57 If: "if",
58 Impl: "impl",
59 In: "in",
60 Let: "let",
61 Loop: "loop",
62 Match: "match",
63 Mod: "mod",
64 Move: "move",
65 Mut: "mut",
66 Pub: "pub",
67 Ref: "ref",
68 Return: "return",
69 SelfLower: "self",
70 SelfUpper: "Self",
71 Static: "static",
72 Struct: "struct",
73 Super: "super",
74 Trait: "trait",
75 True: "true",
76 Type: "type",
77 Unsafe: "unsafe",
78 Use: "use",
79 Where: "where",
80 While: "while",
81 Abstract: "abstract",
87 Become: "become",
88 Box: "box",
89 Do: "do",
90 Final: "final",
91 Macro: "macro",
92 Override: "override",
93 Priv: "priv",
94 Typeof: "typeof",
95 Unsized: "unsized",
96 Virtual: "virtual",
97 Yield: "yield",
98 Async: "async", Await: "await", Dyn: "dyn", Gen: "gen", Try: "try", StaticLifetime: "'static",
121 UnderscoreLifetime: "'_",
122 Auto: "auto",
128 Builtin: "builtin",
129 Catch: "catch",
130 ContractEnsures: "contract_ensures",
131 ContractRequires: "contract_requires",
132 Default: "default",
133 MacroRules: "macro_rules",
134 Raw: "raw",
135 Reuse: "reuse",
136 Safe: "safe",
137 Union: "union",
138 Yeet: "yeet",
139 }
141
142 Symbols {
156 Abi,
158 AcqRel,
159 Acquire,
160 Active,
161 ActiveOnly,
162 Alignment,
163 Arc,
164 ArcWeak,
165 Array,
166 AsMut,
167 AsRef,
168 AssertParamIsClone,
169 AssertParamIsCopy,
170 AssertParamIsEq,
171 AsyncGenFinished,
172 AsyncGenPending,
173 AsyncGenReady,
174 Atomic,
175 BTreeMap,
176 Bool,
177 Borrow,
178 BorrowMut,
179 Break,
180 BuildHasher,
181 CStr,
182 CallOnceFuture,
183 CallRefFuture,
184 Capture,
185 Cell,
186 Char,
187 Cleanup,
188 Clone,
189 CoercePointee,
190 CoercePointeeValidated,
191 CoerceUnsized,
192 Const,
193 ConstParamTy,
194 ConstParamTy_,
195 Context,
196 Continue,
197 ControlFlow,
198 Copy,
199 Cow,
200 Debug,
201 Default,
202 Deref,
203 DispatchFromDyn,
204 Display,
205 Dual,
206 DualOnly,
207 Dualv,
208 DualvOnly,
209 Duplicated,
210 DuplicatedOnly,
211 DynTrait,
212 Enum,
213 Eq,
214 Equal,
215 Err,
216 ExternC,
217 ExternRust,
218 Float,
219 FmtArgumentsNew,
220 Fn,
221 FnMut,
222 FnOnce,
223 FnPtr,
224 Formatter,
225 Forward,
226 From,
227 FromIterator,
228 FromResidual,
229 GlobalAlloc,
230 Hash,
231 HashMap,
232 HashSet,
233 Hasher,
234 InCleanup,
235 IndexOutput,
236 Input,
237 Int,
238 Into,
239 IntoFuture,
240 IntoIterator,
241 IntoIteratorItem,
242 IrTyKind,
243 Item,
244 ItemContext,
245 Iterator,
246 IteratorItem,
247 IteratorMap,
248 Layout,
249 Lifetime,
250 LintPass,
251 LocalKey,
252 Mutex,
253 MutexGuard,
254 Named,
255 NonNull,
256 NonZero,
257 None,
258 Normal,
259 Ok,
260 Option,
261 Ord,
262 Ordering,
263 Other,
264 Output,
265 ParamSet,
266 PartialEq,
267 PartialOrd,
268 Pending,
269 PinDerefMutHelper,
270 Pointer,
271 Poll,
272 ProcMacro,
273 Range,
274 RangeCopy,
275 RangeFrom,
276 RangeFromCopy,
277 RangeFull,
278 RangeInclusive,
279 RangeInclusiveCopy,
280 RangeMax,
281 RangeMin,
282 RangeSub,
283 RangeTo,
284 RangeToInclusive,
285 RangeToInclusiveCopy,
286 Rc,
287 RcWeak,
288 Ready,
289 RefCell,
290 Reference,
291 Relaxed,
292 Release,
293 Result,
294 ResumeTy,
295 Reverse,
296 Rust,
297 RustaceansAreAwesome,
298 RwLock,
299 RwLockReadGuard,
300 RwLockWriteGuard,
301 SelfTy,
302 Send,
303 SeqCst,
304 Sized,
305 Slice,
306 SliceIndex,
307 Some,
308 Source,
309 SpanCtxt,
310 Str,
311 String,
312 Struct,
313 StructuralPartialEq,
314 SymbolIntern,
315 Sync,
316 SyncUnsafeCell,
317 Target,
318 This,
319 TokenStream,
320 Trait,
321 TrivialClone,
322 Try,
323 TryCaptureGeneric,
324 TryCapturePrintable,
325 TryFrom,
326 TryInto,
327 Tuple,
328 Ty,
329 TyCtxt,
330 TyKind,
331 Type,
332 Union,
333 Unsize,
334 Vec,
335 Wrapper,
336 _DECLS,
337 __H,
338 __S,
339 __awaitee,
340 __try_var,
341 _t,
342 _task_context,
343 a32,
344 aarch64,
345 aarch64_target_feature,
346 aarch64_unstable_target_feature,
347 aarch64_ver_target_feature,
348 abi,
349 abi_amdgpu_kernel,
350 abi_avr_interrupt,
351 abi_c_cmse_nonsecure_call,
352 abi_cmse_nonsecure_call,
353 abi_custom,
354 abi_efiapi,
355 abi_gpu_kernel,
356 abi_msp430_interrupt,
357 abi_ptx,
358 abi_riscv_interrupt,
359 abi_sysv64,
360 abi_thiscall,
361 abi_unadjusted,
362 abi_vectorcall,
363 abi_x86_interrupt,
364 abort,
365 add,
366 add_assign,
367 add_with_overflow,
368 address,
369 adt_const_params,
370 advanced_slice_patterns,
371 adx_target_feature,
372 aes,
373 aggregate_raw_ptr,
374 alias,
375 align,
376 align_of,
377 align_of_val,
378 alignment,
379 all,
380 alloc,
381 alloc_error_handler,
382 alloc_layout,
383 alloc_zeroed,
384 allocator,
385 allocator_api,
386 allocator_internals,
387 allow,
388 allow_fail,
389 allow_internal_unsafe,
390 allow_internal_unstable,
391 altivec,
392 alu32,
393 always,
394 amdgpu,
395 amdgpu_dispatch_ptr,
396 analysis,
397 and,
398 and_then,
399 anon,
400 anon_assoc,
401 anonymous_lifetime_in_impl_trait,
402 any,
403 apx_target_feature,
404 arbitrary_enum_discriminant,
405 arbitrary_self_types,
406 arbitrary_self_types_pointers,
407 areg,
408 args,
409 arith_offset,
410 arm,
411 arm64ec,
412 arm_a32: "arm::a32",
413 arm_t32: "arm::t32",
414 arm_target_feature,
415 array,
416 as_dash_needed: "as-needed",
417 as_ref,
418 asm,
419 asm_cfg,
420 asm_const,
421 asm_experimental_arch,
422 asm_experimental_reg,
423 asm_goto,
424 asm_goto_with_outputs,
425 asm_sym,
426 asm_unwind,
427 assert,
428 assert_eq,
429 assert_eq_macro,
430 assert_fields_are_eq,
431 assert_inhabited,
432 assert_macro,
433 assert_mem_uninitialized_valid,
434 assert_ne_macro,
435 assert_receiver_is_total_eq,
436 assert_zero_valid,
437 asserting,
438 associated_const_equality,
439 associated_consts,
440 associated_type_bounds,
441 associated_type_defaults,
442 associated_types,
443 assume,
444 assume_init,
445 asterisk: "*",
446 async_await,
447 async_call,
448 async_call_mut,
449 async_call_once,
450 async_closure,
451 async_drop,
452 async_drop_in_place,
453 async_fn,
454 async_fn_in_dyn_trait,
455 async_fn_in_trait,
456 async_fn_kind_helper,
457 async_fn_kind_upvars,
458 async_fn_mut,
459 async_fn_once,
460 async_fn_once_output,
461 async_fn_track_caller,
462 async_fn_traits,
463 async_for_loop,
464 async_gen_internals,
465 async_iterator,
466 async_iterator_poll_next,
467 async_trait_bounds,
468 atomic_and,
469 atomic_cxchg,
470 atomic_cxchgweak,
471 atomic_fence,
472 atomic_load,
473 atomic_max,
474 atomic_min,
475 atomic_nand,
476 atomic_or,
477 atomic_singlethreadfence,
478 atomic_store,
479 atomic_umax,
480 atomic_umin,
481 atomic_xadd,
482 atomic_xchg,
483 atomic_xor,
484 atomic_xsub,
485 atomics,
486 att_syntax,
487 attr,
488 attr_literals,
489 attribute,
490 attributes,
491 audit_that,
492 augmented_assignments,
493 auto_cfg,
494 auto_traits,
495 autodiff,
496 autodiff_forward,
497 autodiff_reverse,
498 automatically_derived,
499 available_externally,
500 avr,
501 avr_target_feature,
502 avx,
503 avx10_target_feature,
504 avx512_target_feature,
505 avx512bw,
506 avx512f,
507 await_macro,
508 backchain,
509 backend_repr,
510 bang,
511 begin_panic,
512 bench,
513 bevy_ecs,
514 bikeshed,
515 bikeshed_guaranteed_no_drop,
516 bin,
517 bind_by_move_pattern_guards,
518 bindings_after_at,
519 bitand,
520 bitand_assign,
521 bitor,
522 bitor_assign,
523 bitreverse,
524 bits,
525 bitxor,
526 bitxor_assign,
527 black_box,
528 block,
529 blocking,
530 bool,
531 borrowck_graphviz_format,
532 borrowck_graphviz_postflow,
533 box_new,
534 box_patterns,
535 box_syntax,
536 boxed_slice,
537 bpf,
538 bpf_target_feature,
539 braced_empty_structs,
540 branch,
541 breakpoint,
542 bridge,
543 bswap,
544 built,
545 builtin_syntax,
546 bundle,
547 c_dash_variadic,
548 c_str_literals,
549 c_unwind,
550 c_variadic,
551 c_variadic_experimental_arch,
552 c_variadic_naked_functions,
553 c_void,
554 call,
555 call_mut,
556 call_once,
557 call_once_future,
558 call_ref_future,
559 caller,
560 caller_location,
561 capture_disjoint_fields,
562 carrying_mul_add,
563 carryless_mul,
564 catch_unwind,
565 cause,
566 cdylib,
567 ceilf16,
568 ceilf32,
569 ceilf64,
570 ceilf128,
571 cfg,
572 cfg_accessible,
573 cfg_attr,
574 cfg_attr_multi,
575 cfg_attr_trace: "<cfg_attr_trace>", cfg_boolean_literals,
577 cfg_contract_checks,
578 cfg_doctest,
579 cfg_emscripten_wasm_eh,
580 cfg_eval,
581 cfg_overflow_checks,
582 cfg_panic,
583 cfg_relocation_model,
584 cfg_sanitize,
585 cfg_sanitizer_cfi,
586 cfg_select,
587 cfg_target_abi,
588 cfg_target_compact,
589 cfg_target_feature,
590 cfg_target_has_atomic,
591 cfg_target_has_atomic_equal_alignment,
592 cfg_target_has_reliable_f16_f128,
593 cfg_target_object_format,
594 cfg_target_thread_local,
595 cfg_target_vendor,
596 cfg_trace: "<cfg_trace>", cfg_ub_checks,
598 cfg_version,
599 cfi,
600 cfi_encoding,
601 char,
602 client,
603 clippy,
604 clobber_abi,
605 clone,
606 clone_closures,
607 clone_fn,
608 clone_from,
609 closure,
610 closure_lifetime_binder,
611 closure_to_fn_coercion,
612 closure_track_caller,
613 cmp,
614 cmp_ord_max,
615 cmp_ord_min,
616 cmp_partialeq_eq,
617 cmp_partialeq_ne,
618 cmp_partialord_cmp,
619 cmp_partialord_ge,
620 cmp_partialord_gt,
621 cmp_partialord_le,
622 cmp_partialord_lt,
623 cmpxchg16b_target_feature,
624 cmse_nonsecure_entry,
625 coerce_pointee_validated,
626 coerce_shared,
627 coerce_unsized,
628 coff,
629 cold,
630 cold_path,
631 collapse_debuginfo,
632 column,
633 common,
634 compare_bytes,
635 compare_exchange,
636 compare_exchange_weak,
637 compile_error,
638 compiler,
639 compiler_builtins,
640 compiler_copy,
641 compiler_fence,
642 compiler_move,
643 concat,
644 concat_bytes,
645 conservative_impl_trait,
646 console,
647 const_allocate,
648 const_async_blocks,
649 const_block_items,
650 const_c_variadic,
651 const_closures,
652 const_compare_raw_pointers,
653 const_constructor,
654 const_continue,
655 const_deallocate,
656 const_destruct,
657 const_eval_limit,
658 const_eval_select,
659 const_evaluatable_checked,
660 const_extern_fn,
661 const_fn,
662 const_fn_floating_point_arithmetic,
663 const_fn_fn_ptr_basics,
664 const_fn_trait_bound,
665 const_fn_transmute,
666 const_fn_union,
667 const_fn_unsize,
668 const_for,
669 const_format_args,
670 const_generics,
671 const_generics_defaults,
672 const_if_match,
673 const_impl_trait,
674 const_in_array_repeat_expressions,
675 const_indexing,
676 const_let,
677 const_loop,
678 const_make_global,
679 const_mut_refs,
680 const_panic,
681 const_panic_fmt,
682 const_param_ty,
683 const_param_ty_unchecked,
684 const_precise_live_drops,
685 const_ptr_cast,
686 const_raw_ptr_deref,
687 const_raw_ptr_to_usize_cast,
688 const_refs_to_cell,
689 const_refs_to_static,
690 const_trait_bound_opt_out,
691 const_trait_impl,
692 const_try,
693 const_ty_placeholder: "<const_ty>",
694 constant,
695 constructor,
696 contract_build_check_ensures,
697 contract_check_ensures,
698 contract_check_requires,
699 contract_checks,
700 contracts,
701 contracts_ensures,
702 contracts_internals,
703 contracts_requires,
704 convert,
705 copy,
706 copy_closures,
707 copy_nonoverlapping,
708 copysignf16,
709 copysignf32,
710 copysignf64,
711 copysignf128,
712 core,
713 core_panic,
714 core_panic_2015_macro,
715 core_panic_macro,
716 coroutine,
717 coroutine_clone,
718 coroutine_resume,
719 coroutine_return,
720 coroutine_state,
721 coroutine_yield,
722 coroutines,
723 cosf16,
724 cosf32,
725 cosf64,
726 cosf128,
727 count,
728 coverage,
729 coverage_attribute,
730 cr,
731 crate_in_paths,
732 crate_local,
733 crate_name,
734 crate_type,
735 crate_visibility_modifier,
736 crt_dash_static: "crt-static",
737 csky,
738 csky_target_feature,
739 cstr_type,
740 cstring_type,
741 ctlz,
742 ctlz_nonzero,
743 ctpop,
744 ctr,
745 cttz,
746 cttz_nonzero,
747 custom_attribute,
748 custom_code_classes_in_docs,
749 custom_derive,
750 custom_inner_attributes,
751 custom_mir,
752 custom_test_frameworks,
753 d32,
754 dbg_macro,
755 dead_code,
756 dealloc,
757 debug,
758 debug_assert_eq_macro,
759 debug_assert_macro,
760 debug_assert_ne_macro,
761 debug_assertions,
762 debug_struct_fields_finish,
763 debug_tuple_fields_finish,
764 debugger_visualizer,
765 decl_macro,
766 declare_lint_pass,
767 decorated,
768 default_alloc_error_handler,
769 default_field_values,
770 default_fn,
771 default_lib_allocator,
772 default_method_body_is_const,
773 default_trait1,
778 default_trait2,
779 default_trait3,
780 default_trait4,
781 default_type_parameter_fallback,
783 default_type_params,
784 define_opaque,
785 deny,
786 deprecated,
787 deprecated_safe,
788 deprecated_suggestion,
789 deref,
790 deref_method,
791 deref_mut,
792 deref_patterns,
793 deref_pure,
794 deref_target,
795 derive,
796 derive_const,
797 derive_const_issue: "118304",
798 derive_default_enum,
799 derive_from,
800 derive_smart_pointer,
801 destruct,
802 destructuring_assignment,
803 diagnostic,
804 diagnostic_namespace,
805 diagnostic_on_const,
806 diagnostic_on_move,
807 diagnostic_on_unknown,
808 diagnostic_on_unmatch_args,
809 dialect,
810 direct,
811 discriminant_kind,
812 discriminant_type,
813 discriminant_value,
814 disjoint_bitor,
815 dispatch_from_dyn,
816 div,
817 div_assign,
818 diverging_block_default,
819 dl,
820 do_not_recommend,
821 doc,
822 doc_alias,
823 doc_auto_cfg,
824 doc_cfg,
825 doc_cfg_hide,
826 doc_keyword,
827 doc_masked,
828 doc_notable_trait,
829 doc_primitive,
830 doc_spotlight,
831 doctest,
832 dotdot_in_tuple_patterns,
833 dotdoteq_in_patterns,
834 dreg,
835 dreg_low8,
836 dreg_low16,
837 drop,
838 drop_in_place,
839 drop_types_in_const,
840 dropck_eyepatch,
841 dropck_parametricity,
842 dummy: "<!dummy!>", dummy_cgu_name,
844 dylib,
845 dyn_compatible_for_dispatch,
846 dyn_metadata,
847 dyn_star,
848 dyn_trait,
849 dynamic_no_pic: "dynamic-no-pic",
850 edition_panic,
851 effective_target_features,
852 effects,
853 eh_catch_typeinfo,
854 eh_personality,
855 eii,
856 eii_declaration,
857 eii_internals,
858 eii_shared_macro,
859 element_ty,
860 elf,
861 empty: "",
869 empty_braces: "{}",
870 emscripten_wasm_eh,
871 enable,
872 end,
873 entry_nops,
874 env,
875 env_CFG_RELEASE: env!("CFG_RELEASE"),
876 eq,
877 ergonomic_clones,
878 ermsb_target_feature,
879 exact_div,
880 except,
881 exception_handling: "exception-handling",
882 exclusive_range_pattern,
883 exhaustive_integer_patterns,
884 exhaustive_patterns,
885 existential_type,
886 exp2f16,
887 exp2f32,
888 exp2f64,
889 exp2f128,
890 expect,
891 expected,
892 expf16,
893 expf32,
894 expf64,
895 expf128,
896 explicit_extern_abis,
897 explicit_generic_args_with_impl_trait,
898 explicit_tail_calls,
899 export_name,
900 export_stable,
901 export_symbols: "export-symbols",
902 expr,
903 expr_2021,
904 expr_fragment_specifier_2024,
905 extended_key_value_attributes,
906 extended_varargs_abi_support,
907 extern_absolute_paths,
908 extern_crate_item_prelude,
909 extern_crate_self,
910 extern_in_paths,
911 extern_item_impls,
912 extern_prelude,
913 extern_system_varargs,
914 extern_types,
915 extern_weak,
916 external,
917 external_doc,
918 f16,
919 f16_nan,
920 f16c_target_feature,
921 f32,
922 f32_nan,
923 f64,
924 f64_nan,
925 f128,
926 f128_nan,
927 fabs,
928 fadd_algebraic,
929 fadd_fast,
930 fake_variadic,
931 fallback,
932 fdiv_algebraic,
933 fdiv_fast,
934 feature,
935 fence,
936 ferris: "🦀",
937 fetch_update,
938 ffi_const,
939 ffi_pure,
940 ffi_returns_twice,
941 field,
942 field_base,
943 field_init_shorthand,
944 field_of,
945 field_offset,
946 field_projections,
947 field_representing_type,
948 field_representing_type_raw,
949 field_type,
950 fields,
951 file,
952 final_associated_functions,
953 float_to_int_unchecked,
954 floorf16,
955 floorf32,
956 floorf64,
957 floorf128,
958 fma4_target_feature,
959 fmaf16,
960 fmaf32,
961 fmaf64,
962 fmaf128,
963 fmt,
964 fmt_debug,
965 fmul_algebraic,
966 fmul_fast,
967 fmuladdf16,
968 fmuladdf32,
969 fmuladdf64,
970 fmuladdf128,
971 fn_align,
972 fn_body,
973 fn_delegation,
974 fn_must_use,
975 fn_mut,
976 fn_once,
977 fn_once_output,
978 fn_ptr_addr,
979 fn_ptr_trait,
980 forbid,
981 force_target_feature,
982 forget,
983 format_args,
984 format_args_capture,
985 format_args_nl,
986 format_argument,
987 format_arguments,
988 format_macro,
989 framework,
990 freeze,
991 freeze_impls,
992 freg,
993 frem_algebraic,
994 frem_fast,
995 from,
996 from_desugaring,
997 from_iter,
998 from_output,
999 from_residual,
1000 from_size_align_unchecked,
1001 from_size_alignment_unchecked,
1002 from_str,
1003 from_str_nonconst,
1004 from_usize,
1005 from_yeet,
1006 frontmatter,
1007 fsub_algebraic,
1008 fsub_fast,
1009 full,
1010 fundamental,
1011 fused_iterator,
1012 future_output,
1013 future_trait,
1014 fxsr,
1015 gdb_script_file,
1016 ge,
1017 gen_blocks,
1018 gen_future,
1019 generator_clone,
1020 generators,
1021 generic_arg_infer,
1022 generic_assert,
1023 generic_associated_types,
1024 generic_associated_types_extended,
1025 generic_const_args,
1026 generic_const_exprs,
1027 generic_const_items,
1028 generic_const_parameter_types,
1029 generic_param_attrs,
1030 generic_pattern_types,
1031 generics,
1032 get_context,
1033 global_alloc_ty,
1034 global_allocator,
1035 global_asm,
1036 global_registration,
1037 globs,
1038 gpu_launch_sized_workgroup_mem,
1039 gt,
1040 guard,
1041 guard_patterns,
1042 half_open_range_patterns,
1043 half_open_range_patterns_in_slices,
1044 hash,
1045 hexagon,
1046 hexagon_target_feature,
1047 hidden,
1048 hide,
1049 homogeneous_aggregate,
1050 html_favicon_url,
1051 html_logo_url,
1052 html_no_source,
1053 html_playground_url,
1054 html_root_url,
1055 hvx,
1056 hvx_length64b: "hvx-length64b",
1057 hvx_length128b: "hvx-length128b",
1058 hwaddress,
1059 i8,
1060 i16,
1061 i32,
1062 i64,
1063 i128,
1064 i128_type,
1065 ident,
1066 if_let,
1067 if_let_guard,
1068 if_let_rescope,
1069 if_while_or_patterns,
1070 ignore,
1071 immediate_abort: "immediate-abort",
1072 impl_header_lifetime_elision,
1073 impl_lint_pass,
1074 impl_restriction,
1075 impl_trait_in_assoc_type,
1076 impl_trait_in_bindings,
1077 impl_trait_in_fn_trait_return,
1078 impl_trait_projections,
1079 implied_by,
1080 import,
1081 import_name_type,
1082 import_shadowing,
1083 import_trait_associated_functions,
1084 imported_main,
1085 in_band_lifetimes,
1086 include,
1087 include_bytes,
1088 include_str,
1089 inclusive_range_syntax,
1090 incomplete_features,
1091 index,
1092 index_mut,
1093 infer_outlives_requirements,
1094 infer_static_outlives_requirements,
1095 inherent_associated_types,
1096 initial,
1097 inlateout,
1098 inline,
1099 inline_const,
1100 inline_const_pat,
1101 inout,
1102 inputs,
1103 instruction_set,
1104 integer_: "integer", integral,
1106 internal,
1107 internal_eq_trait_method_impls,
1108 internal_features,
1109 into_async_iter_into_iter,
1110 into_future,
1111 into_iter,
1112 into_try_type,
1113 intra_doc_pointers,
1114 intrinsics,
1115 irrefutable_let_patterns,
1116 is,
1117 is_auto,
1118 is_val_statically_known,
1119 isa_attribute,
1120 isize,
1121 issue,
1122 issue_5723_bootstrap,
1123 issue_tracker_base_url,
1124 item,
1125 item_like_imports,
1126 iter,
1127 iter_mut,
1128 iterator,
1129 iterator_collect_fn,
1130 kcfi,
1131 kernel_address,
1132 kernel_hwaddress,
1133 keylocker_x86,
1134 keyword,
1135 kind,
1136 kreg,
1137 kreg0,
1138 label,
1139 label_break_value,
1140 lahfsahf_target_feature,
1141 lang,
1142 lang_items,
1143 large_assignments,
1144 last,
1145 lateout,
1146 lazy_normalization_consts,
1147 lazy_type_alias,
1148 le,
1149 legacy_receiver,
1150 len,
1151 let_chains,
1152 let_else,
1153 lhs,
1154 lib,
1155 libc,
1156 lifetime,
1157 lifetime_capture_rules_2024,
1158 lifetimes,
1159 line,
1160 link,
1161 link_arg_attribute,
1162 link_args,
1163 link_cfg,
1164 link_dash_arg: "link-arg",
1165 link_llvm_intrinsics,
1166 link_name,
1167 link_ordinal,
1168 link_section,
1169 linkage,
1170 linker,
1171 linker_info,
1172 linker_messages,
1173 linkonce,
1174 linkonce_odr,
1175 lint_reasons,
1176 literal,
1177 little, big,
1178 load,
1179 loaded_from_disk,
1180 local,
1181 local_inner_macros,
1182 log2f16,
1183 log2f32,
1184 log2f64,
1185 log2f128,
1186 log10f16,
1187 log10f32,
1188 log10f64,
1189 log10f128,
1190 log_syntax,
1191 logf16,
1192 logf32,
1193 logf64,
1194 logf128,
1195 loongarch32,
1196 loongarch64,
1197 loongarch_target_feature,
1198 loop_break_value,
1199 loop_match,
1200 lr,
1201 lt,
1202 m68k,
1203 m68k_target_feature,
1204 macho: "mach-o",
1205 macro_at_most_once_rep,
1206 macro_attr,
1207 macro_attributes_in_derive_output,
1208 macro_derive,
1209 macro_escape,
1210 macro_export,
1211 macro_guard_matcher,
1212 macro_lifetime_matcher,
1213 macro_literal_matcher,
1214 macro_metavar_expr,
1215 macro_metavar_expr_concat,
1216 macro_reexport,
1217 macro_use,
1218 macro_vis_matcher,
1219 macros_in_extern,
1220 main,
1221 managed_boxes,
1222 manually_drop,
1223 map,
1224 map_err,
1225 marker,
1226 marker_trait_attr,
1227 masked,
1228 match_beginning_vert,
1229 match_default_bindings,
1230 maximum_number_nsz_f16,
1231 maximum_number_nsz_f32,
1232 maximum_number_nsz_f64,
1233 maximum_number_nsz_f128,
1234 maximumf16,
1235 maximumf32,
1236 maximumf64,
1237 maximumf128,
1238 may_dangle,
1239 may_unwind,
1240 maybe_dangling,
1241 maybe_uninit,
1242 maybe_uninit_uninit,
1243 maybe_uninit_zeroed,
1244 mem,
1245 mem_align_const,
1246 mem_discriminant,
1247 mem_drop,
1248 mem_forget,
1249 mem_size_const,
1250 mem_swap,
1251 mem_uninitialized,
1252 mem_variant_count,
1253 mem_zeroed,
1254 member_constraints,
1255 memory,
1256 memtag,
1257 message,
1258 meta,
1259 meta_sized,
1260 metadata_type,
1261 mgca_type_const_syntax,
1262 min_adt_const_params,
1263 min_const_fn,
1264 min_const_generics,
1265 min_const_unsafe_fn,
1266 min_exhaustive_patterns,
1267 min_generic_const_args,
1268 min_specialization,
1269 min_type_alias_impl_trait,
1270 minimum_number_nsz_f16,
1271 minimum_number_nsz_f32,
1272 minimum_number_nsz_f64,
1273 minimum_number_nsz_f128,
1274 minimumf16,
1275 minimumf32,
1276 minimumf64,
1277 minimumf128,
1278 mips,
1279 mips32r6,
1280 mips64,
1281 mips64r6,
1282 mips_target_feature,
1283 mir_assume,
1284 mir_basic_block,
1285 mir_call,
1286 mir_cast_ptr_to_ptr,
1287 mir_cast_transmute,
1288 mir_cast_unsize,
1289 mir_checked,
1290 mir_debuginfo,
1291 mir_discriminant,
1292 mir_drop,
1293 mir_field,
1294 mir_goto,
1295 mir_make_place,
1296 mir_move,
1297 mir_offset,
1298 mir_ptr_metadata,
1299 mir_return,
1300 mir_return_to,
1301 mir_set_discriminant,
1302 mir_static,
1303 mir_static_mut,
1304 mir_storage_dead,
1305 mir_storage_live,
1306 mir_tail_call,
1307 mir_unreachable,
1308 mir_unwind_cleanup,
1309 mir_unwind_continue,
1310 mir_unwind_resume,
1311 mir_unwind_terminate,
1312 mir_unwind_terminate_reason,
1313 mir_unwind_unreachable,
1314 mir_variant,
1315 miri,
1316 mmx_reg,
1317 modifiers,
1318 module,
1319 module_path,
1320 more_maybe_bounds,
1321 more_qualified_paths,
1322 more_struct_aliases,
1323 movbe_target_feature,
1324 move_ref_pattern,
1325 move_size_limit,
1326 movrs_target_feature,
1327 msp430,
1328 mul,
1329 mul_assign,
1330 mul_with_overflow,
1331 multiple_supertrait_upcastable,
1332 must_not_suspend,
1333 must_use,
1334 mut_preserve_binding_mode_2024,
1335 mut_ref,
1336 mutable,
1337 naked,
1338 naked_asm,
1339 naked_functions,
1340 naked_functions_rustic_abi,
1341 naked_functions_target_feature,
1342 name,
1343 names,
1344 native_link_modifiers,
1345 native_link_modifiers_as_needed,
1346 native_link_modifiers_bundle,
1347 native_link_modifiers_verbatim,
1348 native_link_modifiers_whole_archive,
1349 natvis_file,
1350 ne,
1351 needs_allocator,
1352 needs_drop,
1353 needs_panic_runtime,
1354 neg,
1355 negate_unsigned,
1356 negative_bounds,
1357 negative_impls,
1358 neon,
1359 nested,
1360 never,
1361 never_patterns,
1362 never_type,
1363 never_type_fallback,
1364 new,
1365 new_binary,
1366 new_debug,
1367 new_debug_noop,
1368 new_display,
1369 new_lower_exp,
1370 new_lower_hex,
1371 new_octal,
1372 new_pointer,
1373 new_range,
1374 new_unchecked,
1375 new_upper_exp,
1376 new_upper_hex,
1377 next,
1378 niko,
1379 nll,
1380 no,
1381 no_builtins,
1382 no_core,
1383 no_coverage,
1384 no_crate_inject,
1385 no_debug,
1386 no_default_passes,
1387 no_implicit_prelude,
1388 no_inline,
1389 no_link,
1390 no_main,
1391 no_mangle,
1392 no_sanitize,
1393 no_stack_check,
1394 no_std,
1395 nomem,
1396 non_ascii_idents,
1397 non_exhaustive,
1398 non_exhaustive_omitted_patterns_lint,
1399 non_lifetime_binders,
1400 non_modrs_mods,
1401 nonblocking,
1402 none,
1403 nontemporal_store,
1404 noop_method_borrow,
1405 noop_method_clone,
1406 noop_method_deref,
1407 noprefix,
1408 noreturn,
1409 nostack,
1410 not,
1411 notable_trait,
1412 note,
1413 null,
1414 nvptx64,
1415 nvptx_target_feature,
1416 object_safe_for_dispatch,
1417 of,
1418 off,
1419 offload,
1420 offset,
1421 offset_of,
1422 offset_of_enum,
1423 offset_of_nested,
1424 offset_of_slice,
1425 ok_or_else,
1426 old_name,
1427 omit_gdb_pretty_printer_section,
1428 on,
1429 on_const,
1430 on_move,
1431 on_unimplemented,
1432 on_unknown,
1433 on_unmatch_args,
1434 opaque,
1435 opaque_module_name_placeholder: "<opaque>",
1436 ops,
1437 opt_out_copy,
1438 optimize,
1439 optimize_attribute,
1440 optimized,
1441 optin_builtin_traits,
1442 option,
1443 option_env,
1444 options,
1445 or,
1446 or_patterns,
1447 ord_cmp_method,
1448 other,
1449 out,
1450 output,
1451 overflow_checks,
1452 overlapping_marker_traits,
1453 owned_box,
1454 packed,
1455 packed_bundled_libs,
1456 panic,
1457 panic_2015,
1458 panic_2021,
1459 panic_abort,
1460 panic_bounds_check,
1461 panic_cannot_unwind,
1462 panic_const_add_overflow,
1463 panic_const_async_fn_resumed,
1464 panic_const_async_fn_resumed_drop,
1465 panic_const_async_fn_resumed_panic,
1466 panic_const_async_gen_fn_resumed,
1467 panic_const_async_gen_fn_resumed_drop,
1468 panic_const_async_gen_fn_resumed_panic,
1469 panic_const_coroutine_resumed,
1470 panic_const_coroutine_resumed_drop,
1471 panic_const_coroutine_resumed_panic,
1472 panic_const_div_by_zero,
1473 panic_const_div_overflow,
1474 panic_const_gen_fn_none,
1475 panic_const_gen_fn_none_drop,
1476 panic_const_gen_fn_none_panic,
1477 panic_const_mul_overflow,
1478 panic_const_neg_overflow,
1479 panic_const_rem_by_zero,
1480 panic_const_rem_overflow,
1481 panic_const_shl_overflow,
1482 panic_const_shr_overflow,
1483 panic_const_sub_overflow,
1484 panic_display,
1485 panic_fmt,
1486 panic_handler,
1487 panic_impl,
1488 panic_implementation,
1489 panic_in_cleanup,
1490 panic_info,
1491 panic_invalid_enum_construction,
1492 panic_location,
1493 panic_misaligned_pointer_dereference,
1494 panic_nounwind,
1495 panic_null_pointer_dereference,
1496 panic_runtime,
1497 panic_str_2015,
1498 panic_unwind,
1499 panicking,
1500 param_attrs,
1501 parent_label,
1502 partial_cmp,
1503 partial_ord,
1504 passes,
1505 pat,
1506 pat_param,
1507 patchable_function_entry,
1508 path,
1509 pattern_complexity_limit,
1510 pattern_parentheses,
1511 pattern_type,
1512 pattern_type_range_trait,
1513 pattern_types,
1514 phantom_data,
1515 phase,
1516 pic,
1517 pie,
1518 pin,
1519 pin_ergonomics,
1520 pin_v2,
1521 platform_intrinsics,
1522 plugin,
1523 plugin_registrar,
1524 plugins,
1525 pointee,
1526 pointee_sized,
1527 pointee_trait,
1528 pointer,
1529 poll,
1530 post_cleanup: "post-cleanup",
1531 post_dash_lto: "post-lto",
1532 postfix_match,
1533 powerpc,
1534 powerpc64,
1535 powerpc_target_feature,
1536 powf16,
1537 powf32,
1538 powf64,
1539 powf128,
1540 powif16,
1541 powif32,
1542 powif64,
1543 powif128,
1544 pre_dash_lto: "pre-lto",
1545 precise_capturing,
1546 precise_capturing_in_traits,
1547 precise_pointer_size_matching,
1548 predicates,
1549 pref_align_of,
1550 prefetch_read_data,
1551 prefetch_read_instruction,
1552 prefetch_write_data,
1553 prefetch_write_instruction,
1554 prefix_nops,
1555 preg,
1556 prelude,
1557 prelude_import,
1558 preserves_flags,
1559 prfchw_target_feature,
1560 proc_dash_macro: "proc-macro",
1561 proc_macro,
1562 proc_macro_attribute,
1563 proc_macro_derive,
1564 proc_macro_expr,
1565 proc_macro_gen,
1566 proc_macro_hygiene,
1567 proc_macro_internals,
1568 proc_macro_mod,
1569 proc_macro_non_items,
1570 proc_macro_path_invoc,
1571 profiler_runtime,
1572 ptr,
1573 ptr_cast,
1574 ptr_cast_const,
1575 ptr_cast_mut,
1576 ptr_const_is_null,
1577 ptr_copy,
1578 ptr_copy_nonoverlapping,
1579 ptr_from_ref,
1580 ptr_guaranteed_cmp,
1581 ptr_is_null,
1582 ptr_mask,
1583 ptr_metadata,
1584 ptr_null,
1585 ptr_null_mut,
1586 ptr_offset_from,
1587 ptr_offset_from_unsigned,
1588 ptr_read,
1589 ptr_read_unaligned,
1590 ptr_replace,
1591 ptr_swap,
1592 ptr_swap_nonoverlapping,
1593 ptr_write,
1594 ptr_write_bytes,
1595 ptr_write_unaligned,
1596 ptr_write_volatile,
1597 pub_macro_rules,
1598 pub_restricted,
1599 public,
1600 pure,
1601 pushpop_unsafe,
1602 qreg,
1603 qreg_low4,
1604 qreg_low8,
1605 quad_precision_float,
1606 question_mark,
1607 quote,
1608 range_inclusive_new,
1609 raw_dash_dylib: "raw-dylib",
1610 raw_dylib,
1611 raw_dylib_elf,
1612 raw_eq,
1613 raw_identifiers,
1614 raw_ref_op,
1615 re_rebalance_coherence,
1616 read_via_copy,
1617 readonly,
1618 realloc,
1619 realtime,
1620 reason,
1621 reborrow,
1622 receiver,
1623 receiver_target,
1624 recursion_limit,
1625 reexport_test_harness_main,
1626 ref_pat_eat_one_layer_2024,
1627 ref_pat_eat_one_layer_2024_structural,
1628 ref_pat_everywhere,
1629 ref_unwind_safe_trait,
1630 reference,
1631 reflect,
1632 reg,
1633 reg16,
1634 reg32,
1635 reg64,
1636 reg_abcd,
1637 reg_addr,
1638 reg_byte,
1639 reg_data,
1640 reg_iw,
1641 reg_nonzero,
1642 reg_pair,
1643 reg_ptr,
1644 reg_upper,
1645 register_attr,
1646 register_tool,
1647 relaxed_adts,
1648 relaxed_struct_unsize,
1649 relocation_model,
1650 rem,
1651 rem_assign,
1652 repr,
1653 repr128,
1654 repr_align,
1655 repr_align_enum,
1656 repr_packed,
1657 repr_simd,
1658 repr_transparent,
1659 require,
1660 reserve_x18: "reserve-x18",
1661 residual,
1662 result,
1663 result_ffi_guarantees,
1664 return_position_impl_trait_in_trait,
1665 return_type_notation,
1666 riscv32,
1667 riscv64,
1668 riscv_target_feature,
1669 rlib,
1670 ropi,
1671 ropi_rwpi: "ropi-rwpi",
1672 rotate_left,
1673 rotate_right,
1674 round_ties_even_f16,
1675 round_ties_even_f32,
1676 round_ties_even_f64,
1677 round_ties_even_f128,
1678 roundf16,
1679 roundf32,
1680 roundf64,
1681 roundf128,
1682 rtm_target_feature,
1683 runtime,
1684 rust,
1685 rust_2015,
1686 rust_2018,
1687 rust_2018_preview,
1688 rust_2021,
1689 rust_2024,
1690 rust_analyzer,
1691 rust_begin_unwind,
1692 rust_cold_cc,
1693 rust_eh_catch_typeinfo,
1694 rust_eh_personality,
1695 rust_future,
1696 rust_logo,
1697 rust_out,
1698 rust_preserve_none_cc,
1699 rustc,
1700 rustc_abi,
1701 rustc_align,
1703 rustc_align_static,
1704 rustc_allocator,
1705 rustc_allocator_zeroed,
1706 rustc_allocator_zeroed_variant,
1707 rustc_allow_const_fn_unstable,
1708 rustc_allow_incoherent_impl,
1709 rustc_allowed_through_unstable_modules,
1710 rustc_as_ptr,
1711 rustc_attrs,
1712 rustc_autodiff,
1713 rustc_builtin_macro,
1714 rustc_capture_analysis,
1715 rustc_clean,
1716 rustc_coherence_is_core,
1717 rustc_coinductive,
1718 rustc_confusables,
1719 rustc_const_stable,
1720 rustc_const_stable_indirect,
1721 rustc_const_unstable,
1722 rustc_conversion_suggestion,
1723 rustc_deallocator,
1724 rustc_default_body_unstable,
1725 rustc_delayed_bug_from_inside_query,
1726 rustc_deny_explicit_impl,
1727 rustc_deprecated_safe_2024,
1728 rustc_diagnostic_item,
1729 rustc_diagnostic_macros,
1730 rustc_do_not_const_check,
1731 rustc_doc_primitive,
1732 rustc_driver,
1733 rustc_dummy,
1734 rustc_dump_def_parents,
1735 rustc_dump_def_path,
1736 rustc_dump_hidden_type_of_opaques,
1737 rustc_dump_inferred_outlives,
1738 rustc_dump_item_bounds,
1739 rustc_dump_layout,
1740 rustc_dump_object_lifetime_defaults,
1741 rustc_dump_predicates,
1742 rustc_dump_symbol_name,
1743 rustc_dump_user_args,
1744 rustc_dump_variances,
1745 rustc_dump_variances_of_opaques,
1746 rustc_dump_vtable,
1747 rustc_dyn_incompatible_trait,
1748 rustc_effective_visibility,
1749 rustc_eii_foreign_item,
1750 rustc_evaluate_where_clauses,
1751 rustc_expected_cgu_reuse,
1752 rustc_force_inline,
1753 rustc_has_incoherent_inherent_impls,
1754 rustc_if_this_changed,
1755 rustc_inherit_overflow_checks,
1756 rustc_insignificant_dtor,
1757 rustc_intrinsic,
1758 rustc_intrinsic_const_stable_indirect,
1759 rustc_legacy_const_generics,
1760 rustc_lint_opt_deny_field_access,
1761 rustc_lint_opt_ty,
1762 rustc_lint_query_instability,
1763 rustc_lint_untracked_query_information,
1764 rustc_macro_transparency,
1765 rustc_main,
1766 rustc_mir,
1767 rustc_must_implement_one_of,
1768 rustc_must_match_exhaustively,
1769 rustc_never_returns_null_ptr,
1770 rustc_never_type_options,
1771 rustc_no_implicit_autorefs,
1772 rustc_no_implicit_bounds,
1773 rustc_no_mir_inline,
1774 rustc_no_writable,
1775 rustc_non_const_trait_method,
1776 rustc_nonnull_optimization_guaranteed,
1777 rustc_nounwind,
1778 rustc_objc_class,
1779 rustc_objc_selector,
1780 rustc_offload_kernel,
1781 rustc_on_unimplemented,
1782 rustc_paren_sugar,
1783 rustc_partition_codegened,
1784 rustc_partition_reused,
1785 rustc_pass_by_value,
1786 rustc_pass_indirectly_in_non_rustic_abis,
1787 rustc_peek,
1788 rustc_peek_liveness,
1789 rustc_peek_maybe_init,
1790 rustc_peek_maybe_uninit,
1791 rustc_preserve_ub_checks,
1792 rustc_private,
1793 rustc_proc_macro_decls,
1794 rustc_promotable,
1795 rustc_pub_transparent,
1796 rustc_reallocator,
1797 rustc_regions,
1798 rustc_reservation_impl,
1799 rustc_scalable_vector,
1800 rustc_should_not_be_called_on_const_items,
1801 rustc_simd_monomorphize_lane_limit,
1802 rustc_skip_during_method_dispatch,
1803 rustc_specialization_trait,
1804 rustc_std_internal_symbol,
1805 rustc_strict_coherence,
1806 rustc_test_marker,
1807 rustc_then_this_would_need,
1808 rustc_trivial_field_reads,
1809 rustc_unsafe_specialization_marker,
1810 rustdoc,
1811 rustdoc_internals,
1812 rustdoc_missing_doc_code_examples,
1813 rustfmt,
1814 rvalue_static_promotion,
1815 rwpi,
1816 s390x,
1817 s390x_target_feature,
1818 s390x_target_feature_vector,
1819 safety,
1820 sanitize,
1821 sanitizer_cfi_generalize_pointers,
1822 sanitizer_cfi_normalize_integers,
1823 sanitizer_runtime,
1824 saturating_add,
1825 saturating_sub,
1826 sdylib,
1827 search_unbox,
1828 select_unpredictable,
1829 self_in_typedefs,
1830 self_struct_ctor,
1831 semiopaque,
1832 sha2,
1833 sha3,
1834 sha512_sm_x86,
1835 shadow_call_stack,
1836 shallow,
1837 shl,
1838 shl_assign,
1839 shorter_tail_lifetimes,
1840 should_panic,
1841 show,
1842 shr,
1843 shr_assign,
1844 signed,
1845 simd,
1846 simd_add,
1847 simd_and,
1848 simd_arith_offset,
1849 simd_as,
1850 simd_bitmask,
1851 simd_bitreverse,
1852 simd_bswap,
1853 simd_carryless_mul,
1854 simd_cast,
1855 simd_cast_ptr,
1856 simd_ceil,
1857 simd_ctlz,
1858 simd_ctpop,
1859 simd_cttz,
1860 simd_div,
1861 simd_eq,
1862 simd_expose_provenance,
1863 simd_extract,
1864 simd_extract_dyn,
1865 simd_fabs,
1866 simd_fcos,
1867 simd_fexp,
1868 simd_fexp2,
1869 simd_ffi,
1870 simd_flog,
1871 simd_flog2,
1872 simd_flog10,
1873 simd_floor,
1874 simd_fma,
1875 simd_fsin,
1876 simd_fsqrt,
1877 simd_funnel_shl,
1878 simd_funnel_shr,
1879 simd_gather,
1880 simd_ge,
1881 simd_gt,
1882 simd_insert,
1883 simd_insert_dyn,
1884 simd_le,
1885 simd_lt,
1886 simd_masked_load,
1887 simd_masked_store,
1888 simd_maximum_number_nsz,
1889 simd_minimum_number_nsz,
1890 simd_mul,
1891 simd_ne,
1892 simd_neg,
1893 simd_or,
1894 simd_reduce_add_ordered,
1895 simd_reduce_add_unordered,
1896 simd_reduce_all,
1897 simd_reduce_and,
1898 simd_reduce_any,
1899 simd_reduce_max,
1900 simd_reduce_min,
1901 simd_reduce_mul_ordered,
1902 simd_reduce_mul_unordered,
1903 simd_reduce_or,
1904 simd_reduce_xor,
1905 simd_relaxed_fma,
1906 simd_rem,
1907 simd_round,
1908 simd_round_ties_even,
1909 simd_saturating_add,
1910 simd_saturating_sub,
1911 simd_scatter,
1912 simd_select,
1913 simd_select_bitmask,
1914 simd_shl,
1915 simd_shr,
1916 simd_shuffle,
1917 simd_shuffle_const_generic,
1918 simd_splat,
1919 simd_sub,
1920 simd_trunc,
1921 simd_with_exposed_provenance,
1922 simd_xor,
1923 since,
1924 sinf16,
1925 sinf32,
1926 sinf64,
1927 sinf128,
1928 size,
1929 size_of,
1930 size_of_val,
1931 sized,
1932 sized_hierarchy,
1933 slice,
1934 slice_from_raw_parts,
1935 slice_from_raw_parts_mut,
1936 slice_get_unchecked,
1937 slice_len_fn,
1938 slice_patterns,
1939 slicing_syntax,
1940 soft_float: "soft-float",
1941 sparc,
1942 sparc64,
1943 sparc_target_feature,
1944 spe_acc,
1945 specialization,
1946 speed,
1947 spirv,
1948 spotlight,
1949 sqrtf16,
1950 sqrtf32,
1951 sqrtf64,
1952 sqrtf128,
1953 sreg,
1954 sreg_low16,
1955 sse,
1956 sse2,
1957 sse4a_target_feature,
1958 stable,
1959 staged_api,
1960 start,
1961 state,
1962 static_align,
1963 static_in_const,
1964 static_nobundle,
1965 static_recursion,
1966 staticlib,
1967 std,
1968 std_lib_injection,
1969 std_panic,
1970 std_panic_2015_macro,
1971 std_panic_macro,
1972 stmt,
1973 stmt_expr_attributes,
1974 stop_after_dataflow,
1975 store,
1976 str,
1977 str_from_utf8,
1978 str_from_utf8_mut,
1979 str_from_utf8_unchecked,
1980 str_from_utf8_unchecked_mut,
1981 str_inherent_from_utf8,
1982 str_inherent_from_utf8_mut,
1983 str_inherent_from_utf8_unchecked,
1984 str_inherent_from_utf8_unchecked_mut,
1985 strict_provenance_lints,
1986 string_deref_patterns,
1987 stringify,
1988 struct_field_attributes,
1989 struct_inherit,
1990 struct_variant,
1991 structural_match,
1992 structural_peq,
1993 sub,
1994 sub_assign,
1995 sub_with_overflow,
1996 suggestion,
1997 super_let,
1998 supertrait_item_shadowing,
1999 sve_cast,
2000 sve_tuple_create2,
2001 sve_tuple_create3,
2002 sve_tuple_create4,
2003 sve_tuple_get,
2004 sve_tuple_set,
2005 sym,
2006 sync,
2007 synthetic,
2008 t32,
2009 target,
2010 target_abi,
2011 target_arch,
2012 target_endian,
2013 target_env,
2014 target_family,
2015 target_feature,
2016 target_feature_11,
2017 target_feature_inline_always,
2018 target_has_atomic,
2019 target_has_atomic_equal_alignment,
2020 target_has_atomic_load_store,
2021 target_has_reliable_f16,
2022 target_has_reliable_f16_math,
2023 target_has_reliable_f128,
2024 target_has_reliable_f128_math,
2025 target_object_format,
2026 target_os,
2027 target_pointer_width,
2028 target_thread_local,
2029 target_vendor,
2030 tbm_target_feature,
2031 termination,
2032 termination_trait,
2033 termination_trait_test,
2034 test,
2035 test_2018_feature,
2036 test_accepted_feature,
2037 test_case,
2038 test_incomplete_feature,
2039 test_removed_feature,
2040 test_runner,
2041 test_unstable_lint,
2042 thread,
2043 thread_local,
2044 three_way_compare,
2045 thumb2,
2046 thumb_mode: "thumb-mode",
2047 tmm_reg,
2048 to_owned_method,
2049 to_string,
2050 to_vec,
2051 tool_attributes,
2052 tool_lints,
2053 trace_macros,
2054 track_caller,
2055 trait_alias,
2056 trait_ty,
2057 trait_upcasting,
2058 transmute,
2059 transmute_generic_consts,
2060 transmute_opts,
2061 transmute_trait,
2062 transmute_unchecked,
2063 transparent,
2064 transparent_enums,
2065 transparent_unions,
2066 trivial_bounds,
2067 trivial_clone,
2068 truncf16,
2069 truncf32,
2070 truncf64,
2071 truncf128,
2072 try_blocks,
2073 try_blocks_heterogeneous,
2074 try_capture,
2075 try_from,
2076 try_into,
2077 try_trait_v2,
2078 try_trait_v2_residual,
2079 try_update,
2080 tt,
2081 tuple,
2082 tuple_indexing,
2083 tuple_trait,
2084 two_phase,
2085 ty,
2086 type_alias_enum_variants,
2087 type_alias_impl_trait,
2088 type_ascribe,
2089 type_ascription,
2090 type_changing_struct_update,
2091 type_id,
2092 type_id_eq,
2093 type_id_vtable,
2094 type_info,
2095 type_ir,
2096 type_ir_infer_ctxt_like,
2097 type_ir_inherent,
2098 type_ir_interner,
2099 type_length_limit,
2100 type_macros,
2101 type_name,
2102 type_of,
2103 type_privacy_lints,
2104 typed_swap_nonoverlapping,
2105 u8,
2106 u8_legacy_const_max,
2107 u8_legacy_const_min,
2108 u8_legacy_fn_max_value,
2109 u8_legacy_fn_min_value,
2110 u8_legacy_mod,
2111 u16,
2112 u16_legacy_const_max,
2113 u16_legacy_const_min,
2114 u16_legacy_fn_max_value,
2115 u16_legacy_fn_min_value,
2116 u16_legacy_mod,
2117 u32,
2118 u32_legacy_const_max,
2119 u32_legacy_const_min,
2120 u32_legacy_fn_max_value,
2121 u32_legacy_fn_min_value,
2122 u32_legacy_mod,
2123 u64,
2124 u64_legacy_const_max,
2125 u64_legacy_const_min,
2126 u64_legacy_fn_max_value,
2127 u64_legacy_fn_min_value,
2128 u64_legacy_mod,
2129 u128,
2130 u128_legacy_const_max,
2131 u128_legacy_const_min,
2132 u128_legacy_fn_max_value,
2133 u128_legacy_fn_min_value,
2134 u128_legacy_mod,
2135 ub_checks,
2136 unaligned_volatile_load,
2137 unaligned_volatile_store,
2138 unboxed_closures,
2139 unchecked_add,
2140 unchecked_div,
2141 unchecked_funnel_shl,
2142 unchecked_funnel_shr,
2143 unchecked_mul,
2144 unchecked_rem,
2145 unchecked_shl,
2146 unchecked_shr,
2147 unchecked_sub,
2148 undecorated,
2149 underscore_const_names,
2150 underscore_imports,
2151 underscore_lifetimes,
2152 uniform_paths,
2153 unit,
2154 universal_impl_trait,
2155 unix,
2156 unlikely,
2157 unmarked_api,
2158 unnamed_fields,
2159 unpin,
2160 unqualified_local_imports,
2161 unreachable,
2162 unreachable_2015,
2163 unreachable_2015_macro,
2164 unreachable_2021,
2165 unreachable_code,
2166 unreachable_display,
2167 unreachable_macro,
2168 unrestricted_attribute_tokens,
2169 unsafe_attributes,
2170 unsafe_binders,
2171 unsafe_block_in_unsafe_fn,
2172 unsafe_cell,
2173 unsafe_cell_raw_get,
2174 unsafe_eii,
2175 unsafe_extern_blocks,
2176 unsafe_fields,
2177 unsafe_no_drop_flag,
2178 unsafe_pinned,
2179 unsafe_unpin,
2180 unsafety,
2181 unsize,
2182 unsized_const_param_ty,
2183 unsized_const_params,
2184 unsized_fn_params,
2185 unsized_locals,
2186 unsized_tuple_coercion,
2187 unstable,
2188 unstable_feature_bound,
2189 unstable_location_reason_default: "this crate is being loaded from the sysroot, an \
2190 unstable location; did you mean to load this crate \
2191 from crates.io via `Cargo.toml` instead?",
2192 unstable_removed,
2193 untagged_unions,
2194 unused_imports,
2195 unwind,
2196 unwind_attributes,
2197 unwind_safe_trait,
2198 unwrap,
2199 unwrap_binder,
2200 unwrap_or,
2201 update,
2202 use_cloned,
2203 use_extern_macros,
2204 use_nested_groups,
2205 used,
2206 used_with_arg,
2207 using,
2208 usize,
2209 usize_legacy_const_max,
2210 usize_legacy_const_min,
2211 usize_legacy_fn_max_value,
2212 usize_legacy_fn_min_value,
2213 usize_legacy_mod,
2214 v1,
2215 v8plus,
2216 va_arg,
2217 va_arg_safe,
2218 va_copy,
2219 va_end,
2220 va_list,
2221 va_start,
2222 val,
2223 validity,
2224 value,
2225 values,
2226 var,
2227 variadic,
2228 variant_count,
2229 variants,
2230 vec,
2231 vector,
2232 verbatim,
2233 version,
2234 vfp2,
2235 view_types,
2236 vis,
2237 visible_private_types,
2238 volatile,
2239 volatile_copy_memory,
2240 volatile_copy_nonoverlapping_memory,
2241 volatile_load,
2242 volatile_set_memory,
2243 volatile_store,
2244 vreg,
2245 vreg_low16,
2246 vreg_pair,
2247 vsreg,
2248 vsx,
2249 vtable_align,
2250 vtable_size,
2251 warn,
2252 wasip2,
2253 wasm,
2254 wasm32,
2255 wasm64,
2256 wasm_abi,
2257 wasm_import_module,
2258 wasm_target_feature,
2259 weak,
2260 weak_odr,
2261 where_clause_attrs,
2262 while_let,
2263 whole_dash_archive: "whole-archive",
2264 width,
2265 windows,
2266 windows_subsystem,
2267 with_negative_coherence,
2268 wrap_binder,
2269 wrapping_add,
2270 wrapping_div,
2271 wrapping_mul,
2272 wrapping_rem,
2273 wrapping_rem_euclid,
2274 wrapping_sub,
2275 wreg,
2276 write_box_via_move,
2277 write_bytes,
2278 write_fmt,
2279 write_macro,
2280 write_str,
2281 write_via_move,
2282 writeln_macro,
2283 x86,
2284 x86_64,
2285 x86_amx_intrinsics,
2286 x87_reg,
2287 x87_target_feature,
2288 xcoff,
2289 xer,
2290 xmm_reg,
2291 xop_target_feature,
2292 xtensa,
2293 yeet_desugar_details,
2294 yeet_expr,
2295 yes,
2296 yield_expr,
2297 ymm_reg,
2298 yreg,
2299 zca,
2300 zfh,
2301 zfhmin,
2302 zmm_reg,
2303 ztso,
2304 }
2306}
2307
2308pub const STDLIB_STABLE_CRATES: &[Symbol] = &[sym::std, sym::core, sym::alloc, sym::proc_macro];
2311
2312#[derive(#[automatically_derived]
impl ::core::marker::Copy for Ident { }Copy, #[automatically_derived]
impl ::core::clone::Clone for Ident {
#[inline]
fn clone(&self) -> Ident {
let _: ::core::clone::AssertParamIsClone<Symbol>;
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::Eq for Ident {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Symbol>;
let _: ::core::cmp::AssertParamIsEq<Span>;
}
}Eq, const _: () =
{
impl ::rustc_data_structures::stable_hasher::StableHash for Ident {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hasher::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
match *self {
Ident { name: ref __binding_0, span: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Ident {
fn encode(&self, __encoder: &mut __E) {
match *self {
Ident { name: ref __binding_0, span: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Ident {
fn decode(__decoder: &mut __D) -> Self {
Ident {
name: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable)]
2313pub struct Ident {
2314 pub name: Symbol,
2319 pub span: Span,
2320}
2321
2322impl Ident {
2323 #[inline]
2324 pub fn new(name: Symbol, span: Span) -> Ident {
2326 if true {
match (&name, &sym::empty) {
(left_val, right_val) => {
if *left_val == *right_val {
let kind = ::core::panicking::AssertKind::Ne;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};debug_assert_ne!(name, sym::empty);
2327 Ident { name, span }
2328 }
2329
2330 #[inline]
2332 pub fn with_dummy_span(name: Symbol) -> Ident {
2333 Ident::new(name, DUMMY_SP)
2334 }
2335
2336 #[inline]
2341 pub fn dummy() -> Ident {
2342 Ident::with_dummy_span(sym::dummy)
2343 }
2344
2345 pub fn from_str(string: &str) -> Ident {
2347 Ident::with_dummy_span(Symbol::intern(string))
2348 }
2349
2350 pub fn from_str_and_span(string: &str, span: Span) -> Ident {
2352 Ident::new(Symbol::intern(string), span)
2353 }
2354
2355 pub fn with_span_pos(self, span: Span) -> Ident {
2357 Ident::new(self.name, span.with_ctxt(self.span.ctxt()))
2358 }
2359
2360 pub fn without_first_quote(self) -> Ident {
2363 self.as_str()
2364 .strip_prefix('\'')
2365 .map_or(self, |name| Ident::new(Symbol::intern(name), self.span))
2366 }
2367
2368 pub fn normalize_to_macros_2_0(self) -> Ident {
2374 Ident::new(self.name, self.span.normalize_to_macros_2_0())
2375 }
2376
2377 #[inline]
2383 pub fn normalize_to_macro_rules(self) -> Ident {
2384 Ident::new(self.name, self.span.normalize_to_macro_rules())
2385 }
2386
2387 pub fn as_str(&self) -> &str {
2393 self.name.as_str()
2394 }
2395}
2396
2397impl PartialEq for Ident {
2398 #[inline]
2399 fn eq(&self, rhs: &Self) -> bool {
2400 self.name == rhs.name && self.span.eq_ctxt(rhs.span)
2401 }
2402}
2403
2404impl Hash for Ident {
2405 fn hash<H: Hasher>(&self, state: &mut H) {
2406 self.name.hash(state);
2407 self.span.ctxt().hash(state);
2408 }
2409}
2410
2411impl fmt::Debug for Ident {
2412 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2413 fmt::Display::fmt(self, f)?;
2414 fmt::Debug::fmt(&self.span.ctxt(), f)
2415 }
2416}
2417
2418impl fmt::Display for Ident {
2422 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2423 fmt::Display::fmt(&IdentPrinter::new(self.name, self.guess_print_mode(), None), f)
2424 }
2425}
2426
2427pub enum IdentPrintMode {
2428 Normal,
2429 RawIdent,
2430 RawLifetime,
2431}
2432
2433pub struct IdentPrinter {
2447 symbol: Symbol,
2448 mode: IdentPrintMode,
2449 convert_dollar_crate: Option<Span>,
2452}
2453
2454impl IdentPrinter {
2455 pub fn new(
2457 symbol: Symbol,
2458 mode: IdentPrintMode,
2459 convert_dollar_crate: Option<Span>,
2460 ) -> IdentPrinter {
2461 IdentPrinter { symbol, mode, convert_dollar_crate }
2462 }
2463
2464 pub fn for_ast_ident(ident: Ident, mode: IdentPrintMode) -> IdentPrinter {
2468 IdentPrinter::new(ident.name, mode, Some(ident.span))
2469 }
2470}
2471
2472impl fmt::Display for IdentPrinter {
2473 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2474 let s = match self.mode {
2475 IdentPrintMode::Normal
2476 if self.symbol == kw::DollarCrate
2477 && let Some(span) = self.convert_dollar_crate =>
2478 {
2479 let converted = span.ctxt().dollar_crate_name();
2480 if !converted.is_path_segment_keyword() {
2481 f.write_str("::")?;
2482 }
2483 converted
2484 }
2485 IdentPrintMode::Normal => self.symbol,
2486 IdentPrintMode::RawIdent => {
2487 f.write_str("r#")?;
2488 self.symbol
2489 }
2490 IdentPrintMode::RawLifetime => {
2491 f.write_str("'r#")?;
2492 let s = self
2493 .symbol
2494 .as_str()
2495 .strip_prefix("'")
2496 .expect("only lifetime idents should be passed with RawLifetime mode");
2497 Symbol::intern(s)
2498 }
2499 };
2500 s.fmt(f)
2501 }
2502}
2503
2504#[derive(#[automatically_derived]
impl ::core::marker::Copy for MacroRulesNormalizedIdent { }Copy, #[automatically_derived]
impl ::core::clone::Clone for MacroRulesNormalizedIdent {
#[inline]
fn clone(&self) -> MacroRulesNormalizedIdent {
let _: ::core::clone::AssertParamIsClone<Ident>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::Eq for MacroRulesNormalizedIdent {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for MacroRulesNormalizedIdent {
#[inline]
fn eq(&self, other: &MacroRulesNormalizedIdent) -> bool {
self.0 == other.0
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for MacroRulesNormalizedIdent {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
2510pub struct MacroRulesNormalizedIdent(Ident);
2511
2512impl MacroRulesNormalizedIdent {
2513 #[inline]
2514 pub fn new(ident: Ident) -> Self {
2515 MacroRulesNormalizedIdent(ident.normalize_to_macro_rules())
2516 }
2517
2518 pub fn symbol(&self) -> Symbol {
2519 self.0.name
2520 }
2521
2522 pub fn ident(&self) -> Ident {
2523 self.0
2524 }
2525}
2526
2527impl fmt::Debug for MacroRulesNormalizedIdent {
2528 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2529 fmt::Debug::fmt(&self.0, f)
2530 }
2531}
2532
2533impl fmt::Display for MacroRulesNormalizedIdent {
2534 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2535 fmt::Display::fmt(&self.0, f)
2536 }
2537}
2538
2539#[derive(#[automatically_derived]
impl ::core::clone::Clone for Symbol {
#[inline]
fn clone(&self) -> Symbol {
let _: ::core::clone::AssertParamIsClone<SymbolIndex>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Symbol { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for Symbol {
#[inline]
fn eq(&self, other: &Symbol) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Symbol {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<SymbolIndex>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Symbol {
#[inline]
fn partial_cmp(&self, other: &Symbol)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for Symbol {
#[inline]
fn cmp(&self, other: &Symbol) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Symbol {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
2549pub struct Symbol(SymbolIndex);
2550
2551impl ::std::fmt::Debug for SymbolIndex {
fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
fmt.write_fmt(format_args!("{0}", self.as_u32()))
}
}rustc_index::newtype_index! {
2553 #[orderable]
2554 struct SymbolIndex {}
2555}
2556
2557impl Symbol {
2558 pub const fn new(n: u32) -> Self {
2561 Symbol(SymbolIndex::from_u32(n))
2562 }
2563
2564 #[rustc_diagnostic_item = "SymbolIntern"]
2566 pub fn intern(str: &str) -> Self {
2567 with_session_globals(|session_globals| session_globals.symbol_interner.intern_str(str))
2568 }
2569
2570 pub fn as_str(&self) -> &str {
2579 with_session_globals(|session_globals| unsafe {
2580 std::mem::transmute::<&str, &str>(session_globals.symbol_interner.get_str(*self))
2581 })
2582 }
2583
2584 pub fn as_u32(self) -> u32 {
2585 self.0.as_u32()
2586 }
2587
2588 pub fn is_empty(self) -> bool {
2589 self == sym::empty
2590 }
2591
2592 pub fn to_ident_string(self) -> String {
2597 if self == sym::empty { String::new() } else { Ident::with_dummy_span(self).to_string() }
2599 }
2600
2601 pub fn find_similar(
2608 self,
2609 candidates: &[Symbol],
2610 ) -> Option<(Symbol, bool)> {
2611 let lowercase = self.as_str().to_lowercase();
2612 let lowercase_sym = Symbol::intern(&lowercase);
2613 if candidates.contains(&lowercase_sym) {
2614 Some((lowercase_sym, true))
2615 } else if let Some(similar_sym) = find_best_match_for_name(candidates, self, None) {
2616 Some((similar_sym, false))
2617 } else {
2618 None
2619 }
2620 }
2621}
2622
2623impl fmt::Debug for Symbol {
2624 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2625 fmt::Debug::fmt(self.as_str(), f)
2626 }
2627}
2628
2629impl fmt::Display for Symbol {
2630 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2631 fmt::Display::fmt(self.as_str(), f)
2632 }
2633}
2634
2635impl StableHash for Symbol {
2636 #[inline]
2637 fn stable_hash<Hcx: StableHashCtxt>(&self, hcx: &mut Hcx, hasher: &mut StableHasher) {
2638 self.as_str().stable_hash(hcx, hasher);
2639 }
2640}
2641
2642impl ToStableHashKey for Symbol {
2643 type KeyType = String;
2644 #[inline]
2645 fn to_stable_hash_key<Hcx>(&self, _: &mut Hcx) -> String {
2646 self.as_str().to_string()
2647 }
2648}
2649
2650impl StableCompare for Symbol {
2651 const CAN_USE_UNSTABLE_SORT: bool = true;
2652
2653 fn stable_cmp(&self, other: &Self) -> std::cmp::Ordering {
2654 self.as_str().cmp(other.as_str())
2655 }
2656}
2657
2658#[derive(#[automatically_derived]
impl ::core::clone::Clone for ByteSymbol {
#[inline]
fn clone(&self) -> ByteSymbol {
let _: ::core::clone::AssertParamIsClone<SymbolIndex>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for ByteSymbol { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for ByteSymbol {
#[inline]
fn eq(&self, other: &ByteSymbol) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for ByteSymbol {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<SymbolIndex>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ByteSymbol {
#[inline]
fn partial_cmp(&self, other: &ByteSymbol)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for ByteSymbol {
#[inline]
fn cmp(&self, other: &ByteSymbol) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ByteSymbol {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash)]
2661pub struct ByteSymbol(SymbolIndex);
2662
2663impl ByteSymbol {
2664 pub const fn new(n: u32) -> Self {
2667 ByteSymbol(SymbolIndex::from_u32(n))
2668 }
2669
2670 pub fn intern(byte_str: &[u8]) -> Self {
2672 with_session_globals(|session_globals| {
2673 session_globals.symbol_interner.intern_byte_str(byte_str)
2674 })
2675 }
2676
2677 pub fn as_byte_str(&self) -> &[u8] {
2679 with_session_globals(|session_globals| unsafe {
2680 std::mem::transmute::<&[u8], &[u8]>(session_globals.symbol_interner.get_byte_str(*self))
2681 })
2682 }
2683
2684 pub fn as_u32(self) -> u32 {
2685 self.0.as_u32()
2686 }
2687}
2688
2689impl fmt::Debug for ByteSymbol {
2690 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2691 fmt::Debug::fmt(self.as_byte_str(), f)
2692 }
2693}
2694
2695impl StableHash for ByteSymbol {
2696 #[inline]
2697 fn stable_hash<Hcx: StableHashCtxt>(&self, hcx: &mut Hcx, hasher: &mut StableHasher) {
2698 self.as_byte_str().stable_hash(hcx, hasher);
2699 }
2700}
2701
2702pub(crate) struct Interner(Lock<InternerInner>);
2707
2708struct InternerInner {
2714 arena: DroplessArena,
2715 byte_strs: FxIndexSet<&'static [u8]>,
2716}
2717
2718impl Interner {
2719 fn prefill(init: &[&'static str], extra: &[&'static str]) -> Self {
2723 let byte_strs = FxIndexSet::from_iter(
2724 init.iter().copied().chain(extra.iter().copied()).map(|str| str.as_bytes()),
2725 );
2726
2727 #[expect(rustc::potential_query_instability)]
2729 if byte_strs.len() != init.len() + extra.len() {
2730 {
::core::panicking::panic_fmt(format_args!("duplicate symbols in the rustc symbol list and the extra symbols added by the driver: {0:?}",
FxHashSet::intersection(&init.iter().copied().collect(),
&extra.iter().copied().collect()).collect::<Vec<_>>()));
}panic!(
2731 "duplicate symbols in the rustc symbol list and the extra symbols added by the driver: {:?}",
2732 FxHashSet::intersection(
2733 &init.iter().copied().collect(),
2734 &extra.iter().copied().collect(),
2735 )
2736 .collect::<Vec<_>>()
2737 )
2738 }
2739
2740 Interner(Lock::new(InternerInner { arena: Default::default(), byte_strs }))
2741 }
2742
2743 fn intern_str(&self, str: &str) -> Symbol {
2744 Symbol::new(self.intern_inner(str.as_bytes()))
2745 }
2746
2747 fn intern_byte_str(&self, byte_str: &[u8]) -> ByteSymbol {
2748 ByteSymbol::new(self.intern_inner(byte_str))
2749 }
2750
2751 #[inline]
2752 fn intern_inner(&self, byte_str: &[u8]) -> u32 {
2753 let mut inner = self.0.lock();
2754 if let Some(idx) = inner.byte_strs.get_index_of(byte_str) {
2755 return idx as u32;
2756 }
2757
2758 let byte_str: &[u8] = inner.arena.alloc_slice(byte_str);
2759
2760 let byte_str: &'static [u8] = unsafe { &*(byte_str as *const [u8]) };
2763
2764 let (idx, is_new) = inner.byte_strs.insert_full(byte_str);
2768 if true {
if !is_new { ::core::panicking::panic("assertion failed: is_new") };
};debug_assert!(is_new); idx as u32
2771 }
2772
2773 fn get_str(&self, symbol: Symbol) -> &str {
2777 let byte_str = self.get_inner(symbol.0.as_usize());
2778 unsafe { str::from_utf8_unchecked(byte_str) }
2780 }
2781
2782 fn get_byte_str(&self, symbol: ByteSymbol) -> &[u8] {
2786 self.get_inner(symbol.0.as_usize())
2787 }
2788
2789 fn get_inner(&self, index: usize) -> &[u8] {
2790 self.0.lock().byte_strs.get_index(index).unwrap()
2791 }
2792}
2793
2794pub mod kw {
2800 pub use super::kw_generated::*;
2801}
2802
2803pub mod sym {
2809 use super::Symbol;
2811 pub use super::kw::MacroRules as macro_rules;
2812 #[doc(inline)]
2813 pub use super::sym_generated::*;
2814
2815 pub const C: Symbol = ascii_letter_digit('C').unwrap();
2817
2818 #[expect(non_upper_case_globals)]
2820 pub const f: Symbol = ascii_letter_digit('f').unwrap();
2821 #[expect(non_upper_case_globals)]
2822 pub const d: Symbol = ascii_letter_digit('d').unwrap();
2823
2824 pub fn integer<N: TryInto<usize> + Copy + itoa::Integer>(n: N) -> Symbol {
2829 if let Result::Ok(idx) = n.try_into() {
2830 if idx < 10 {
2831 return Symbol::new(super::SYMBOL_DIGITS_BASE + idx as u32);
2832 }
2833 }
2834 let mut buffer = itoa::Buffer::new();
2835 let printed = buffer.format(n);
2836 Symbol::intern(printed)
2837 }
2838
2839 pub const fn ascii_letter_digit(c: char) -> Option<Symbol> {
2840 let i = c as u32;
2841 Option::Some(Symbol::new(match c {
2842 '0'..='9' => super::SYMBOL_DIGITS_BASE + (i - '0' as u32),
2843 'A'..='Z' => super::SYMBOL_UPPERCASE_LETTERS_BASE + (i - 'A' as u32),
2844 'a'..='z' => super::SYMBOL_LOWERCASE_LETTERS_BASE + (i - 'a' as u32),
2845 _ => return Option::None,
2846 }))
2847 }
2848
2849 pub fn character(c: char) -> Symbol {
2850 ascii_letter_digit(c).unwrap_or_else(|| {
2851 let mut buf: [u8; char::MAX_LEN_UTF8] = Default::default();
2852 Symbol::intern(c.encode_utf8(&mut buf))
2853 })
2854 }
2855}
2856
2857impl Symbol {
2858 fn is_special(self) -> bool {
2859 self <= kw::Underscore
2860 }
2861
2862 fn is_used_keyword_always(self) -> bool {
2863 self >= kw::As && self <= kw::While
2864 }
2865
2866 fn is_unused_keyword_always(self) -> bool {
2867 self >= kw::Abstract && self <= kw::Yield
2868 }
2869
2870 fn is_used_keyword_conditional(self, edition: impl FnOnce() -> Edition) -> bool {
2871 (self >= kw::Async && self <= kw::Dyn) && edition() >= Edition::Edition2018
2872 }
2873
2874 fn is_unused_keyword_conditional(self, edition: impl Copy + FnOnce() -> Edition) -> bool {
2875 self == kw::Gen && edition().at_least_rust_2024()
2876 || self == kw::Try && edition().at_least_rust_2018()
2877 }
2878
2879 pub fn is_reserved(self, edition: impl Copy + FnOnce() -> Edition) -> bool {
2880 self.is_special()
2881 || self.is_used_keyword_always()
2882 || self.is_unused_keyword_always()
2883 || self.is_used_keyword_conditional(edition)
2884 || self.is_unused_keyword_conditional(edition)
2885 }
2886
2887 pub fn is_weak(self) -> bool {
2888 self >= kw::Auto && self <= kw::Yeet
2889 }
2890
2891 pub fn is_path_segment_keyword(self) -> bool {
2893 self == kw::Super
2894 || self == kw::SelfLower
2895 || self == kw::SelfUpper
2896 || self == kw::Crate
2897 || self == kw::PathRoot
2898 || self == kw::DollarCrate
2899 }
2900
2901 pub fn is_bool_lit(self) -> bool {
2903 self == kw::True || self == kw::False
2904 }
2905
2906 pub fn can_be_raw(self) -> bool {
2908 self != sym::empty && self != kw::Underscore && !self.is_path_segment_keyword()
2909 }
2910
2911 pub fn is_predefined(index: u32) -> bool {
2915 index < PREDEFINED_SYMBOLS_COUNT
2916 }
2917}
2918
2919impl Ident {
2920 pub fn is_special(self) -> bool {
2923 self.name.is_special()
2924 }
2925
2926 pub fn is_used_keyword(self) -> bool {
2928 self.name.is_used_keyword_always()
2930 || self.name.is_used_keyword_conditional(|| self.span.edition())
2931 }
2932
2933 pub fn is_unused_keyword(self) -> bool {
2935 self.name.is_unused_keyword_always()
2937 || self.name.is_unused_keyword_conditional(|| self.span.edition())
2938 }
2939
2940 pub fn is_reserved(self) -> bool {
2942 self.name.is_reserved(|| self.span.edition())
2944 }
2945
2946 pub fn is_path_segment_keyword(self) -> bool {
2948 self.name.is_path_segment_keyword()
2949 }
2950
2951 pub fn is_raw_guess(self) -> bool {
2954 self.name.can_be_raw() && self.is_reserved()
2955 }
2956
2957 pub fn is_reserved_lifetime(self) -> bool {
2960 self.is_reserved() && ![kw::Underscore, kw::Static].contains(&self.name)
2961 }
2962
2963 pub fn is_raw_lifetime_guess(self) -> bool {
2964 if self.name.as_str() == "'" {
2967 return false;
2968 }
2969 let ident_without_apostrophe = self.without_first_quote();
2970 ident_without_apostrophe.name != self.name
2971 && ident_without_apostrophe.name.can_be_raw()
2972 && ident_without_apostrophe.is_reserved_lifetime()
2973 }
2974
2975 pub fn guess_print_mode(self) -> IdentPrintMode {
2976 if self.is_raw_lifetime_guess() {
2977 IdentPrintMode::RawLifetime
2978 } else if self.is_raw_guess() {
2979 IdentPrintMode::RawIdent
2980 } else {
2981 IdentPrintMode::Normal
2982 }
2983 }
2984
2985 pub fn is_numeric(self) -> bool {
2988 self.as_str().bytes().all(|b| b.is_ascii_digit())
2989 }
2990}
2991
2992pub fn used_keywords(edition: impl Copy + FnOnce() -> Edition) -> Vec<Symbol> {
2997 (kw::DollarCrate.as_u32()..kw::Yeet.as_u32())
2998 .filter_map(|kw| {
2999 let kw = Symbol::new(kw);
3000 if kw.is_used_keyword_always() || kw.is_used_keyword_conditional(edition) {
3001 Some(kw)
3002 } else {
3003 None
3004 }
3005 })
3006 .collect()
3007}