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,
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",
"dead_code_pub_in_binary", "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_glue", "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_type_id",
"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 dead_code_pub_in_binary,
757 dealloc,
758 debug,
759 debug_assert_eq_macro,
760 debug_assert_macro,
761 debug_assert_ne_macro,
762 debug_assertions,
763 debug_struct_fields_finish,
764 debug_tuple_fields_finish,
765 debugger_visualizer,
766 decl_macro,
767 declare_lint_pass,
768 decorated,
769 default_alloc_error_handler,
770 default_field_values,
771 default_fn,
772 default_lib_allocator,
773 default_method_body_is_const,
774 default_trait1,
779 default_trait2,
780 default_trait3,
781 default_trait4,
782 default_type_parameter_fallback,
784 default_type_params,
785 define_opaque,
786 deny,
787 deprecated,
788 deprecated_safe,
789 deprecated_suggestion,
790 deref,
791 deref_method,
792 deref_mut,
793 deref_patterns,
794 deref_pure,
795 deref_target,
796 derive,
797 derive_const,
798 derive_const_issue: "118304",
799 derive_default_enum,
800 derive_from,
801 derive_smart_pointer,
802 destruct,
803 destructuring_assignment,
804 diagnostic,
805 diagnostic_namespace,
806 diagnostic_on_const,
807 diagnostic_on_move,
808 diagnostic_on_unknown,
809 diagnostic_on_unmatch_args,
810 dialect,
811 direct,
812 discriminant_kind,
813 discriminant_type,
814 discriminant_value,
815 disjoint_bitor,
816 dispatch_from_dyn,
817 div,
818 div_assign,
819 diverging_block_default,
820 dl,
821 do_not_recommend,
822 doc,
823 doc_alias,
824 doc_auto_cfg,
825 doc_cfg,
826 doc_cfg_hide,
827 doc_keyword,
828 doc_masked,
829 doc_notable_trait,
830 doc_primitive,
831 doc_spotlight,
832 doctest,
833 dotdot_in_tuple_patterns,
834 dotdoteq_in_patterns,
835 dreg,
836 dreg_low8,
837 dreg_low16,
838 drop,
839 drop_glue,
840 drop_in_place,
841 drop_types_in_const,
842 dropck_eyepatch,
843 dropck_parametricity,
844 dummy: "<!dummy!>", dummy_cgu_name,
846 dylib,
847 dyn_compatible_for_dispatch,
848 dyn_metadata,
849 dyn_star,
850 dyn_trait,
851 dynamic_no_pic: "dynamic-no-pic",
852 edition_panic,
853 effective_target_features,
854 effects,
855 eh_catch_typeinfo,
856 eh_personality,
857 eii,
858 eii_declaration,
859 eii_internals,
860 eii_shared_macro,
861 element_ty,
862 elf,
863 empty: "",
871 empty_braces: "{}",
872 emscripten_wasm_eh,
873 enable,
874 end,
875 entry_nops,
876 env,
877 env_CFG_RELEASE: env!("CFG_RELEASE"),
878 eq,
879 ergonomic_clones,
880 ermsb_target_feature,
881 exact_div,
882 except,
883 exception_handling: "exception-handling",
884 exclusive_range_pattern,
885 exhaustive_integer_patterns,
886 exhaustive_patterns,
887 existential_type,
888 exp2f16,
889 exp2f32,
890 exp2f64,
891 exp2f128,
892 expect,
893 expected,
894 expf16,
895 expf32,
896 expf64,
897 expf128,
898 explicit_extern_abis,
899 explicit_generic_args_with_impl_trait,
900 explicit_tail_calls,
901 export_name,
902 export_stable,
903 export_symbols: "export-symbols",
904 expr,
905 expr_2021,
906 expr_fragment_specifier_2024,
907 extended_key_value_attributes,
908 extended_varargs_abi_support,
909 extern_absolute_paths,
910 extern_crate_item_prelude,
911 extern_crate_self,
912 extern_in_paths,
913 extern_item_impls,
914 extern_prelude,
915 extern_system_varargs,
916 extern_types,
917 extern_weak,
918 external,
919 external_doc,
920 f16,
921 f16_nan,
922 f16c_target_feature,
923 f32,
924 f32_nan,
925 f64,
926 f64_nan,
927 f128,
928 f128_nan,
929 fabs,
930 fadd_algebraic,
931 fadd_fast,
932 fake_variadic,
933 fallback,
934 fdiv_algebraic,
935 fdiv_fast,
936 feature,
937 fence,
938 ferris: "🦀",
939 fetch_update,
940 ffi_const,
941 ffi_pure,
942 ffi_returns_twice,
943 field,
944 field_base,
945 field_init_shorthand,
946 field_of,
947 field_offset,
948 field_projections,
949 field_representing_type,
950 field_representing_type_raw,
951 field_type,
952 fields,
953 file,
954 final_associated_functions,
955 float_to_int_unchecked,
956 floorf16,
957 floorf32,
958 floorf64,
959 floorf128,
960 fma4_target_feature,
961 fmaf16,
962 fmaf32,
963 fmaf64,
964 fmaf128,
965 fmt,
966 fmt_debug,
967 fmul_algebraic,
968 fmul_fast,
969 fmuladdf16,
970 fmuladdf32,
971 fmuladdf64,
972 fmuladdf128,
973 fn_align,
974 fn_body,
975 fn_delegation,
976 fn_must_use,
977 fn_mut,
978 fn_once,
979 fn_once_output,
980 fn_ptr_addr,
981 fn_ptr_trait,
982 forbid,
983 force_target_feature,
984 forget,
985 format_args,
986 format_args_capture,
987 format_args_nl,
988 format_argument,
989 format_arguments,
990 format_macro,
991 framework,
992 freeze,
993 freeze_impls,
994 freg,
995 frem_algebraic,
996 frem_fast,
997 from,
998 from_desugaring,
999 from_iter,
1000 from_output,
1001 from_residual,
1002 from_size_align_unchecked,
1003 from_size_alignment_unchecked,
1004 from_str,
1005 from_str_nonconst,
1006 from_usize,
1007 from_yeet,
1008 frontmatter,
1009 fsub_algebraic,
1010 fsub_fast,
1011 full,
1012 fundamental,
1013 fused_iterator,
1014 future_output,
1015 future_trait,
1016 fxsr,
1017 gdb_script_file,
1018 ge,
1019 gen_blocks,
1020 gen_future,
1021 generator_clone,
1022 generators,
1023 generic_arg_infer,
1024 generic_assert,
1025 generic_associated_types,
1026 generic_associated_types_extended,
1027 generic_const_args,
1028 generic_const_exprs,
1029 generic_const_items,
1030 generic_const_parameter_types,
1031 generic_param_attrs,
1032 generic_pattern_types,
1033 generics,
1034 get_context,
1035 global_alloc_ty,
1036 global_allocator,
1037 global_asm,
1038 global_registration,
1039 globs,
1040 gpu_launch_sized_workgroup_mem,
1041 gt,
1042 guard,
1043 guard_patterns,
1044 half_open_range_patterns,
1045 half_open_range_patterns_in_slices,
1046 hash,
1047 hexagon,
1048 hexagon_target_feature,
1049 hidden,
1050 hide,
1051 homogeneous_aggregate,
1052 html_favicon_url,
1053 html_logo_url,
1054 html_no_source,
1055 html_playground_url,
1056 html_root_url,
1057 hvx,
1058 hvx_length64b: "hvx-length64b",
1059 hvx_length128b: "hvx-length128b",
1060 hwaddress,
1061 i8,
1062 i16,
1063 i32,
1064 i64,
1065 i128,
1066 i128_type,
1067 ident,
1068 if_let,
1069 if_let_guard,
1070 if_let_rescope,
1071 if_while_or_patterns,
1072 ignore,
1073 immediate_abort: "immediate-abort",
1074 impl_header_lifetime_elision,
1075 impl_lint_pass,
1076 impl_restriction,
1077 impl_trait_in_assoc_type,
1078 impl_trait_in_bindings,
1079 impl_trait_in_fn_trait_return,
1080 impl_trait_projections,
1081 implied_by,
1082 import,
1083 import_name_type,
1084 import_shadowing,
1085 import_trait_associated_functions,
1086 imported_main,
1087 in_band_lifetimes,
1088 include,
1089 include_bytes,
1090 include_str,
1091 inclusive_range_syntax,
1092 incomplete_features,
1093 index,
1094 index_mut,
1095 infer_outlives_requirements,
1096 infer_static_outlives_requirements,
1097 inherent_associated_types,
1098 initial,
1099 inlateout,
1100 inline,
1101 inline_const,
1102 inline_const_pat,
1103 inout,
1104 inputs,
1105 instruction_set,
1106 integer_: "integer", integral,
1108 internal,
1109 internal_eq_trait_method_impls,
1110 internal_features,
1111 into_async_iter_into_iter,
1112 into_future,
1113 into_iter,
1114 into_try_type,
1115 intra_doc_pointers,
1116 intrinsics,
1117 irrefutable_let_patterns,
1118 is,
1119 is_auto,
1120 is_val_statically_known,
1121 isa_attribute,
1122 isize,
1123 issue,
1124 issue_5723_bootstrap,
1125 issue_tracker_base_url,
1126 item,
1127 item_like_imports,
1128 iter,
1129 iter_mut,
1130 iterator,
1131 iterator_collect_fn,
1132 kcfi,
1133 kernel_address,
1134 kernel_hwaddress,
1135 keylocker_x86,
1136 keyword,
1137 kind,
1138 kreg,
1139 kreg0,
1140 label,
1141 label_break_value,
1142 lahfsahf_target_feature,
1143 lang,
1144 lang_items,
1145 large_assignments,
1146 last,
1147 lateout,
1148 lazy_normalization_consts,
1149 lazy_type_alias,
1150 le,
1151 legacy_receiver,
1152 len,
1153 let_chains,
1154 let_else,
1155 lhs,
1156 lib,
1157 libc,
1158 lifetime,
1159 lifetime_capture_rules_2024,
1160 lifetimes,
1161 line,
1162 link,
1163 link_arg_attribute,
1164 link_args,
1165 link_cfg,
1166 link_dash_arg: "link-arg",
1167 link_llvm_intrinsics,
1168 link_name,
1169 link_ordinal,
1170 link_section,
1171 linkage,
1172 linker,
1173 linker_info,
1174 linker_messages,
1175 linkonce,
1176 linkonce_odr,
1177 lint_reasons,
1178 literal,
1179 little, big,
1180 load,
1181 loaded_from_disk,
1182 local,
1183 local_inner_macros,
1184 log2f16,
1185 log2f32,
1186 log2f64,
1187 log2f128,
1188 log10f16,
1189 log10f32,
1190 log10f64,
1191 log10f128,
1192 log_syntax,
1193 logf16,
1194 logf32,
1195 logf64,
1196 logf128,
1197 loongarch32,
1198 loongarch64,
1199 loongarch_target_feature,
1200 loop_break_value,
1201 loop_match,
1202 lr,
1203 lt,
1204 m68k,
1205 m68k_target_feature,
1206 macho: "mach-o",
1207 macro_at_most_once_rep,
1208 macro_attr,
1209 macro_attributes_in_derive_output,
1210 macro_derive,
1211 macro_escape,
1212 macro_export,
1213 macro_guard_matcher,
1214 macro_lifetime_matcher,
1215 macro_literal_matcher,
1216 macro_metavar_expr,
1217 macro_metavar_expr_concat,
1218 macro_reexport,
1219 macro_use,
1220 macro_vis_matcher,
1221 macros_in_extern,
1222 main,
1223 managed_boxes,
1224 manually_drop,
1225 map,
1226 map_err,
1227 marker,
1228 marker_trait_attr,
1229 masked,
1230 match_beginning_vert,
1231 match_default_bindings,
1232 maximum_number_nsz_f16,
1233 maximum_number_nsz_f32,
1234 maximum_number_nsz_f64,
1235 maximum_number_nsz_f128,
1236 maximumf16,
1237 maximumf32,
1238 maximumf64,
1239 maximumf128,
1240 may_dangle,
1241 may_unwind,
1242 maybe_dangling,
1243 maybe_uninit,
1244 maybe_uninit_uninit,
1245 maybe_uninit_zeroed,
1246 mem,
1247 mem_align_const,
1248 mem_discriminant,
1249 mem_drop,
1250 mem_forget,
1251 mem_size_const,
1252 mem_swap,
1253 mem_uninitialized,
1254 mem_variant_count,
1255 mem_zeroed,
1256 member_constraints,
1257 memory,
1258 memtag,
1259 message,
1260 meta,
1261 meta_sized,
1262 metadata_type,
1263 mgca_type_const_syntax,
1264 min_adt_const_params,
1265 min_const_fn,
1266 min_const_generics,
1267 min_const_unsafe_fn,
1268 min_exhaustive_patterns,
1269 min_generic_const_args,
1270 min_specialization,
1271 min_type_alias_impl_trait,
1272 minimum_number_nsz_f16,
1273 minimum_number_nsz_f32,
1274 minimum_number_nsz_f64,
1275 minimum_number_nsz_f128,
1276 minimumf16,
1277 minimumf32,
1278 minimumf64,
1279 minimumf128,
1280 mips,
1281 mips32r6,
1282 mips64,
1283 mips64r6,
1284 mips_target_feature,
1285 mir_assume,
1286 mir_basic_block,
1287 mir_call,
1288 mir_cast_ptr_to_ptr,
1289 mir_cast_transmute,
1290 mir_cast_unsize,
1291 mir_checked,
1292 mir_debuginfo,
1293 mir_discriminant,
1294 mir_drop,
1295 mir_field,
1296 mir_goto,
1297 mir_make_place,
1298 mir_move,
1299 mir_offset,
1300 mir_ptr_metadata,
1301 mir_return,
1302 mir_return_to,
1303 mir_set_discriminant,
1304 mir_static,
1305 mir_static_mut,
1306 mir_storage_dead,
1307 mir_storage_live,
1308 mir_tail_call,
1309 mir_unreachable,
1310 mir_unwind_cleanup,
1311 mir_unwind_continue,
1312 mir_unwind_resume,
1313 mir_unwind_terminate,
1314 mir_unwind_terminate_reason,
1315 mir_unwind_unreachable,
1316 mir_variant,
1317 miri,
1318 mmx_reg,
1319 modifiers,
1320 module,
1321 module_path,
1322 more_maybe_bounds,
1323 more_qualified_paths,
1324 more_struct_aliases,
1325 movbe_target_feature,
1326 move_ref_pattern,
1327 move_size_limit,
1328 movrs_target_feature,
1329 msp430,
1330 mul,
1331 mul_assign,
1332 mul_with_overflow,
1333 multiple_supertrait_upcastable,
1334 must_not_suspend,
1335 must_use,
1336 mut_preserve_binding_mode_2024,
1337 mut_ref,
1338 mutable,
1339 naked,
1340 naked_asm,
1341 naked_functions,
1342 naked_functions_rustic_abi,
1343 naked_functions_target_feature,
1344 name,
1345 names,
1346 native_link_modifiers,
1347 native_link_modifiers_as_needed,
1348 native_link_modifiers_bundle,
1349 native_link_modifiers_verbatim,
1350 native_link_modifiers_whole_archive,
1351 natvis_file,
1352 ne,
1353 needs_allocator,
1354 needs_drop,
1355 needs_panic_runtime,
1356 neg,
1357 negate_unsigned,
1358 negative_bounds,
1359 negative_impls,
1360 neon,
1361 nested,
1362 never,
1363 never_patterns,
1364 never_type,
1365 never_type_fallback,
1366 new,
1367 new_binary,
1368 new_debug,
1369 new_debug_noop,
1370 new_display,
1371 new_lower_exp,
1372 new_lower_hex,
1373 new_octal,
1374 new_pointer,
1375 new_range,
1376 new_unchecked,
1377 new_upper_exp,
1378 new_upper_hex,
1379 next,
1380 niko,
1381 nll,
1382 no,
1383 no_builtins,
1384 no_core,
1385 no_coverage,
1386 no_crate_inject,
1387 no_debug,
1388 no_default_passes,
1389 no_implicit_prelude,
1390 no_inline,
1391 no_link,
1392 no_main,
1393 no_mangle,
1394 no_sanitize,
1395 no_stack_check,
1396 no_std,
1397 nomem,
1398 non_ascii_idents,
1399 non_exhaustive,
1400 non_exhaustive_omitted_patterns_lint,
1401 non_lifetime_binders,
1402 non_modrs_mods,
1403 nonblocking,
1404 none,
1405 nontemporal_store,
1406 noop_method_borrow,
1407 noop_method_clone,
1408 noop_method_deref,
1409 noprefix,
1410 noreturn,
1411 nostack,
1412 not,
1413 notable_trait,
1414 note,
1415 null,
1416 nvptx64,
1417 nvptx_target_feature,
1418 object_safe_for_dispatch,
1419 of,
1420 off,
1421 offload,
1422 offset,
1423 offset_of,
1424 offset_of_enum,
1425 offset_of_nested,
1426 offset_of_slice,
1427 ok_or_else,
1428 old_name,
1429 omit_gdb_pretty_printer_section,
1430 on,
1431 on_const,
1432 on_move,
1433 on_unimplemented,
1434 on_unknown,
1435 on_unmatch_args,
1436 opaque,
1437 opaque_module_name_placeholder: "<opaque>",
1438 ops,
1439 opt_out_copy,
1440 optimize,
1441 optimize_attribute,
1442 optimized,
1443 optin_builtin_traits,
1444 option,
1445 option_env,
1446 options,
1447 or,
1448 or_patterns,
1449 ord_cmp_method,
1450 other,
1451 out,
1452 output,
1453 overflow_checks,
1454 overlapping_marker_traits,
1455 owned_box,
1456 packed,
1457 packed_bundled_libs,
1458 panic,
1459 panic_2015,
1460 panic_2021,
1461 panic_abort,
1462 panic_bounds_check,
1463 panic_cannot_unwind,
1464 panic_const_add_overflow,
1465 panic_const_async_fn_resumed,
1466 panic_const_async_fn_resumed_drop,
1467 panic_const_async_fn_resumed_panic,
1468 panic_const_async_gen_fn_resumed,
1469 panic_const_async_gen_fn_resumed_drop,
1470 panic_const_async_gen_fn_resumed_panic,
1471 panic_const_coroutine_resumed,
1472 panic_const_coroutine_resumed_drop,
1473 panic_const_coroutine_resumed_panic,
1474 panic_const_div_by_zero,
1475 panic_const_div_overflow,
1476 panic_const_gen_fn_none,
1477 panic_const_gen_fn_none_drop,
1478 panic_const_gen_fn_none_panic,
1479 panic_const_mul_overflow,
1480 panic_const_neg_overflow,
1481 panic_const_rem_by_zero,
1482 panic_const_rem_overflow,
1483 panic_const_shl_overflow,
1484 panic_const_shr_overflow,
1485 panic_const_sub_overflow,
1486 panic_display,
1487 panic_fmt,
1488 panic_handler,
1489 panic_impl,
1490 panic_implementation,
1491 panic_in_cleanup,
1492 panic_info,
1493 panic_invalid_enum_construction,
1494 panic_location,
1495 panic_misaligned_pointer_dereference,
1496 panic_nounwind,
1497 panic_null_pointer_dereference,
1498 panic_runtime,
1499 panic_str_2015,
1500 panic_unwind,
1501 panicking,
1502 param_attrs,
1503 parent_label,
1504 partial_cmp,
1505 partial_ord,
1506 passes,
1507 pat,
1508 pat_param,
1509 patchable_function_entry,
1510 path,
1511 pattern_complexity_limit,
1512 pattern_parentheses,
1513 pattern_type,
1514 pattern_type_range_trait,
1515 pattern_types,
1516 phantom_data,
1517 phase,
1518 pic,
1519 pie,
1520 pin,
1521 pin_ergonomics,
1522 pin_v2,
1523 platform_intrinsics,
1524 plugin,
1525 plugin_registrar,
1526 plugins,
1527 pointee,
1528 pointee_sized,
1529 pointee_trait,
1530 pointer,
1531 poll,
1532 post_cleanup: "post-cleanup",
1533 post_dash_lto: "post-lto",
1534 postfix_match,
1535 powerpc,
1536 powerpc64,
1537 powerpc_target_feature,
1538 powf16,
1539 powf32,
1540 powf64,
1541 powf128,
1542 powif16,
1543 powif32,
1544 powif64,
1545 powif128,
1546 pre_dash_lto: "pre-lto",
1547 precise_capturing,
1548 precise_capturing_in_traits,
1549 precise_pointer_size_matching,
1550 predicates,
1551 pref_align_of,
1552 prefetch_read_data,
1553 prefetch_read_instruction,
1554 prefetch_write_data,
1555 prefetch_write_instruction,
1556 prefix_nops,
1557 preg,
1558 prelude,
1559 prelude_import,
1560 preserves_flags,
1561 prfchw_target_feature,
1562 proc_dash_macro: "proc-macro",
1563 proc_macro,
1564 proc_macro_attribute,
1565 proc_macro_derive,
1566 proc_macro_expr,
1567 proc_macro_gen,
1568 proc_macro_hygiene,
1569 proc_macro_internals,
1570 proc_macro_mod,
1571 proc_macro_non_items,
1572 proc_macro_path_invoc,
1573 profiler_runtime,
1574 ptr,
1575 ptr_cast,
1576 ptr_cast_const,
1577 ptr_cast_mut,
1578 ptr_const_is_null,
1579 ptr_copy,
1580 ptr_copy_nonoverlapping,
1581 ptr_from_ref,
1582 ptr_guaranteed_cmp,
1583 ptr_is_null,
1584 ptr_mask,
1585 ptr_metadata,
1586 ptr_null,
1587 ptr_null_mut,
1588 ptr_offset_from,
1589 ptr_offset_from_unsigned,
1590 ptr_read,
1591 ptr_read_unaligned,
1592 ptr_replace,
1593 ptr_swap,
1594 ptr_swap_nonoverlapping,
1595 ptr_write,
1596 ptr_write_bytes,
1597 ptr_write_unaligned,
1598 ptr_write_volatile,
1599 pub_macro_rules,
1600 pub_restricted,
1601 public,
1602 pure,
1603 pushpop_unsafe,
1604 qreg,
1605 qreg_low4,
1606 qreg_low8,
1607 quad_precision_float,
1608 question_mark,
1609 quote,
1610 range_inclusive_new,
1611 raw_dash_dylib: "raw-dylib",
1612 raw_dylib,
1613 raw_dylib_elf,
1614 raw_eq,
1615 raw_identifiers,
1616 raw_ref_op,
1617 re_rebalance_coherence,
1618 read_via_copy,
1619 readonly,
1620 realloc,
1621 realtime,
1622 reason,
1623 reborrow,
1624 receiver,
1625 receiver_target,
1626 recursion_limit,
1627 reexport_test_harness_main,
1628 ref_pat_eat_one_layer_2024,
1629 ref_pat_eat_one_layer_2024_structural,
1630 ref_pat_everywhere,
1631 ref_unwind_safe_trait,
1632 reference,
1633 reflect,
1634 reg,
1635 reg16,
1636 reg32,
1637 reg64,
1638 reg_abcd,
1639 reg_addr,
1640 reg_byte,
1641 reg_data,
1642 reg_iw,
1643 reg_nonzero,
1644 reg_pair,
1645 reg_ptr,
1646 reg_upper,
1647 register_attr,
1648 register_tool,
1649 relaxed_adts,
1650 relaxed_struct_unsize,
1651 relocation_model,
1652 rem,
1653 rem_assign,
1654 repr,
1655 repr128,
1656 repr_align,
1657 repr_align_enum,
1658 repr_packed,
1659 repr_simd,
1660 repr_transparent,
1661 require,
1662 reserve_x18: "reserve-x18",
1663 residual,
1664 result,
1665 result_ffi_guarantees,
1666 return_position_impl_trait_in_trait,
1667 return_type_notation,
1668 riscv32,
1669 riscv64,
1670 riscv_target_feature,
1671 rlib,
1672 ropi,
1673 ropi_rwpi: "ropi-rwpi",
1674 rotate_left,
1675 rotate_right,
1676 round_ties_even_f16,
1677 round_ties_even_f32,
1678 round_ties_even_f64,
1679 round_ties_even_f128,
1680 roundf16,
1681 roundf32,
1682 roundf64,
1683 roundf128,
1684 rtm_target_feature,
1685 runtime,
1686 rust,
1687 rust_2015,
1688 rust_2018,
1689 rust_2018_preview,
1690 rust_2021,
1691 rust_2024,
1692 rust_analyzer,
1693 rust_begin_unwind,
1694 rust_cold_cc,
1695 rust_eh_catch_typeinfo,
1696 rust_eh_personality,
1697 rust_future,
1698 rust_logo,
1699 rust_out,
1700 rust_preserve_none_cc,
1701 rustc,
1702 rustc_abi,
1703 rustc_align,
1705 rustc_align_static,
1706 rustc_allocator,
1707 rustc_allocator_zeroed,
1708 rustc_allocator_zeroed_variant,
1709 rustc_allow_const_fn_unstable,
1710 rustc_allow_incoherent_impl,
1711 rustc_allowed_through_unstable_modules,
1712 rustc_as_ptr,
1713 rustc_attrs,
1714 rustc_autodiff,
1715 rustc_builtin_macro,
1716 rustc_capture_analysis,
1717 rustc_clean,
1718 rustc_coherence_is_core,
1719 rustc_coinductive,
1720 rustc_confusables,
1721 rustc_const_stable,
1722 rustc_const_stable_indirect,
1723 rustc_const_unstable,
1724 rustc_conversion_suggestion,
1725 rustc_deallocator,
1726 rustc_default_body_unstable,
1727 rustc_delayed_bug_from_inside_query,
1728 rustc_deny_explicit_impl,
1729 rustc_deprecated_safe_2024,
1730 rustc_diagnostic_item,
1731 rustc_diagnostic_macros,
1732 rustc_do_not_const_check,
1733 rustc_doc_primitive,
1734 rustc_driver,
1735 rustc_dummy,
1736 rustc_dump_def_parents,
1737 rustc_dump_def_path,
1738 rustc_dump_hidden_type_of_opaques,
1739 rustc_dump_inferred_outlives,
1740 rustc_dump_item_bounds,
1741 rustc_dump_layout,
1742 rustc_dump_object_lifetime_defaults,
1743 rustc_dump_predicates,
1744 rustc_dump_symbol_name,
1745 rustc_dump_user_args,
1746 rustc_dump_variances,
1747 rustc_dump_variances_of_opaques,
1748 rustc_dump_vtable,
1749 rustc_dyn_incompatible_trait,
1750 rustc_effective_visibility,
1751 rustc_eii_foreign_item,
1752 rustc_evaluate_where_clauses,
1753 rustc_expected_cgu_reuse,
1754 rustc_force_inline,
1755 rustc_has_incoherent_inherent_impls,
1756 rustc_if_this_changed,
1757 rustc_inherit_overflow_checks,
1758 rustc_insignificant_dtor,
1759 rustc_intrinsic,
1760 rustc_intrinsic_const_stable_indirect,
1761 rustc_legacy_const_generics,
1762 rustc_lint_opt_deny_field_access,
1763 rustc_lint_opt_ty,
1764 rustc_lint_query_instability,
1765 rustc_lint_untracked_query_information,
1766 rustc_macro_transparency,
1767 rustc_main,
1768 rustc_mir,
1769 rustc_must_implement_one_of,
1770 rustc_must_match_exhaustively,
1771 rustc_never_returns_null_ptr,
1772 rustc_never_type_options,
1773 rustc_no_implicit_autorefs,
1774 rustc_no_implicit_bounds,
1775 rustc_no_mir_inline,
1776 rustc_no_writable,
1777 rustc_non_const_trait_method,
1778 rustc_nonnull_optimization_guaranteed,
1779 rustc_nounwind,
1780 rustc_objc_class,
1781 rustc_objc_selector,
1782 rustc_offload_kernel,
1783 rustc_on_unimplemented,
1784 rustc_paren_sugar,
1785 rustc_partition_codegened,
1786 rustc_partition_reused,
1787 rustc_pass_by_value,
1788 rustc_pass_indirectly_in_non_rustic_abis,
1789 rustc_peek,
1790 rustc_peek_liveness,
1791 rustc_peek_maybe_init,
1792 rustc_peek_maybe_uninit,
1793 rustc_preserve_ub_checks,
1794 rustc_private,
1795 rustc_proc_macro_decls,
1796 rustc_promotable,
1797 rustc_pub_transparent,
1798 rustc_reallocator,
1799 rustc_regions,
1800 rustc_reservation_impl,
1801 rustc_scalable_vector,
1802 rustc_should_not_be_called_on_const_items,
1803 rustc_simd_monomorphize_lane_limit,
1804 rustc_skip_during_method_dispatch,
1805 rustc_specialization_trait,
1806 rustc_std_internal_symbol,
1807 rustc_strict_coherence,
1808 rustc_test_marker,
1809 rustc_then_this_would_need,
1810 rustc_trivial_field_reads,
1811 rustc_unsafe_specialization_marker,
1812 rustdoc,
1813 rustdoc_internals,
1814 rustdoc_missing_doc_code_examples,
1815 rustfmt,
1816 rvalue_static_promotion,
1817 rwpi,
1818 s390x,
1819 s390x_target_feature,
1820 s390x_target_feature_vector,
1821 safety,
1822 sanitize,
1823 sanitizer_cfi_generalize_pointers,
1824 sanitizer_cfi_normalize_integers,
1825 sanitizer_runtime,
1826 saturating_add,
1827 saturating_sub,
1828 sdylib,
1829 search_unbox,
1830 select_unpredictable,
1831 self_in_typedefs,
1832 self_struct_ctor,
1833 semiopaque,
1834 sha2,
1835 sha3,
1836 sha512_sm_x86,
1837 shadow_call_stack,
1838 shallow,
1839 shl,
1840 shl_assign,
1841 shorter_tail_lifetimes,
1842 should_panic,
1843 show,
1844 shr,
1845 shr_assign,
1846 signed,
1847 simd,
1848 simd_add,
1849 simd_and,
1850 simd_arith_offset,
1851 simd_as,
1852 simd_bitmask,
1853 simd_bitreverse,
1854 simd_bswap,
1855 simd_carryless_mul,
1856 simd_cast,
1857 simd_cast_ptr,
1858 simd_ceil,
1859 simd_ctlz,
1860 simd_ctpop,
1861 simd_cttz,
1862 simd_div,
1863 simd_eq,
1864 simd_expose_provenance,
1865 simd_extract,
1866 simd_extract_dyn,
1867 simd_fabs,
1868 simd_fcos,
1869 simd_fexp,
1870 simd_fexp2,
1871 simd_ffi,
1872 simd_flog,
1873 simd_flog2,
1874 simd_flog10,
1875 simd_floor,
1876 simd_fma,
1877 simd_fsin,
1878 simd_fsqrt,
1879 simd_funnel_shl,
1880 simd_funnel_shr,
1881 simd_gather,
1882 simd_ge,
1883 simd_gt,
1884 simd_insert,
1885 simd_insert_dyn,
1886 simd_le,
1887 simd_lt,
1888 simd_masked_load,
1889 simd_masked_store,
1890 simd_maximum_number_nsz,
1891 simd_minimum_number_nsz,
1892 simd_mul,
1893 simd_ne,
1894 simd_neg,
1895 simd_or,
1896 simd_reduce_add_ordered,
1897 simd_reduce_add_unordered,
1898 simd_reduce_all,
1899 simd_reduce_and,
1900 simd_reduce_any,
1901 simd_reduce_max,
1902 simd_reduce_min,
1903 simd_reduce_mul_ordered,
1904 simd_reduce_mul_unordered,
1905 simd_reduce_or,
1906 simd_reduce_xor,
1907 simd_relaxed_fma,
1908 simd_rem,
1909 simd_round,
1910 simd_round_ties_even,
1911 simd_saturating_add,
1912 simd_saturating_sub,
1913 simd_scatter,
1914 simd_select,
1915 simd_select_bitmask,
1916 simd_shl,
1917 simd_shr,
1918 simd_shuffle,
1919 simd_shuffle_const_generic,
1920 simd_splat,
1921 simd_sub,
1922 simd_trunc,
1923 simd_with_exposed_provenance,
1924 simd_xor,
1925 since,
1926 sinf16,
1927 sinf32,
1928 sinf64,
1929 sinf128,
1930 size,
1931 size_of,
1932 size_of_type_id,
1933 size_of_val,
1934 sized,
1935 sized_hierarchy,
1936 slice,
1937 slice_from_raw_parts,
1938 slice_from_raw_parts_mut,
1939 slice_get_unchecked,
1940 slice_len_fn,
1941 slice_patterns,
1942 slicing_syntax,
1943 soft_float: "soft-float",
1944 sparc,
1945 sparc64,
1946 sparc_target_feature,
1947 spe_acc,
1948 specialization,
1949 speed,
1950 spirv,
1951 spotlight,
1952 sqrtf16,
1953 sqrtf32,
1954 sqrtf64,
1955 sqrtf128,
1956 sreg,
1957 sreg_low16,
1958 sse,
1959 sse2,
1960 sse4a_target_feature,
1961 stable,
1962 staged_api,
1963 start,
1964 state,
1965 static_align,
1966 static_in_const,
1967 static_nobundle,
1968 static_recursion,
1969 staticlib,
1970 std,
1971 std_lib_injection,
1972 std_panic,
1973 std_panic_2015_macro,
1974 std_panic_macro,
1975 stmt,
1976 stmt_expr_attributes,
1977 stop_after_dataflow,
1978 store,
1979 str,
1980 str_from_utf8,
1981 str_from_utf8_mut,
1982 str_from_utf8_unchecked,
1983 str_from_utf8_unchecked_mut,
1984 str_inherent_from_utf8,
1985 str_inherent_from_utf8_mut,
1986 str_inherent_from_utf8_unchecked,
1987 str_inherent_from_utf8_unchecked_mut,
1988 strict_provenance_lints,
1989 string_deref_patterns,
1990 stringify,
1991 struct_field_attributes,
1992 struct_inherit,
1993 struct_variant,
1994 structural_match,
1995 structural_peq,
1996 sub,
1997 sub_assign,
1998 sub_with_overflow,
1999 suggestion,
2000 super_let,
2001 supertrait_item_shadowing,
2002 sve_cast,
2003 sve_tuple_create2,
2004 sve_tuple_create3,
2005 sve_tuple_create4,
2006 sve_tuple_get,
2007 sve_tuple_set,
2008 sym,
2009 sync,
2010 synthetic,
2011 t32,
2012 target,
2013 target_abi,
2014 target_arch,
2015 target_endian,
2016 target_env,
2017 target_family,
2018 target_feature,
2019 target_feature_11,
2020 target_feature_inline_always,
2021 target_has_atomic,
2022 target_has_atomic_equal_alignment,
2023 target_has_atomic_load_store,
2024 target_has_reliable_f16,
2025 target_has_reliable_f16_math,
2026 target_has_reliable_f128,
2027 target_has_reliable_f128_math,
2028 target_object_format,
2029 target_os,
2030 target_pointer_width,
2031 target_thread_local,
2032 target_vendor,
2033 tbm_target_feature,
2034 termination,
2035 termination_trait,
2036 termination_trait_test,
2037 test,
2038 test_2018_feature,
2039 test_accepted_feature,
2040 test_case,
2041 test_incomplete_feature,
2042 test_removed_feature,
2043 test_runner,
2044 test_unstable_lint,
2045 thread,
2046 thread_local,
2047 three_way_compare,
2048 thumb2,
2049 thumb_mode: "thumb-mode",
2050 tmm_reg,
2051 to_owned_method,
2052 to_string,
2053 to_vec,
2054 tool_attributes,
2055 tool_lints,
2056 trace_macros,
2057 track_caller,
2058 trait_alias,
2059 trait_ty,
2060 trait_upcasting,
2061 transmute,
2062 transmute_generic_consts,
2063 transmute_opts,
2064 transmute_trait,
2065 transmute_unchecked,
2066 transparent,
2067 transparent_enums,
2068 transparent_unions,
2069 trivial_bounds,
2070 trivial_clone,
2071 truncf16,
2072 truncf32,
2073 truncf64,
2074 truncf128,
2075 try_blocks,
2076 try_blocks_heterogeneous,
2077 try_capture,
2078 try_from,
2079 try_into,
2080 try_trait_v2,
2081 try_trait_v2_residual,
2082 try_update,
2083 tt,
2084 tuple,
2085 tuple_indexing,
2086 tuple_trait,
2087 two_phase,
2088 ty,
2089 type_alias_enum_variants,
2090 type_alias_impl_trait,
2091 type_ascribe,
2092 type_ascription,
2093 type_changing_struct_update,
2094 type_id,
2095 type_id_eq,
2096 type_id_vtable,
2097 type_info,
2098 type_ir,
2099 type_ir_infer_ctxt_like,
2100 type_ir_inherent,
2101 type_ir_interner,
2102 type_length_limit,
2103 type_macros,
2104 type_name,
2105 type_of,
2106 type_privacy_lints,
2107 typed_swap_nonoverlapping,
2108 u8,
2109 u8_legacy_const_max,
2110 u8_legacy_const_min,
2111 u8_legacy_fn_max_value,
2112 u8_legacy_fn_min_value,
2113 u8_legacy_mod,
2114 u16,
2115 u16_legacy_const_max,
2116 u16_legacy_const_min,
2117 u16_legacy_fn_max_value,
2118 u16_legacy_fn_min_value,
2119 u16_legacy_mod,
2120 u32,
2121 u32_legacy_const_max,
2122 u32_legacy_const_min,
2123 u32_legacy_fn_max_value,
2124 u32_legacy_fn_min_value,
2125 u32_legacy_mod,
2126 u64,
2127 u64_legacy_const_max,
2128 u64_legacy_const_min,
2129 u64_legacy_fn_max_value,
2130 u64_legacy_fn_min_value,
2131 u64_legacy_mod,
2132 u128,
2133 u128_legacy_const_max,
2134 u128_legacy_const_min,
2135 u128_legacy_fn_max_value,
2136 u128_legacy_fn_min_value,
2137 u128_legacy_mod,
2138 ub_checks,
2139 unaligned_volatile_load,
2140 unaligned_volatile_store,
2141 unboxed_closures,
2142 unchecked_add,
2143 unchecked_div,
2144 unchecked_funnel_shl,
2145 unchecked_funnel_shr,
2146 unchecked_mul,
2147 unchecked_rem,
2148 unchecked_shl,
2149 unchecked_shr,
2150 unchecked_sub,
2151 undecorated,
2152 underscore_const_names,
2153 underscore_imports,
2154 underscore_lifetimes,
2155 uniform_paths,
2156 unit,
2157 universal_impl_trait,
2158 unix,
2159 unlikely,
2160 unmarked_api,
2161 unnamed_fields,
2162 unpin,
2163 unqualified_local_imports,
2164 unreachable,
2165 unreachable_2015,
2166 unreachable_2015_macro,
2167 unreachable_2021,
2168 unreachable_code,
2169 unreachable_display,
2170 unreachable_macro,
2171 unrestricted_attribute_tokens,
2172 unsafe_attributes,
2173 unsafe_binders,
2174 unsafe_block_in_unsafe_fn,
2175 unsafe_cell,
2176 unsafe_cell_raw_get,
2177 unsafe_eii,
2178 unsafe_extern_blocks,
2179 unsafe_fields,
2180 unsafe_no_drop_flag,
2181 unsafe_pinned,
2182 unsafe_unpin,
2183 unsafety,
2184 unsize,
2185 unsized_const_param_ty,
2186 unsized_const_params,
2187 unsized_fn_params,
2188 unsized_locals,
2189 unsized_tuple_coercion,
2190 unstable,
2191 unstable_feature_bound,
2192 unstable_location_reason_default: "this crate is being loaded from the sysroot, an \
2193 unstable location; did you mean to load this crate \
2194 from crates.io via `Cargo.toml` instead?",
2195 unstable_removed,
2196 untagged_unions,
2197 unused_imports,
2198 unwind,
2199 unwind_attributes,
2200 unwind_safe_trait,
2201 unwrap,
2202 unwrap_binder,
2203 unwrap_or,
2204 update,
2205 use_cloned,
2206 use_extern_macros,
2207 use_nested_groups,
2208 used,
2209 used_with_arg,
2210 using,
2211 usize,
2212 usize_legacy_const_max,
2213 usize_legacy_const_min,
2214 usize_legacy_fn_max_value,
2215 usize_legacy_fn_min_value,
2216 usize_legacy_mod,
2217 v1,
2218 v8plus,
2219 va_arg,
2220 va_arg_safe,
2221 va_copy,
2222 va_end,
2223 va_list,
2224 va_start,
2225 val,
2226 validity,
2227 value,
2228 values,
2229 var,
2230 variadic,
2231 variant_count,
2232 variants,
2233 vec,
2234 vector,
2235 verbatim,
2236 version,
2237 vfp2,
2238 view_types,
2239 vis,
2240 visible_private_types,
2241 volatile,
2242 volatile_copy_memory,
2243 volatile_copy_nonoverlapping_memory,
2244 volatile_load,
2245 volatile_set_memory,
2246 volatile_store,
2247 vreg,
2248 vreg_low16,
2249 vreg_pair,
2250 vsreg,
2251 vsx,
2252 vtable_align,
2253 vtable_size,
2254 warn,
2255 wasip2,
2256 wasm,
2257 wasm32,
2258 wasm64,
2259 wasm_abi,
2260 wasm_import_module,
2261 wasm_target_feature,
2262 weak,
2263 weak_odr,
2264 where_clause_attrs,
2265 while_let,
2266 whole_dash_archive: "whole-archive",
2267 width,
2268 windows,
2269 windows_subsystem,
2270 with_negative_coherence,
2271 wrap_binder,
2272 wrapping_add,
2273 wrapping_div,
2274 wrapping_mul,
2275 wrapping_rem,
2276 wrapping_rem_euclid,
2277 wrapping_sub,
2278 wreg,
2279 write_box_via_move,
2280 write_bytes,
2281 write_fmt,
2282 write_macro,
2283 write_str,
2284 write_via_move,
2285 writeln_macro,
2286 x86,
2287 x86_64,
2288 x86_amx_intrinsics,
2289 x87_reg,
2290 x87_target_feature,
2291 xcoff,
2292 xer,
2293 xmm_reg,
2294 xop_target_feature,
2295 xtensa,
2296 yeet_desugar_details,
2297 yeet_expr,
2298 yes,
2299 yield_expr,
2300 ymm_reg,
2301 yreg,
2302 zca,
2303 zfh,
2304 zfhmin,
2305 zmm_reg,
2306 ztso,
2307 }
2309}
2310
2311pub const STDLIB_STABLE_CRATES: &[Symbol] = &[sym::std, sym::core, sym::alloc, sym::proc_macro];
2314
2315#[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)]
2316pub struct Ident {
2317 pub name: Symbol,
2322 pub span: Span,
2323}
2324
2325impl Ident {
2326 #[inline]
2327 pub fn new(name: Symbol, span: Span) -> Ident {
2329 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);
2330 Ident { name, span }
2331 }
2332
2333 #[inline]
2335 pub fn with_dummy_span(name: Symbol) -> Ident {
2336 Ident::new(name, DUMMY_SP)
2337 }
2338
2339 #[inline]
2344 pub fn dummy() -> Ident {
2345 Ident::with_dummy_span(sym::dummy)
2346 }
2347
2348 pub fn from_str(string: &str) -> Ident {
2350 Ident::with_dummy_span(Symbol::intern(string))
2351 }
2352
2353 pub fn from_str_and_span(string: &str, span: Span) -> Ident {
2355 Ident::new(Symbol::intern(string), span)
2356 }
2357
2358 pub fn with_span_pos(self, span: Span) -> Ident {
2360 Ident::new(self.name, span.with_ctxt(self.span.ctxt()))
2361 }
2362
2363 pub fn without_first_quote(self) -> Ident {
2366 self.as_str()
2367 .strip_prefix('\'')
2368 .map_or(self, |name| Ident::new(Symbol::intern(name), self.span))
2369 }
2370
2371 pub fn normalize_to_macros_2_0(self) -> Ident {
2377 Ident::new(self.name, self.span.normalize_to_macros_2_0())
2378 }
2379
2380 #[inline]
2386 pub fn normalize_to_macro_rules(self) -> Ident {
2387 Ident::new(self.name, self.span.normalize_to_macro_rules())
2388 }
2389
2390 pub fn as_str(&self) -> &str {
2396 self.name.as_str()
2397 }
2398}
2399
2400impl PartialEq for Ident {
2401 #[inline]
2402 fn eq(&self, rhs: &Self) -> bool {
2403 self.name == rhs.name && self.span.eq_ctxt(rhs.span)
2404 }
2405}
2406
2407impl Hash for Ident {
2408 fn hash<H: Hasher>(&self, state: &mut H) {
2409 self.name.hash(state);
2410 self.span.ctxt().hash(state);
2411 }
2412}
2413
2414impl fmt::Debug for Ident {
2415 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2416 fmt::Display::fmt(self, f)?;
2417 fmt::Debug::fmt(&self.span.ctxt(), f)
2418 }
2419}
2420
2421impl fmt::Display for Ident {
2425 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2426 fmt::Display::fmt(&IdentPrinter::new(self.name, self.guess_print_mode(), None), f)
2427 }
2428}
2429
2430pub enum IdentPrintMode {
2431 Normal,
2432 RawIdent,
2433 RawLifetime,
2434}
2435
2436pub struct IdentPrinter {
2450 symbol: Symbol,
2451 mode: IdentPrintMode,
2452 convert_dollar_crate: Option<Span>,
2455}
2456
2457impl IdentPrinter {
2458 pub fn new(
2460 symbol: Symbol,
2461 mode: IdentPrintMode,
2462 convert_dollar_crate: Option<Span>,
2463 ) -> IdentPrinter {
2464 IdentPrinter { symbol, mode, convert_dollar_crate }
2465 }
2466
2467 pub fn for_ast_ident(ident: Ident, mode: IdentPrintMode) -> IdentPrinter {
2471 IdentPrinter::new(ident.name, mode, Some(ident.span))
2472 }
2473}
2474
2475impl fmt::Display for IdentPrinter {
2476 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2477 let s = match self.mode {
2478 IdentPrintMode::Normal
2479 if self.symbol == kw::DollarCrate
2480 && let Some(span) = self.convert_dollar_crate =>
2481 {
2482 let converted = span.ctxt().dollar_crate_name();
2483 if !converted.is_path_segment_keyword() {
2484 f.write_str("::")?;
2485 }
2486 converted
2487 }
2488 IdentPrintMode::Normal => self.symbol,
2489 IdentPrintMode::RawIdent => {
2490 f.write_str("r#")?;
2491 self.symbol
2492 }
2493 IdentPrintMode::RawLifetime => {
2494 f.write_str("'r#")?;
2495 let s = self
2496 .symbol
2497 .as_str()
2498 .strip_prefix("'")
2499 .expect("only lifetime idents should be passed with RawLifetime mode");
2500 Symbol::intern(s)
2501 }
2502 };
2503 s.fmt(f)
2504 }
2505}
2506
2507#[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)]
2513pub struct MacroRulesNormalizedIdent(Ident);
2514
2515impl MacroRulesNormalizedIdent {
2516 #[inline]
2517 pub fn new(ident: Ident) -> Self {
2518 MacroRulesNormalizedIdent(ident.normalize_to_macro_rules())
2519 }
2520
2521 pub fn symbol(&self) -> Symbol {
2522 self.0.name
2523 }
2524
2525 pub fn ident(&self) -> Ident {
2526 self.0
2527 }
2528}
2529
2530impl fmt::Debug for MacroRulesNormalizedIdent {
2531 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2532 fmt::Debug::fmt(&self.0, f)
2533 }
2534}
2535
2536impl fmt::Display for MacroRulesNormalizedIdent {
2537 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2538 fmt::Display::fmt(&self.0, f)
2539 }
2540}
2541
2542#[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)]
2552pub struct Symbol(SymbolIndex);
2553
2554impl ::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! {
2556 #[orderable]
2557 struct SymbolIndex {}
2558}
2559
2560impl Symbol {
2561 pub const fn new(n: u32) -> Self {
2564 Symbol(SymbolIndex::from_u32(n))
2565 }
2566
2567 #[rustc_diagnostic_item = "SymbolIntern"]
2569 pub fn intern(str: &str) -> Self {
2570 with_session_globals(|session_globals| session_globals.symbol_interner.intern_str(str))
2571 }
2572
2573 pub fn as_str(&self) -> &str {
2582 with_session_globals(|session_globals| unsafe {
2583 std::mem::transmute::<&str, &str>(session_globals.symbol_interner.get_str(*self))
2584 })
2585 }
2586
2587 pub fn as_u32(self) -> u32 {
2588 self.0.as_u32()
2589 }
2590
2591 pub fn is_empty(self) -> bool {
2592 self == sym::empty
2593 }
2594
2595 pub fn to_ident_string(self) -> String {
2600 if self == sym::empty { String::new() } else { Ident::with_dummy_span(self).to_string() }
2602 }
2603
2604 pub fn find_similar(
2611 self,
2612 candidates: &[Symbol],
2613 ) -> Option<(Symbol, bool)> {
2614 let lowercase = self.as_str().to_lowercase();
2615 let lowercase_sym = Symbol::intern(&lowercase);
2616 if candidates.contains(&lowercase_sym) {
2617 Some((lowercase_sym, true))
2618 } else if let Some(similar_sym) = find_best_match_for_name(candidates, self, None) {
2619 Some((similar_sym, false))
2620 } else {
2621 None
2622 }
2623 }
2624}
2625
2626impl fmt::Debug for Symbol {
2627 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2628 fmt::Debug::fmt(self.as_str(), f)
2629 }
2630}
2631
2632impl fmt::Display for Symbol {
2633 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2634 fmt::Display::fmt(self.as_str(), f)
2635 }
2636}
2637
2638impl StableHash for Symbol {
2639 #[inline]
2640 fn stable_hash<Hcx: StableHashCtxt>(&self, hcx: &mut Hcx, hasher: &mut StableHasher) {
2641 self.as_str().stable_hash(hcx, hasher);
2642 }
2643}
2644
2645impl StableCompare for Symbol {
2646 const CAN_USE_UNSTABLE_SORT: bool = true;
2647
2648 fn stable_cmp(&self, other: &Self) -> std::cmp::Ordering {
2649 self.as_str().cmp(other.as_str())
2650 }
2651}
2652
2653#[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)]
2656pub struct ByteSymbol(SymbolIndex);
2657
2658impl ByteSymbol {
2659 pub const fn new(n: u32) -> Self {
2662 ByteSymbol(SymbolIndex::from_u32(n))
2663 }
2664
2665 pub fn intern(byte_str: &[u8]) -> Self {
2667 with_session_globals(|session_globals| {
2668 session_globals.symbol_interner.intern_byte_str(byte_str)
2669 })
2670 }
2671
2672 pub fn as_byte_str(&self) -> &[u8] {
2674 with_session_globals(|session_globals| unsafe {
2675 std::mem::transmute::<&[u8], &[u8]>(session_globals.symbol_interner.get_byte_str(*self))
2676 })
2677 }
2678
2679 pub fn as_u32(self) -> u32 {
2680 self.0.as_u32()
2681 }
2682}
2683
2684impl fmt::Debug for ByteSymbol {
2685 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2686 fmt::Debug::fmt(self.as_byte_str(), f)
2687 }
2688}
2689
2690impl StableHash for ByteSymbol {
2691 #[inline]
2692 fn stable_hash<Hcx: StableHashCtxt>(&self, hcx: &mut Hcx, hasher: &mut StableHasher) {
2693 self.as_byte_str().stable_hash(hcx, hasher);
2694 }
2695}
2696
2697pub(crate) struct Interner(Lock<InternerInner>);
2702
2703struct InternerInner {
2709 arena: DroplessArena,
2710 byte_strs: FxIndexSet<&'static [u8]>,
2711}
2712
2713impl Interner {
2714 fn prefill(init: &[&'static str], extra: &[&'static str]) -> Self {
2718 let byte_strs = FxIndexSet::from_iter(
2719 init.iter().copied().chain(extra.iter().copied()).map(|str| str.as_bytes()),
2720 );
2721
2722 #[expect(rustc::potential_query_instability)]
2724 if byte_strs.len() != init.len() + extra.len() {
2725 {
::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!(
2726 "duplicate symbols in the rustc symbol list and the extra symbols added by the driver: {:?}",
2727 FxHashSet::intersection(
2728 &init.iter().copied().collect(),
2729 &extra.iter().copied().collect(),
2730 )
2731 .collect::<Vec<_>>()
2732 )
2733 }
2734
2735 Interner(Lock::new(InternerInner { arena: Default::default(), byte_strs }))
2736 }
2737
2738 fn intern_str(&self, str: &str) -> Symbol {
2739 Symbol::new(self.intern_inner(str.as_bytes()))
2740 }
2741
2742 fn intern_byte_str(&self, byte_str: &[u8]) -> ByteSymbol {
2743 ByteSymbol::new(self.intern_inner(byte_str))
2744 }
2745
2746 #[inline]
2747 fn intern_inner(&self, byte_str: &[u8]) -> u32 {
2748 let mut inner = self.0.lock();
2749 if let Some(idx) = inner.byte_strs.get_index_of(byte_str) {
2750 return idx as u32;
2751 }
2752
2753 let byte_str: &[u8] = inner.arena.alloc_slice(byte_str);
2754
2755 let byte_str: &'static [u8] = unsafe { &*(byte_str as *const [u8]) };
2758
2759 let (idx, is_new) = inner.byte_strs.insert_full(byte_str);
2763 if true {
if !is_new { ::core::panicking::panic("assertion failed: is_new") };
};debug_assert!(is_new); idx as u32
2766 }
2767
2768 fn get_str(&self, symbol: Symbol) -> &str {
2772 let byte_str = self.get_inner(symbol.0.as_usize());
2773 unsafe { str::from_utf8_unchecked(byte_str) }
2775 }
2776
2777 fn get_byte_str(&self, symbol: ByteSymbol) -> &[u8] {
2781 self.get_inner(symbol.0.as_usize())
2782 }
2783
2784 fn get_inner(&self, index: usize) -> &[u8] {
2785 self.0.lock().byte_strs.get_index(index).unwrap()
2786 }
2787}
2788
2789pub mod kw {
2795 pub use super::kw_generated::*;
2796}
2797
2798pub mod sym {
2804 use super::Symbol;
2806 pub use super::kw::MacroRules as macro_rules;
2807 #[doc(inline)]
2808 pub use super::sym_generated::*;
2809
2810 pub const C: Symbol = ascii_letter_digit('C').unwrap();
2812
2813 #[expect(non_upper_case_globals)]
2815 pub const f: Symbol = ascii_letter_digit('f').unwrap();
2816 #[expect(non_upper_case_globals)]
2817 pub const d: Symbol = ascii_letter_digit('d').unwrap();
2818
2819 pub fn integer<N: TryInto<usize> + Copy + itoa::Integer>(n: N) -> Symbol {
2824 if let Result::Ok(idx) = n.try_into() {
2825 if idx < 10 {
2826 return Symbol::new(super::SYMBOL_DIGITS_BASE + idx as u32);
2827 }
2828 }
2829 let mut buffer = itoa::Buffer::new();
2830 let printed = buffer.format(n);
2831 Symbol::intern(printed)
2832 }
2833
2834 pub const fn ascii_letter_digit(c: char) -> Option<Symbol> {
2835 let i = c as u32;
2836 Option::Some(Symbol::new(match c {
2837 '0'..='9' => super::SYMBOL_DIGITS_BASE + (i - '0' as u32),
2838 'A'..='Z' => super::SYMBOL_UPPERCASE_LETTERS_BASE + (i - 'A' as u32),
2839 'a'..='z' => super::SYMBOL_LOWERCASE_LETTERS_BASE + (i - 'a' as u32),
2840 _ => return Option::None,
2841 }))
2842 }
2843
2844 pub fn character(c: char) -> Symbol {
2845 ascii_letter_digit(c).unwrap_or_else(|| {
2846 let mut buf: [u8; char::MAX_LEN_UTF8] = Default::default();
2847 Symbol::intern(c.encode_utf8(&mut buf))
2848 })
2849 }
2850}
2851
2852impl Symbol {
2853 fn is_special(self) -> bool {
2854 self <= kw::Underscore
2855 }
2856
2857 fn is_used_keyword_always(self) -> bool {
2858 self >= kw::As && self <= kw::While
2859 }
2860
2861 fn is_unused_keyword_always(self) -> bool {
2862 self >= kw::Abstract && self <= kw::Yield
2863 }
2864
2865 fn is_used_keyword_conditional(self, edition: impl FnOnce() -> Edition) -> bool {
2866 (self >= kw::Async && self <= kw::Dyn) && edition() >= Edition::Edition2018
2867 }
2868
2869 fn is_unused_keyword_conditional(self, edition: impl Copy + FnOnce() -> Edition) -> bool {
2870 self == kw::Gen && edition().at_least_rust_2024()
2871 || self == kw::Try && edition().at_least_rust_2018()
2872 }
2873
2874 pub fn is_reserved(self, edition: impl Copy + FnOnce() -> Edition) -> bool {
2875 self.is_special()
2876 || self.is_used_keyword_always()
2877 || self.is_unused_keyword_always()
2878 || self.is_used_keyword_conditional(edition)
2879 || self.is_unused_keyword_conditional(edition)
2880 }
2881
2882 pub fn is_weak(self) -> bool {
2883 self >= kw::Auto && self <= kw::Yeet
2884 }
2885
2886 pub fn is_path_segment_keyword(self) -> bool {
2888 self == kw::Super
2889 || self == kw::SelfLower
2890 || self == kw::SelfUpper
2891 || self == kw::Crate
2892 || self == kw::PathRoot
2893 || self == kw::DollarCrate
2894 }
2895
2896 pub fn is_bool_lit(self) -> bool {
2898 self == kw::True || self == kw::False
2899 }
2900
2901 pub fn can_be_raw(self) -> bool {
2903 self != sym::empty && self != kw::Underscore && !self.is_path_segment_keyword()
2904 }
2905
2906 pub fn is_predefined(index: u32) -> bool {
2910 index < PREDEFINED_SYMBOLS_COUNT
2911 }
2912}
2913
2914impl Ident {
2915 pub fn is_special(self) -> bool {
2918 self.name.is_special()
2919 }
2920
2921 pub fn is_used_keyword(self) -> bool {
2923 self.name.is_used_keyword_always()
2925 || self.name.is_used_keyword_conditional(|| self.span.edition())
2926 }
2927
2928 pub fn is_unused_keyword(self) -> bool {
2930 self.name.is_unused_keyword_always()
2932 || self.name.is_unused_keyword_conditional(|| self.span.edition())
2933 }
2934
2935 pub fn is_reserved(self) -> bool {
2937 self.name.is_reserved(|| self.span.edition())
2939 }
2940
2941 pub fn is_path_segment_keyword(self) -> bool {
2943 self.name.is_path_segment_keyword()
2944 }
2945
2946 pub fn is_raw_guess(self) -> bool {
2949 self.name.can_be_raw() && self.is_reserved()
2950 }
2951
2952 pub fn is_reserved_lifetime(self) -> bool {
2955 self.is_reserved() && ![kw::Underscore, kw::Static].contains(&self.name)
2956 }
2957
2958 pub fn is_raw_lifetime_guess(self) -> bool {
2959 if self.name.as_str() == "'" {
2962 return false;
2963 }
2964 let ident_without_apostrophe = self.without_first_quote();
2965 ident_without_apostrophe.name != self.name
2966 && ident_without_apostrophe.name.can_be_raw()
2967 && ident_without_apostrophe.is_reserved_lifetime()
2968 }
2969
2970 pub fn guess_print_mode(self) -> IdentPrintMode {
2971 if self.is_raw_lifetime_guess() {
2972 IdentPrintMode::RawLifetime
2973 } else if self.is_raw_guess() {
2974 IdentPrintMode::RawIdent
2975 } else {
2976 IdentPrintMode::Normal
2977 }
2978 }
2979
2980 pub fn is_numeric(self) -> bool {
2983 self.as_str().bytes().all(|b| b.is_ascii_digit())
2984 }
2985}
2986
2987pub fn used_keywords(edition: impl Copy + FnOnce() -> Edition) -> Vec<Symbol> {
2992 (kw::DollarCrate.as_u32()..kw::Yeet.as_u32())
2993 .filter_map(|kw| {
2994 let kw = Symbol::new(kw);
2995 if kw.is_used_keyword_always() || kw.is_used_keyword_conditional(edition) {
2996 Some(kw)
2997 } else {
2998 None
2999 }
3000 })
3001 .collect()
3002}