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