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",
"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",
"clflushopt_target_feature", "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_actual_type_id",
"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-kernel",
"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",
"offload_kernel", "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_field_representing_type", "type_id_fields",
"type_id_variants", "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", "unimplemented",
"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 TrivialClone,
322 Try,
323 TryCaptureGeneric,
324 TryCapturePrintable,
325 TryFrom,
326 TryInto,
327 Tuple,
328 Ty,
329 TyCtxt,
330 TyKind,
331 Type,
332 Union,
333 Unsize,
334 Vec,
335 Wrapper,
336 _DECLS,
337 __H,
338 __S,
339 __awaitee,
340 __try_var,
341 _t,
342 _task_context,
343 a32,
344 aarch64,
345 aarch64_target_feature,
346 aarch64_unstable_target_feature,
347 aarch64_ver_target_feature,
348 abi,
349 abi_amdgpu_kernel,
350 abi_avr_interrupt,
351 abi_c_cmse_nonsecure_call,
352 abi_cmse_nonsecure_call,
353 abi_custom,
354 abi_efiapi,
355 abi_gpu_kernel,
356 abi_msp430_interrupt,
357 abi_ptx,
358 abi_riscv_interrupt,
359 abi_swift,
360 abi_sysv64,
361 abi_thiscall,
362 abi_unadjusted,
363 abi_vectorcall,
364 abi_x86_interrupt,
365 abort,
366 add,
367 add_assign,
368 add_with_overflow,
369 address,
370 adt_const_params,
371 advanced_slice_patterns,
372 adx_target_feature,
373 aes,
374 aggregate_raw_ptr,
375 alias,
376 align,
377 align_of,
378 align_of_val,
379 alignment,
380 all,
381 alloc,
382 alloc_error_handler,
383 alloc_layout,
384 alloc_zeroed,
385 allocator,
386 allocator_api,
387 allocator_internals,
388 allow,
389 allow_fail,
390 allow_internal_unsafe,
391 allow_internal_unstable,
392 altivec,
393 alu32,
394 always,
395 amdgpu,
396 amdgpu_dispatch_ptr,
397 analysis,
398 and,
399 and_then,
400 anon,
401 anon_assoc,
402 anonymous_lifetime_in_impl_trait,
403 any,
404 apx_target_feature,
405 arbitrary_enum_discriminant,
406 arbitrary_self_types,
407 arbitrary_self_types_pointers,
408 areg,
409 args,
410 arith_offset,
411 arm,
412 arm64ec,
413 arm_a32: "arm::a32",
414 arm_t32: "arm::t32",
415 arm_target_feature,
416 array,
417 as_dash_needed: "as-needed",
418 as_ref,
419 asm,
420 asm_cfg,
421 asm_const,
422 asm_experimental_arch,
423 asm_experimental_reg,
424 asm_goto,
425 asm_goto_with_outputs,
426 asm_sym,
427 asm_unwind,
428 assert,
429 assert_eq,
430 assert_eq_macro,
431 assert_fields_are_eq,
432 assert_inhabited,
433 assert_macro,
434 assert_mem_uninitialized_valid,
435 assert_ne_macro,
436 assert_receiver_is_total_eq,
437 assert_zero_valid,
438 asserting,
439 associated_const_equality,
440 associated_consts,
441 associated_type_bounds,
442 associated_type_defaults,
443 associated_types,
444 assume,
445 assume_init,
446 asterisk: "*",
447 async_await,
448 async_call,
449 async_call_mut,
450 async_call_once,
451 async_closure,
452 async_drop,
453 async_drop_in_place,
454 async_fn,
455 async_fn_in_dyn_trait,
456 async_fn_in_trait,
457 async_fn_kind_helper,
458 async_fn_kind_upvars,
459 async_fn_mut,
460 async_fn_once,
461 async_fn_once_output,
462 async_fn_track_caller,
463 async_fn_traits,
464 async_for_loop,
465 async_gen_internals,
466 async_iterator,
467 async_iterator_poll_next,
468 async_trait_bounds,
469 atomic_and,
470 atomic_cxchg,
471 atomic_cxchgweak,
472 atomic_fence,
473 atomic_load,
474 atomic_max,
475 atomic_min,
476 atomic_nand,
477 atomic_or,
478 atomic_singlethreadfence,
479 atomic_store,
480 atomic_umax,
481 atomic_umin,
482 atomic_xadd,
483 atomic_xchg,
484 atomic_xor,
485 atomic_xsub,
486 atomics,
487 att_syntax,
488 attr,
489 attr_literals,
490 attribute,
491 attributes,
492 audit_that,
493 augmented_assignments,
494 auto_cfg,
495 auto_traits,
496 autodiff,
497 autodiff_forward,
498 autodiff_reverse,
499 automatically_derived,
500 available_externally,
501 avr,
502 avr_target_feature,
503 avx,
504 avx10_target_feature,
505 avx512_target_feature,
506 avx512bw,
507 avx512f,
508 await_macro,
509 backchain,
510 backend_repr,
511 bang,
512 begin_panic,
513 bench,
514 bevy_ecs,
515 bikeshed,
516 bikeshed_guaranteed_no_drop,
517 bin,
518 bind_by_move_pattern_guards,
519 bindings_after_at,
520 bitand,
521 bitand_assign,
522 bitor,
523 bitor_assign,
524 bitreverse,
525 bits,
526 bitxor,
527 bitxor_assign,
528 black_box,
529 block,
530 blocking,
531 bool,
532 borrowck_graphviz_format,
533 borrowck_graphviz_postflow,
534 box_new,
535 box_patterns,
536 box_syntax,
537 boxed_slice,
538 bpf,
539 bpf_target_feature,
540 braced_empty_structs,
541 branch,
542 breakpoint,
543 bridge,
544 bswap,
545 built,
546 builtin_syntax,
547 bundle,
548 c_dash_variadic,
549 c_str_literals,
550 c_unwind,
551 c_variadic,
552 c_variadic_experimental_arch,
553 c_variadic_naked_functions,
554 c_void,
555 call,
556 call_mut,
557 call_once,
558 call_once_future,
559 call_ref_future,
560 caller,
561 caller_location,
562 capture_disjoint_fields,
563 carrying_mul_add,
564 carryless_mul,
565 catch_unwind,
566 cause,
567 cdylib,
568 ceilf16,
569 ceilf32,
570 ceilf64,
571 ceilf128,
572 cfg,
573 cfg_accessible,
574 cfg_attr,
575 cfg_attr_multi,
576 cfg_attr_trace: "<cfg_attr_trace>", cfg_boolean_literals,
578 cfg_contract_checks,
579 cfg_doctest,
580 cfg_emscripten_wasm_eh,
581 cfg_eval,
582 cfg_overflow_checks,
583 cfg_panic,
584 cfg_relocation_model,
585 cfg_sanitize,
586 cfg_sanitizer_cfi,
587 cfg_select,
588 cfg_target_abi,
589 cfg_target_compact,
590 cfg_target_feature,
591 cfg_target_has_atomic,
592 cfg_target_has_atomic_equal_alignment,
593 cfg_target_has_reliable_f16_f128,
594 cfg_target_object_format,
595 cfg_target_thread_local,
596 cfg_target_vendor,
597 cfg_trace: "<cfg_trace>", cfg_ub_checks,
599 cfg_version,
600 cfi,
601 cfi_encoding,
602 char,
603 clflushopt_target_feature,
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_actual_type_id,
953 field_representing_type_raw,
954 field_type,
955 fields,
956 file,
957 final_associated_functions,
958 float_to_int_unchecked,
959 floorf16,
960 floorf32,
961 floorf64,
962 floorf128,
963 fma4_target_feature,
964 fmaf16,
965 fmaf32,
966 fmaf64,
967 fmaf128,
968 fmt,
969 fmt_debug,
970 fmul_algebraic,
971 fmul_fast,
972 fmuladdf16,
973 fmuladdf32,
974 fmuladdf64,
975 fmuladdf128,
976 fn_align,
977 fn_body,
978 fn_delegation,
979 fn_must_use,
980 fn_mut,
981 fn_once,
982 fn_once_output,
983 fn_ptr_addr,
984 fn_ptr_trait,
985 forbid,
986 force_target_feature,
987 forget,
988 format_args,
989 format_args_capture,
990 format_args_nl,
991 format_argument,
992 format_arguments,
993 format_macro,
994 framework,
995 freeze,
996 freeze_impls,
997 freg,
998 frem_algebraic,
999 frem_fast,
1000 from,
1001 from_desugaring,
1002 from_iter,
1003 from_output,
1004 from_residual,
1005 from_size_align_unchecked,
1006 from_size_alignment_unchecked,
1007 from_str,
1008 from_str_nonconst,
1009 from_usize,
1010 from_yeet,
1011 frontmatter,
1012 fsub_algebraic,
1013 fsub_fast,
1014 full,
1015 fundamental,
1016 fused_iterator,
1017 future_output,
1018 future_trait,
1019 fxsr,
1020 gdb_script_file,
1021 ge,
1022 gen_blocks,
1023 gen_future,
1024 generator_clone,
1025 generators,
1026 generic_arg_infer,
1027 generic_assert,
1028 generic_associated_types,
1029 generic_associated_types_extended,
1030 generic_const_args,
1031 generic_const_exprs,
1032 generic_const_items,
1033 generic_const_parameter_types,
1034 generic_param_attrs,
1035 generic_pattern_types,
1036 generics,
1037 get_context,
1038 global_alloc_ty,
1039 global_allocator,
1040 global_asm,
1041 global_registration,
1042 globs,
1043 gpu_kernel: "gpu-kernel",
1044 gpu_launch_sized_workgroup_mem,
1045 gt,
1046 guard,
1047 guard_patterns,
1048 half_open_range_patterns,
1049 half_open_range_patterns_in_slices,
1050 hash,
1051 hexagon,
1052 hexagon_target_feature,
1053 hidden,
1054 hide,
1055 homogeneous_aggregate,
1056 html_favicon_url,
1057 html_logo_url,
1058 html_no_source,
1059 html_playground_url,
1060 html_root_url,
1061 hvx,
1062 hvx_length64b: "hvx-length64b",
1063 hvx_length128b: "hvx-length128b",
1064 hwaddress,
1065 i8,
1066 i16,
1067 i32,
1068 i64,
1069 i128,
1070 i128_type,
1071 ident,
1072 if_let,
1073 if_let_guard,
1074 if_let_rescope,
1075 if_while_or_patterns,
1076 ignore,
1077 immediate_abort: "immediate-abort",
1078 impl_header_lifetime_elision,
1079 impl_lint_pass,
1080 impl_restriction,
1081 impl_trait_in_assoc_type,
1082 impl_trait_in_bindings,
1083 impl_trait_in_fn_trait_return,
1084 impl_trait_projections,
1085 implied_by,
1086 import,
1087 import_name_type,
1088 import_shadowing,
1089 import_trait_associated_functions,
1090 imported_main,
1091 in_band_lifetimes,
1092 include,
1093 include_bytes,
1094 include_str,
1095 inclusive_range_syntax,
1096 incomplete_features,
1097 index,
1098 index_mut,
1099 infer_outlives_requirements,
1100 infer_static_outlives_requirements,
1101 inherent_associated_types,
1102 initial,
1103 inlateout,
1104 inline,
1105 inline_const,
1106 inline_const_pat,
1107 inout,
1108 inputs,
1109 instruction_set,
1110 integer_: "integer", integral,
1112 internal,
1113 internal_eq_trait_method_impls,
1114 internal_features,
1115 into_async_iter_into_iter,
1116 into_future,
1117 into_iter,
1118 into_try_type,
1119 intra_doc_pointers,
1120 intrinsics,
1121 irrefutable_let_patterns,
1122 is,
1123 is_auto,
1124 is_val_statically_known,
1125 isa_attribute,
1126 isize,
1127 issue,
1128 issue_5723_bootstrap,
1129 issue_tracker_base_url,
1130 item,
1131 item_like_imports,
1132 iter,
1133 iter_mut,
1134 iterator,
1135 iterator_collect_fn,
1136 kcfi,
1137 kernel_address,
1138 kernel_hwaddress,
1139 keylocker_x86,
1140 keyword,
1141 kind,
1142 kreg,
1143 kreg0,
1144 label,
1145 label_break_value,
1146 lahfsahf_target_feature,
1147 lang,
1148 lang_items,
1149 large_assignments,
1150 last,
1151 lateout,
1152 lazy_normalization_consts,
1153 lazy_type_alias,
1154 le,
1155 legacy_receiver,
1156 len,
1157 let_chains,
1158 let_else,
1159 lhs,
1160 lib,
1161 libc,
1162 lifetime,
1163 lifetime_capture_rules_2024,
1164 lifetimes,
1165 line,
1166 link,
1167 link_arg_attribute,
1168 link_args,
1169 link_cfg,
1170 link_dash_arg: "link-arg",
1171 link_llvm_intrinsics,
1172 link_name,
1173 link_ordinal,
1174 link_section,
1175 linkage,
1176 linker,
1177 linker_info,
1178 linker_messages,
1179 linkonce,
1180 linkonce_odr,
1181 lint_reasons,
1182 literal,
1183 little, big,
1184 load,
1185 loaded_from_disk,
1186 local,
1187 local_inner_macros,
1188 log2f16,
1189 log2f32,
1190 log2f64,
1191 log2f128,
1192 log10f16,
1193 log10f32,
1194 log10f64,
1195 log10f128,
1196 log_syntax,
1197 logf16,
1198 logf32,
1199 logf64,
1200 logf128,
1201 loongarch32,
1202 loongarch64,
1203 loongarch_target_feature,
1204 loop_break_value,
1205 loop_match,
1206 lr,
1207 lt,
1208 m68k,
1209 m68k_target_feature,
1210 macho: "mach-o",
1211 macro_at_most_once_rep,
1212 macro_attr,
1213 macro_attributes_in_derive_output,
1214 macro_derive,
1215 macro_escape,
1216 macro_export,
1217 macro_guard_matcher,
1218 macro_lifetime_matcher,
1219 macro_literal_matcher,
1220 macro_metavar_expr,
1221 macro_metavar_expr_concat,
1222 macro_reexport,
1223 macro_use,
1224 macro_vis_matcher,
1225 macros_in_extern,
1226 main,
1227 managed_boxes,
1228 manually_drop,
1229 map,
1230 map_err,
1231 marker,
1232 marker_trait_attr,
1233 masked,
1234 match_beginning_vert,
1235 match_default_bindings,
1236 maximum_number_nsz_f16,
1237 maximum_number_nsz_f32,
1238 maximum_number_nsz_f64,
1239 maximum_number_nsz_f128,
1240 maximumf16,
1241 maximumf32,
1242 maximumf64,
1243 maximumf128,
1244 may_dangle,
1245 may_unwind,
1246 maybe_dangling,
1247 maybe_uninit,
1248 maybe_uninit_uninit,
1249 maybe_uninit_zeroed,
1250 mem,
1251 mem_align_const,
1252 mem_discriminant,
1253 mem_drop,
1254 mem_forget,
1255 mem_size_const,
1256 mem_swap,
1257 mem_uninitialized,
1258 mem_variant_count,
1259 mem_zeroed,
1260 member_constraints,
1261 memory,
1262 memtag,
1263 message,
1264 meta,
1265 meta_sized,
1266 metadata_type,
1267 mgca_type_const_syntax,
1268 min_adt_const_params,
1269 min_const_fn,
1270 min_const_generics,
1271 min_const_unsafe_fn,
1272 min_exhaustive_patterns,
1273 min_generic_const_args,
1274 min_specialization,
1275 min_type_alias_impl_trait,
1276 minimum_number_nsz_f16,
1277 minimum_number_nsz_f32,
1278 minimum_number_nsz_f64,
1279 minimum_number_nsz_f128,
1280 minimumf16,
1281 minimumf32,
1282 minimumf64,
1283 minimumf128,
1284 mips,
1285 mips32r6,
1286 mips64,
1287 mips64r6,
1288 mips_target_feature,
1289 mir_assume,
1290 mir_basic_block,
1291 mir_call,
1292 mir_cast_ptr_to_ptr,
1293 mir_cast_transmute,
1294 mir_cast_unsize,
1295 mir_checked,
1296 mir_debuginfo,
1297 mir_discriminant,
1298 mir_drop,
1299 mir_field,
1300 mir_goto,
1301 mir_make_place,
1302 mir_move,
1303 mir_offset,
1304 mir_ptr_metadata,
1305 mir_return,
1306 mir_return_to,
1307 mir_set_discriminant,
1308 mir_static,
1309 mir_static_mut,
1310 mir_storage_dead,
1311 mir_storage_live,
1312 mir_tail_call,
1313 mir_unreachable,
1314 mir_unwind_cleanup,
1315 mir_unwind_continue,
1316 mir_unwind_resume,
1317 mir_unwind_terminate,
1318 mir_unwind_terminate_reason,
1319 mir_unwind_unreachable,
1320 mir_variant,
1321 miri,
1322 mmx_reg,
1323 modifiers,
1324 module,
1325 module_path,
1326 more_maybe_bounds,
1327 more_qualified_paths,
1328 more_struct_aliases,
1329 movbe_target_feature,
1330 move_expr,
1331 move_ref_pattern,
1332 move_size_limit,
1333 movrs_target_feature,
1334 msp430,
1335 mul,
1336 mul_assign,
1337 mul_with_overflow,
1338 multiple_supertrait_upcastable,
1339 must_not_suspend,
1340 must_use,
1341 mut_preserve_binding_mode_2024,
1342 mut_ref,
1343 mut_restriction,
1344 mutable,
1345 naked,
1346 naked_asm,
1347 naked_functions,
1348 naked_functions_rustic_abi,
1349 naked_functions_target_feature,
1350 name,
1351 names,
1352 native_link_modifiers,
1353 native_link_modifiers_as_needed,
1354 native_link_modifiers_bundle,
1355 native_link_modifiers_verbatim,
1356 native_link_modifiers_whole_archive,
1357 natvis_file,
1358 ne,
1359 needs_allocator,
1360 needs_drop,
1361 needs_panic_runtime,
1362 neg,
1363 negate_unsigned,
1364 negative_bounds,
1365 negative_impls,
1366 neon,
1367 nested,
1368 never,
1369 never_patterns,
1370 never_type,
1371 never_type_fallback,
1372 new,
1373 new_binary,
1374 new_debug,
1375 new_debug_noop,
1376 new_display,
1377 new_lower_exp,
1378 new_lower_hex,
1379 new_octal,
1380 new_pointer,
1381 new_range,
1382 new_unchecked,
1383 new_upper_exp,
1384 new_upper_hex,
1385 next,
1386 niko,
1387 nll,
1388 no,
1389 no_builtins,
1390 no_core,
1391 no_coverage,
1392 no_crate_inject,
1393 no_debug,
1394 no_default_passes,
1395 no_implicit_prelude,
1396 no_inline,
1397 no_link,
1398 no_main,
1399 no_mangle,
1400 no_sanitize,
1401 no_stack_check,
1402 no_std,
1403 nomem,
1404 non_ascii_idents,
1405 non_exhaustive,
1406 non_exhaustive_omitted_patterns_lint,
1407 non_lifetime_binders,
1408 non_modrs_mods,
1409 nonblocking,
1410 none,
1411 nontemporal_store,
1412 noop_method_borrow,
1413 noop_method_clone,
1414 noop_method_deref,
1415 noprefix,
1416 noreturn,
1417 nostack,
1418 not,
1419 notable_trait,
1420 note,
1421 null,
1422 nvptx64,
1423 nvptx_target_feature,
1424 object_safe_for_dispatch,
1425 of,
1426 off,
1427 offload,
1428 offload_kernel,
1429 offset,
1430 offset_of,
1431 offset_of_enum,
1432 offset_of_nested,
1433 offset_of_slice,
1434 ok_or_else,
1435 old_name,
1436 omit_gdb_pretty_printer_section,
1437 on,
1438 on_const,
1439 on_move,
1440 on_unimplemented,
1441 on_unknown,
1442 on_unmatch_args,
1443 opaque,
1444 opaque_module_name_placeholder: "<opaque>",
1445 ops,
1446 opt_out_copy,
1447 optimize,
1448 optimize_attribute,
1449 optimized,
1450 optin_builtin_traits,
1451 option,
1452 option_env,
1453 options,
1454 or,
1455 or_patterns,
1456 ord_cmp_method,
1457 other,
1458 out,
1459 output,
1460 overflow_checks,
1461 overlapping_marker_traits,
1462 owned_box,
1463 packed,
1464 packed_bundled_libs,
1465 panic,
1466 panic_2015,
1467 panic_2021,
1468 panic_abort,
1469 panic_bounds_check,
1470 panic_cannot_unwind,
1471 panic_const_add_overflow,
1472 panic_const_async_fn_resumed,
1473 panic_const_async_fn_resumed_drop,
1474 panic_const_async_fn_resumed_panic,
1475 panic_const_async_gen_fn_resumed,
1476 panic_const_async_gen_fn_resumed_drop,
1477 panic_const_async_gen_fn_resumed_panic,
1478 panic_const_coroutine_resumed,
1479 panic_const_coroutine_resumed_drop,
1480 panic_const_coroutine_resumed_panic,
1481 panic_const_div_by_zero,
1482 panic_const_div_overflow,
1483 panic_const_gen_fn_none,
1484 panic_const_gen_fn_none_drop,
1485 panic_const_gen_fn_none_panic,
1486 panic_const_mul_overflow,
1487 panic_const_neg_overflow,
1488 panic_const_rem_by_zero,
1489 panic_const_rem_overflow,
1490 panic_const_shl_overflow,
1491 panic_const_shr_overflow,
1492 panic_const_sub_overflow,
1493 panic_display,
1494 panic_fmt,
1495 panic_handler,
1496 panic_impl,
1497 panic_implementation,
1498 panic_in_cleanup,
1499 panic_info,
1500 panic_invalid_enum_construction,
1501 panic_location,
1502 panic_misaligned_pointer_dereference,
1503 panic_nounwind,
1504 panic_null_pointer_dereference,
1505 panic_runtime,
1506 panic_str_2015,
1507 panic_unwind,
1508 panicking,
1509 param_attrs,
1510 parent_label,
1511 partial_cmp,
1512 partial_ord,
1513 passes,
1514 pat,
1515 pat_param,
1516 patchable_function_entry,
1517 path,
1518 pattern_complexity_limit,
1519 pattern_parentheses,
1520 pattern_type,
1521 pattern_type_range_trait,
1522 pattern_types,
1523 phantom_data,
1524 phase,
1525 pic,
1526 pie,
1527 pin,
1528 pin_drop,
1529 pin_ergonomics,
1530 pin_v2,
1531 platform_intrinsics,
1532 plugin,
1533 plugin_registrar,
1534 plugins,
1535 pointee,
1536 pointee_sized,
1537 pointee_trait,
1538 pointer,
1539 poll,
1540 post_cleanup: "post-cleanup",
1541 post_dash_lto: "post-lto",
1542 postfix_match,
1543 powerpc,
1544 powerpc64,
1545 powerpc_target_feature,
1546 powf16,
1547 powf32,
1548 powf64,
1549 powf128,
1550 powif16,
1551 powif32,
1552 powif64,
1553 powif128,
1554 pre_dash_lto: "pre-lto",
1555 precise_capturing,
1556 precise_capturing_in_traits,
1557 precise_pointer_size_matching,
1558 predicates,
1559 pref_align_of,
1560 prefetch_read_data,
1561 prefetch_read_instruction,
1562 prefetch_write_data,
1563 prefetch_write_instruction,
1564 prefix_nops,
1565 preg,
1566 prelude,
1567 prelude_import,
1568 preserves_flags,
1569 prfchw_target_feature,
1570 proc_dash_macro: "proc-macro",
1571 proc_macro,
1572 proc_macro_attribute,
1573 proc_macro_derive,
1574 proc_macro_expr,
1575 proc_macro_gen,
1576 proc_macro_hygiene,
1577 proc_macro_internals,
1578 proc_macro_mod,
1579 proc_macro_non_items,
1580 proc_macro_path_invoc,
1581 profiler_runtime,
1582 ptr,
1583 ptr_cast,
1584 ptr_cast_const,
1585 ptr_cast_mut,
1586 ptr_const_is_null,
1587 ptr_copy,
1588 ptr_copy_nonoverlapping,
1589 ptr_from_ref,
1590 ptr_guaranteed_cmp,
1591 ptr_is_null,
1592 ptr_mask,
1593 ptr_metadata,
1594 ptr_null,
1595 ptr_null_mut,
1596 ptr_offset_from,
1597 ptr_offset_from_unsigned,
1598 ptr_read,
1599 ptr_read_unaligned,
1600 ptr_replace,
1601 ptr_swap,
1602 ptr_swap_nonoverlapping,
1603 ptr_write,
1604 ptr_write_bytes,
1605 ptr_write_unaligned,
1606 ptr_write_volatile,
1607 pub_macro_rules,
1608 pub_restricted,
1609 public,
1610 pure,
1611 pushpop_unsafe,
1612 qreg,
1613 qreg_low4,
1614 qreg_low8,
1615 quad_precision_float,
1616 question_mark,
1617 quote,
1618 range_inclusive_new,
1619 raw_dash_dylib: "raw-dylib",
1620 raw_dylib,
1621 raw_dylib_elf,
1622 raw_eq,
1623 raw_identifiers,
1624 raw_ref_op,
1625 re_rebalance_coherence,
1626 read_via_copy,
1627 readonly,
1628 realloc,
1629 realtime,
1630 reason,
1631 reborrow,
1632 receiver,
1633 receiver_target,
1634 recursion_limit,
1635 reexport_test_harness_main,
1636 ref_pat_eat_one_layer_2024,
1637 ref_pat_eat_one_layer_2024_structural,
1638 ref_pat_everywhere,
1639 ref_unwind_safe_trait,
1640 reference,
1641 reflect,
1642 reg,
1643 reg16,
1644 reg32,
1645 reg64,
1646 reg_abcd,
1647 reg_addr,
1648 reg_byte,
1649 reg_data,
1650 reg_iw,
1651 reg_nonzero,
1652 reg_pair,
1653 reg_ptr,
1654 reg_upper,
1655 register_attr,
1656 register_tool,
1657 relaxed_adts,
1658 relaxed_struct_unsize,
1659 relocation_model,
1660 rem,
1661 rem_assign,
1662 repr,
1663 repr128,
1664 repr_align,
1665 repr_align_enum,
1666 repr_packed,
1667 repr_simd,
1668 repr_transparent,
1669 require,
1670 reserve_x18: "reserve-x18",
1671 residual,
1672 result,
1673 result_ffi_guarantees,
1674 return_address,
1675 return_position_impl_trait_in_trait,
1676 return_type_notation,
1677 riscv32,
1678 riscv64,
1679 riscv_target_feature,
1680 rlib,
1681 ropi,
1682 ropi_rwpi: "ropi-rwpi",
1683 rotate_left,
1684 rotate_right,
1685 round_ties_even_f16,
1686 round_ties_even_f32,
1687 round_ties_even_f64,
1688 round_ties_even_f128,
1689 roundf16,
1690 roundf32,
1691 roundf64,
1692 roundf128,
1693 rtm_target_feature,
1694 runtime,
1695 rust,
1696 rust_2015,
1697 rust_2018,
1698 rust_2018_preview,
1699 rust_2021,
1700 rust_2024,
1701 rust_analyzer,
1702 rust_begin_unwind,
1703 rust_cold_cc,
1704 rust_eh_catch_typeinfo,
1705 rust_eh_personality,
1706 rust_future,
1707 rust_logo,
1708 rust_out,
1709 rust_preserve_none_cc,
1710 rustc,
1711 rustc_abi,
1712 rustc_align,
1714 rustc_align_static,
1715 rustc_allocator,
1716 rustc_allocator_zeroed,
1717 rustc_allocator_zeroed_variant,
1718 rustc_allow_const_fn_unstable,
1719 rustc_allow_incoherent_impl,
1720 rustc_allowed_through_unstable_modules,
1721 rustc_as_ptr,
1722 rustc_attrs,
1723 rustc_autodiff,
1724 rustc_builtin_macro,
1725 rustc_capture_analysis,
1726 rustc_clean,
1727 rustc_coherence_is_core,
1728 rustc_coinductive,
1729 rustc_confusables,
1730 rustc_const_stable,
1731 rustc_const_stable_indirect,
1732 rustc_const_unstable,
1733 rustc_conversion_suggestion,
1734 rustc_deallocator,
1735 rustc_default_body_unstable,
1736 rustc_delayed_bug_from_inside_query,
1737 rustc_deny_explicit_impl,
1738 rustc_deprecated_safe_2024,
1739 rustc_diagnostic_item,
1740 rustc_diagnostic_macros,
1741 rustc_do_not_const_check,
1742 rustc_doc_primitive,
1743 rustc_driver,
1744 rustc_dummy,
1745 rustc_dump_def_parents,
1746 rustc_dump_def_path,
1747 rustc_dump_hidden_type_of_opaques,
1748 rustc_dump_inferred_outlives,
1749 rustc_dump_item_bounds,
1750 rustc_dump_layout,
1751 rustc_dump_object_lifetime_defaults,
1752 rustc_dump_predicates,
1753 rustc_dump_symbol_name,
1754 rustc_dump_user_args,
1755 rustc_dump_variances,
1756 rustc_dump_variances_of_opaques,
1757 rustc_dump_vtable,
1758 rustc_dyn_incompatible_trait,
1759 rustc_effective_visibility,
1760 rustc_eii_foreign_item,
1761 rustc_evaluate_where_clauses,
1762 rustc_expected_cgu_reuse,
1763 rustc_force_inline,
1764 rustc_has_incoherent_inherent_impls,
1765 rustc_if_this_changed,
1766 rustc_inherit_overflow_checks,
1767 rustc_insignificant_dtor,
1768 rustc_intrinsic,
1769 rustc_intrinsic_const_stable_indirect,
1770 rustc_legacy_const_generics,
1771 rustc_lint_opt_deny_field_access,
1772 rustc_lint_opt_ty,
1773 rustc_lint_query_instability,
1774 rustc_lint_untracked_query_information,
1775 rustc_macro_transparency,
1776 rustc_main,
1777 rustc_mir,
1778 rustc_must_implement_one_of,
1779 rustc_must_match_exhaustively,
1780 rustc_never_returns_null_ptr,
1781 rustc_never_type_options,
1782 rustc_no_implicit_autorefs,
1783 rustc_no_implicit_bounds,
1784 rustc_no_mir_inline,
1785 rustc_no_writable,
1786 rustc_non_const_trait_method,
1787 rustc_nonnull_optimization_guaranteed,
1788 rustc_nounwind,
1789 rustc_objc_class,
1790 rustc_objc_selector,
1791 rustc_offload_kernel,
1792 rustc_on_unimplemented,
1793 rustc_paren_sugar,
1794 rustc_partition_codegened,
1795 rustc_partition_reused,
1796 rustc_pass_by_value,
1797 rustc_pass_indirectly_in_non_rustic_abis,
1798 rustc_peek,
1799 rustc_peek_liveness,
1800 rustc_peek_maybe_init,
1801 rustc_peek_maybe_uninit,
1802 rustc_preserve_ub_checks,
1803 rustc_private,
1804 rustc_proc_macro_decls,
1805 rustc_promotable,
1806 rustc_pub_transparent,
1807 rustc_reallocator,
1808 rustc_regions,
1809 rustc_reservation_impl,
1810 rustc_scalable_vector,
1811 rustc_should_not_be_called_on_const_items,
1812 rustc_simd_monomorphize_lane_limit,
1813 rustc_skip_during_method_dispatch,
1814 rustc_specialization_trait,
1815 rustc_std_internal_symbol,
1816 rustc_strict_coherence,
1817 rustc_test_marker,
1818 rustc_then_this_would_need,
1819 rustc_trivial_field_reads,
1820 rustc_unsafe_specialization_marker,
1821 rustdoc,
1822 rustdoc_internals,
1823 rustdoc_missing_doc_code_examples,
1824 rustfmt,
1825 rvalue_static_promotion,
1826 rwpi,
1827 s390x,
1828 s390x_target_feature,
1829 s390x_target_feature_vector,
1830 safety,
1831 sanitize,
1832 sanitizer_cfi_generalize_pointers,
1833 sanitizer_cfi_normalize_integers,
1834 sanitizer_runtime,
1835 saturating_add,
1836 saturating_sub,
1837 sdylib,
1838 search_unbox,
1839 select_unpredictable,
1840 self_in_typedefs,
1841 self_struct_ctor,
1842 semiopaque,
1843 sha2,
1844 sha3,
1845 sha512_sm_x86,
1846 shadow_call_stack,
1847 shallow,
1848 shl,
1849 shl_assign,
1850 shorter_tail_lifetimes,
1851 should_panic,
1852 show,
1853 shr,
1854 shr_assign,
1855 signed,
1856 simd,
1857 simd_add,
1858 simd_and,
1859 simd_arith_offset,
1860 simd_as,
1861 simd_bitmask,
1862 simd_bitreverse,
1863 simd_bswap,
1864 simd_carryless_mul,
1865 simd_cast,
1866 simd_cast_ptr,
1867 simd_ceil,
1868 simd_ctlz,
1869 simd_ctpop,
1870 simd_cttz,
1871 simd_div,
1872 simd_eq,
1873 simd_expose_provenance,
1874 simd_extract,
1875 simd_extract_dyn,
1876 simd_fabs,
1877 simd_fcos,
1878 simd_fexp,
1879 simd_fexp2,
1880 simd_ffi,
1881 simd_flog,
1882 simd_flog2,
1883 simd_flog10,
1884 simd_floor,
1885 simd_fma,
1886 simd_fsin,
1887 simd_fsqrt,
1888 simd_funnel_shl,
1889 simd_funnel_shr,
1890 simd_gather,
1891 simd_ge,
1892 simd_gt,
1893 simd_insert,
1894 simd_insert_dyn,
1895 simd_le,
1896 simd_lt,
1897 simd_masked_load,
1898 simd_masked_store,
1899 simd_maximum_number_nsz,
1900 simd_minimum_number_nsz,
1901 simd_mul,
1902 simd_ne,
1903 simd_neg,
1904 simd_or,
1905 simd_reduce_add_ordered,
1906 simd_reduce_add_unordered,
1907 simd_reduce_all,
1908 simd_reduce_and,
1909 simd_reduce_any,
1910 simd_reduce_max,
1911 simd_reduce_min,
1912 simd_reduce_mul_ordered,
1913 simd_reduce_mul_unordered,
1914 simd_reduce_or,
1915 simd_reduce_xor,
1916 simd_relaxed_fma,
1917 simd_rem,
1918 simd_round,
1919 simd_round_ties_even,
1920 simd_saturating_add,
1921 simd_saturating_sub,
1922 simd_scatter,
1923 simd_select,
1924 simd_select_bitmask,
1925 simd_shl,
1926 simd_shr,
1927 simd_shuffle,
1928 simd_shuffle_const_generic,
1929 simd_splat,
1930 simd_sub,
1931 simd_trunc,
1932 simd_with_exposed_provenance,
1933 simd_xor,
1934 since,
1935 sinf16,
1936 sinf32,
1937 sinf64,
1938 sinf128,
1939 size,
1940 size_of,
1941 size_of_type_id,
1942 size_of_val,
1943 sized,
1944 sized_hierarchy,
1945 slice,
1946 slice_from_raw_parts,
1947 slice_from_raw_parts_mut,
1948 slice_get_unchecked,
1949 slice_len_fn,
1950 slice_patterns,
1951 slicing_syntax,
1952 soft_float: "soft-float",
1953 sparc,
1954 sparc64,
1955 sparc_target_feature,
1956 spe_acc,
1957 specialization,
1958 speed,
1959 spirv,
1960 spotlight,
1961 sqrtf16,
1962 sqrtf32,
1963 sqrtf64,
1964 sqrtf128,
1965 sreg,
1966 sreg_low16,
1967 sse,
1968 sse2,
1969 sse4a_target_feature,
1970 stable,
1971 staged_api,
1972 start,
1973 state,
1974 static_align,
1975 static_in_const,
1976 static_nobundle,
1977 static_recursion,
1978 staticlib,
1979 std,
1980 std_lib_injection,
1981 std_panic,
1982 std_panic_2015_macro,
1983 std_panic_macro,
1984 stmt,
1985 stmt_expr_attributes,
1986 stop_after_dataflow,
1987 store,
1988 str,
1989 str_from_utf8,
1990 str_from_utf8_mut,
1991 str_from_utf8_unchecked,
1992 str_from_utf8_unchecked_mut,
1993 str_inherent_from_utf8,
1994 str_inherent_from_utf8_mut,
1995 str_inherent_from_utf8_unchecked,
1996 str_inherent_from_utf8_unchecked_mut,
1997 strict_provenance_lints,
1998 string_deref_patterns,
1999 stringify,
2000 struct_field_attributes,
2001 struct_inherit,
2002 struct_variant,
2003 structural_match,
2004 structural_peq,
2005 sub,
2006 sub_assign,
2007 sub_with_overflow,
2008 suggestion,
2009 super_let,
2010 supertrait_item_shadowing,
2011 sve_cast,
2012 sve_tuple_create2,
2013 sve_tuple_create3,
2014 sve_tuple_create4,
2015 sve_tuple_get,
2016 sve_tuple_set,
2017 sym,
2018 sync,
2019 synthetic,
2020 t32,
2021 target,
2022 target_abi,
2023 target_arch,
2024 target_endian,
2025 target_env,
2026 target_family,
2027 target_feature,
2028 target_feature_11,
2029 target_feature_inline_always,
2030 target_has_atomic,
2031 target_has_atomic_load_store,
2032 target_has_atomic_primitive_alignment,
2033 target_has_reliable_f16,
2034 target_has_reliable_f16_math,
2035 target_has_reliable_f128,
2036 target_has_reliable_f128_math,
2037 target_object_format,
2038 target_os,
2039 target_pointer_width,
2040 target_thread_local,
2041 target_vendor,
2042 tbm_target_feature,
2043 termination,
2044 termination_trait,
2045 termination_trait_test,
2046 test,
2047 test_2018_feature,
2048 test_accepted_feature,
2049 test_case,
2050 test_incomplete_feature,
2051 test_removed_feature,
2052 test_runner,
2053 test_unstable_lint,
2054 thread,
2055 thread_local,
2056 three_way_compare,
2057 thumb2,
2058 thumb_mode: "thumb-mode",
2059 tmm_reg,
2060 to_owned_method,
2061 to_string,
2062 to_vec,
2063 tool_attributes,
2064 tool_lints,
2065 trace_macros,
2066 track_caller,
2067 trait_alias,
2068 trait_ty,
2069 trait_upcasting,
2070 transmute,
2071 transmute_generic_consts,
2072 transmute_opts,
2073 transmute_trait,
2074 transmute_unchecked,
2075 transparent,
2076 transparent_enums,
2077 transparent_unions,
2078 trivial_bounds,
2079 trivial_clone,
2080 truncf16,
2081 truncf32,
2082 truncf64,
2083 truncf128,
2084 try_blocks,
2085 try_blocks_heterogeneous,
2086 try_capture,
2087 try_from,
2088 try_into,
2089 try_trait_v2,
2090 try_trait_v2_residual,
2091 try_update,
2092 tt,
2093 tuple,
2094 tuple_indexing,
2095 tuple_trait,
2096 two_phase,
2097 ty,
2098 type_alias_enum_variants,
2099 type_alias_impl_trait,
2100 type_ascribe,
2101 type_ascription,
2102 type_changing_struct_update,
2103 type_id,
2104 type_id_eq,
2105 type_id_field_representing_type,
2106 type_id_fields,
2107 type_id_variants,
2108 type_id_vtable,
2109 type_info,
2110 type_ir,
2111 type_ir_infer_ctxt_like,
2112 type_ir_inherent,
2113 type_ir_interner,
2114 type_length_limit,
2115 type_macros,
2116 type_name,
2117 type_of,
2118 type_privacy_lints,
2119 typed_swap_nonoverlapping,
2120 u8,
2121 u8_legacy_const_max,
2122 u8_legacy_const_min,
2123 u8_legacy_fn_max_value,
2124 u8_legacy_fn_min_value,
2125 u8_legacy_mod,
2126 u16,
2127 u16_legacy_const_max,
2128 u16_legacy_const_min,
2129 u16_legacy_fn_max_value,
2130 u16_legacy_fn_min_value,
2131 u16_legacy_mod,
2132 u32,
2133 u32_legacy_const_max,
2134 u32_legacy_const_min,
2135 u32_legacy_fn_max_value,
2136 u32_legacy_fn_min_value,
2137 u32_legacy_mod,
2138 u64,
2139 u64_legacy_const_max,
2140 u64_legacy_const_min,
2141 u64_legacy_fn_max_value,
2142 u64_legacy_fn_min_value,
2143 u64_legacy_mod,
2144 u128,
2145 u128_legacy_const_max,
2146 u128_legacy_const_min,
2147 u128_legacy_fn_max_value,
2148 u128_legacy_fn_min_value,
2149 u128_legacy_mod,
2150 ub_checks,
2151 unaligned_volatile_load,
2152 unaligned_volatile_store,
2153 unboxed_closures,
2154 unchecked_add,
2155 unchecked_div,
2156 unchecked_funnel_shl,
2157 unchecked_funnel_shr,
2158 unchecked_mul,
2159 unchecked_rem,
2160 unchecked_shl,
2161 unchecked_shr,
2162 unchecked_sub,
2163 undecorated,
2164 underscore_const_names,
2165 underscore_imports,
2166 underscore_lifetimes,
2167 uniform_paths,
2168 unimplemented,
2169 unit,
2170 universal_impl_trait,
2171 unix,
2172 unlikely,
2173 unmarked_api,
2174 unnamed_fields,
2175 unpin,
2176 unqualified_local_imports,
2177 unreachable,
2178 unreachable_2015,
2179 unreachable_2015_macro,
2180 unreachable_2021,
2181 unreachable_code,
2182 unreachable_display,
2183 unreachable_macro,
2184 unrestricted_attribute_tokens,
2185 unsafe_attributes,
2186 unsafe_binders,
2187 unsafe_block_in_unsafe_fn,
2188 unsafe_cell,
2189 unsafe_cell_raw_get,
2190 unsafe_eii,
2191 unsafe_extern_blocks,
2192 unsafe_fields,
2193 unsafe_no_drop_flag,
2194 unsafe_pinned,
2195 unsafe_unpin,
2196 unsafety,
2197 unsize,
2198 unsized_const_param_ty,
2199 unsized_const_params,
2200 unsized_fn_params,
2201 unsized_locals,
2202 unsized_tuple_coercion,
2203 unstable,
2204 unstable_feature_bound,
2205 unstable_location_reason_default: "this crate is being loaded from the sysroot, an \
2206 unstable location; did you mean to load this crate \
2207 from crates.io via `Cargo.toml` instead?",
2208 unstable_removed,
2209 untagged_unions,
2210 unused_imports,
2211 unwind,
2212 unwind_attributes,
2213 unwind_safe_trait,
2214 unwrap,
2215 unwrap_binder,
2216 unwrap_or,
2217 update,
2218 use_cloned,
2219 use_extern_macros,
2220 use_nested_groups,
2221 used,
2222 used_with_arg,
2223 using,
2224 usize,
2225 usize_legacy_const_max,
2226 usize_legacy_const_min,
2227 usize_legacy_fn_max_value,
2228 usize_legacy_fn_min_value,
2229 usize_legacy_mod,
2230 v1,
2231 v8plus,
2232 va_arg,
2233 va_arg_safe,
2234 va_copy,
2235 va_end,
2236 va_list,
2237 va_start,
2238 val,
2239 validity,
2240 value,
2241 values,
2242 var,
2243 variadic,
2244 variant_count,
2245 variants,
2246 vec,
2247 vector,
2248 verbatim,
2249 version,
2250 vfp2,
2251 view_types,
2252 vis,
2253 visible_private_types,
2254 volatile,
2255 volatile_copy_memory,
2256 volatile_copy_nonoverlapping_memory,
2257 volatile_load,
2258 volatile_set_memory,
2259 volatile_store,
2260 vreg,
2261 vreg_low16,
2262 vreg_pair,
2263 vsreg,
2264 vsx,
2265 vtable_align,
2266 vtable_size,
2267 warn,
2268 wasip2,
2269 wasm,
2270 wasm32,
2271 wasm64,
2272 wasm_abi,
2273 wasm_import_module,
2274 wasm_target_feature,
2275 weak,
2276 weak_odr,
2277 where_clause_attrs,
2278 while_let,
2279 whole_dash_archive: "whole-archive",
2280 width,
2281 windows,
2282 windows_subsystem,
2283 with_negative_coherence,
2284 wrap_binder,
2285 wrapping_add,
2286 wrapping_div,
2287 wrapping_mul,
2288 wrapping_rem,
2289 wrapping_rem_euclid,
2290 wrapping_sub,
2291 wreg,
2292 write_box_via_move,
2293 write_bytes,
2294 write_fmt,
2295 write_macro,
2296 write_str,
2297 write_via_move,
2298 writeln_macro,
2299 x86,
2300 x86_64,
2301 x86_amx_intrinsics,
2302 x87_reg,
2303 x87_target_feature,
2304 xcoff,
2305 xer,
2306 xmm_reg,
2307 xop_target_feature,
2308 xtensa,
2309 yeet_desugar_details,
2310 yeet_expr,
2311 yes,
2312 yield_expr,
2313 ymm_reg,
2314 yreg,
2315 zca,
2316 zfh,
2317 zfhmin,
2318 zmm_reg,
2319 ztso,
2320 }
2322}
2323
2324pub const STDLIB_STABLE_CRATES: &[Symbol] = &[sym::std, sym::core, sym::alloc, sym::proc_macro];
2327
2328#[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)]
2329pub struct Ident {
2330 pub name: Symbol,
2335 pub span: Span,
2336}
2337
2338impl Ident {
2339 #[inline]
2340 pub fn new(name: Symbol, span: Span) -> Ident {
2342 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);
2343 Ident { name, span }
2344 }
2345
2346 #[inline]
2348 pub fn with_dummy_span(name: Symbol) -> Ident {
2349 Ident::new(name, DUMMY_SP)
2350 }
2351
2352 #[inline]
2357 pub fn dummy() -> Ident {
2358 Ident::with_dummy_span(sym::dummy)
2359 }
2360
2361 pub fn from_str(string: &str) -> Ident {
2363 Ident::with_dummy_span(Symbol::intern(string))
2364 }
2365
2366 pub fn from_str_and_span(string: &str, span: Span) -> Ident {
2368 Ident::new(Symbol::intern(string), span)
2369 }
2370
2371 pub fn with_span_pos(self, span: Span) -> Ident {
2373 Ident::new(self.name, span.with_ctxt(self.span.ctxt()))
2374 }
2375
2376 pub fn without_first_quote(self) -> Ident {
2379 self.as_str()
2380 .strip_prefix('\'')
2381 .map_or(self, |name| Ident::new(Symbol::intern(name), self.span))
2382 }
2383
2384 pub fn normalize_to_macros_2_0(self) -> Ident {
2390 Ident::new(self.name, self.span.normalize_to_macros_2_0())
2391 }
2392
2393 #[inline]
2399 pub fn normalize_to_macro_rules(self) -> Ident {
2400 Ident::new(self.name, self.span.normalize_to_macro_rules())
2401 }
2402
2403 pub fn as_str(&self) -> &str {
2409 self.name.as_str()
2410 }
2411}
2412
2413impl PartialEq for Ident {
2414 #[inline]
2415 fn eq(&self, rhs: &Self) -> bool {
2416 self.name == rhs.name && self.span.eq_ctxt(rhs.span)
2417 }
2418}
2419
2420impl Hash for Ident {
2421 fn hash<H: Hasher>(&self, state: &mut H) {
2422 self.name.hash(state);
2423 self.span.ctxt().hash(state);
2424 }
2425}
2426
2427impl fmt::Debug for Ident {
2428 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2429 fmt::Display::fmt(self, f)?;
2430 fmt::Debug::fmt(&self.span.ctxt(), f)
2431 }
2432}
2433
2434impl fmt::Display for Ident {
2438 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2439 fmt::Display::fmt(&IdentPrinter::new(self.name, self.guess_print_mode(), None), f)
2440 }
2441}
2442
2443pub enum IdentPrintMode {
2444 Normal,
2445 RawIdent,
2446 RawLifetime,
2447}
2448
2449pub struct IdentPrinter {
2463 symbol: Symbol,
2464 mode: IdentPrintMode,
2465 convert_dollar_crate: Option<Span>,
2468}
2469
2470impl IdentPrinter {
2471 pub fn new(
2473 symbol: Symbol,
2474 mode: IdentPrintMode,
2475 convert_dollar_crate: Option<Span>,
2476 ) -> IdentPrinter {
2477 IdentPrinter { symbol, mode, convert_dollar_crate }
2478 }
2479
2480 pub fn for_ast_ident(ident: Ident, mode: IdentPrintMode) -> IdentPrinter {
2484 IdentPrinter::new(ident.name, mode, Some(ident.span))
2485 }
2486}
2487
2488impl fmt::Display for IdentPrinter {
2489 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2490 let s = match self.mode {
2491 IdentPrintMode::Normal
2492 if self.symbol == kw::DollarCrate
2493 && let Some(span) = self.convert_dollar_crate =>
2494 {
2495 let converted = span.ctxt().dollar_crate_name();
2496 if !converted.is_path_segment_keyword() {
2497 f.write_str("::")?;
2498 }
2499 converted
2500 }
2501 IdentPrintMode::Normal => self.symbol,
2502 IdentPrintMode::RawIdent => {
2503 f.write_str("r#")?;
2504 self.symbol
2505 }
2506 IdentPrintMode::RawLifetime => {
2507 f.write_str("'r#")?;
2508 let s = self
2509 .symbol
2510 .as_str()
2511 .strip_prefix("'")
2512 .expect("only lifetime idents should be passed with RawLifetime mode");
2513 Symbol::intern(s)
2514 }
2515 };
2516 s.fmt(f)
2517 }
2518}
2519
2520#[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)]
2526pub struct MacroRulesNormalizedIdent(Ident);
2527
2528impl MacroRulesNormalizedIdent {
2529 #[inline]
2530 pub fn new(ident: Ident) -> Self {
2531 MacroRulesNormalizedIdent(ident.normalize_to_macro_rules())
2532 }
2533
2534 pub fn symbol(&self) -> Symbol {
2535 self.0.name
2536 }
2537
2538 pub fn ident(&self) -> Ident {
2539 self.0
2540 }
2541}
2542
2543impl fmt::Debug for MacroRulesNormalizedIdent {
2544 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2545 fmt::Debug::fmt(&self.0, f)
2546 }
2547}
2548
2549impl fmt::Display for MacroRulesNormalizedIdent {
2550 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2551 fmt::Display::fmt(&self.0, f)
2552 }
2553}
2554
2555#[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)]
2565pub struct Symbol(SymbolIndex);
2566
2567impl ::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! {
2569 #[orderable]
2570 struct SymbolIndex {}
2571}
2572
2573impl Symbol {
2574 pub const fn new(n: u32) -> Self {
2577 Symbol(SymbolIndex::from_u32(n))
2578 }
2579
2580 #[rustc_diagnostic_item = "SymbolIntern"]
2582 pub fn intern(str: &str) -> Self {
2583 with_session_globals(|session_globals| session_globals.symbol_interner.intern_str(str))
2584 }
2585
2586 pub fn as_str(&self) -> &str {
2595 with_session_globals(|session_globals| unsafe {
2596 std::mem::transmute::<&str, &str>(session_globals.symbol_interner.get_str(*self))
2597 })
2598 }
2599
2600 pub fn as_u32(self) -> u32 {
2601 self.0.as_u32()
2602 }
2603
2604 pub fn is_empty(self) -> bool {
2605 self == sym::empty
2606 }
2607
2608 pub fn to_ident_string(self) -> String {
2613 if self == sym::empty { String::new() } else { Ident::with_dummy_span(self).to_string() }
2615 }
2616
2617 pub fn find_similar(
2624 self,
2625 candidates: &[Symbol],
2626 ) -> Option<(Symbol, bool)> {
2627 let lowercase = self.as_str().to_lowercase();
2628 let lowercase_sym = Symbol::intern(&lowercase);
2629 if candidates.contains(&lowercase_sym) {
2630 Some((lowercase_sym, true))
2631 } else if let Some(similar_sym) = find_best_match_for_name(candidates, self, None) {
2632 Some((similar_sym, false))
2633 } else {
2634 None
2635 }
2636 }
2637}
2638
2639impl fmt::Debug for Symbol {
2640 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2641 fmt::Debug::fmt(self.as_str(), f)
2642 }
2643}
2644
2645impl fmt::Display for Symbol {
2646 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2647 fmt::Display::fmt(self.as_str(), f)
2648 }
2649}
2650
2651impl StableHash for Symbol {
2652 #[inline]
2653 fn stable_hash<Hcx: StableHashCtxt>(&self, hcx: &mut Hcx, hasher: &mut StableHasher) {
2654 self.as_str().stable_hash(hcx, hasher);
2655 }
2656}
2657
2658impl StableCompare for Symbol {
2659 const CAN_USE_UNSTABLE_SORT: bool = true;
2660
2661 fn stable_cmp(&self, other: &Self) -> std::cmp::Ordering {
2662 self.as_str().cmp(other.as_str())
2663 }
2664}
2665
2666#[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)]
2669pub struct ByteSymbol(SymbolIndex);
2670
2671impl ByteSymbol {
2672 pub const fn new(n: u32) -> Self {
2675 ByteSymbol(SymbolIndex::from_u32(n))
2676 }
2677
2678 pub fn intern(byte_str: &[u8]) -> Self {
2680 with_session_globals(|session_globals| {
2681 session_globals.symbol_interner.intern_byte_str(byte_str)
2682 })
2683 }
2684
2685 pub fn as_byte_str(&self) -> &[u8] {
2687 with_session_globals(|session_globals| unsafe {
2688 std::mem::transmute::<&[u8], &[u8]>(session_globals.symbol_interner.get_byte_str(*self))
2689 })
2690 }
2691
2692 pub fn as_u32(self) -> u32 {
2693 self.0.as_u32()
2694 }
2695}
2696
2697impl fmt::Debug for ByteSymbol {
2698 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2699 fmt::Debug::fmt(self.as_byte_str(), f)
2700 }
2701}
2702
2703impl StableHash for ByteSymbol {
2704 #[inline]
2705 fn stable_hash<Hcx: StableHashCtxt>(&self, hcx: &mut Hcx, hasher: &mut StableHasher) {
2706 self.as_byte_str().stable_hash(hcx, hasher);
2707 }
2708}
2709
2710pub(crate) struct Interner(Lock<InternerInner>);
2715
2716struct InternerInner {
2722 arena: DroplessArena,
2723 byte_strs: FxIndexSet<&'static [u8]>,
2724}
2725
2726impl Interner {
2727 fn prefill(init: &[&'static str], extra: &[&'static str]) -> Self {
2731 let byte_strs = FxIndexSet::from_iter(
2732 init.iter().copied().chain(extra.iter().copied()).map(|str| str.as_bytes()),
2733 );
2734
2735 #[expect(rustc::potential_query_instability)]
2737 if byte_strs.len() != init.len() + extra.len() {
2738 {
::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!(
2739 "duplicate symbols in the rustc symbol list and the extra symbols added by the driver: {:?}",
2740 FxHashSet::intersection(
2741 &init.iter().copied().collect(),
2742 &extra.iter().copied().collect(),
2743 )
2744 .collect::<Vec<_>>()
2745 )
2746 }
2747
2748 Interner(Lock::new(InternerInner { arena: Default::default(), byte_strs }))
2749 }
2750
2751 fn intern_str(&self, str: &str) -> Symbol {
2752 Symbol::new(self.intern_inner(str.as_bytes()))
2753 }
2754
2755 fn intern_byte_str(&self, byte_str: &[u8]) -> ByteSymbol {
2756 ByteSymbol::new(self.intern_inner(byte_str))
2757 }
2758
2759 #[inline]
2760 fn intern_inner(&self, byte_str: &[u8]) -> u32 {
2761 let mut inner = self.0.lock();
2762 if let Some(idx) = inner.byte_strs.get_index_of(byte_str) {
2763 return idx as u32;
2764 }
2765
2766 let byte_str: &[u8] = inner.arena.alloc_slice(byte_str);
2767
2768 let byte_str: &'static [u8] = unsafe { &*(byte_str as *const [u8]) };
2771
2772 let (idx, is_new) = inner.byte_strs.insert_full(byte_str);
2776 if true {
if !is_new { ::core::panicking::panic("assertion failed: is_new") };
};debug_assert!(is_new); idx as u32
2779 }
2780
2781 fn get_str(&self, symbol: Symbol) -> &str {
2785 let byte_str = self.get_inner(symbol.0.as_usize());
2786 unsafe { str::from_utf8_unchecked(byte_str) }
2788 }
2789
2790 fn get_byte_str(&self, symbol: ByteSymbol) -> &[u8] {
2794 self.get_inner(symbol.0.as_usize())
2795 }
2796
2797 fn get_inner(&self, index: usize) -> &[u8] {
2798 self.0.lock().byte_strs.get_index(index).unwrap()
2799 }
2800}
2801
2802pub mod kw {
2808 pub use super::kw_generated::*;
2809}
2810
2811pub mod sym {
2817 use super::Symbol;
2819 pub use super::kw::MacroRules as macro_rules;
2820 #[doc(inline)]
2821 pub use super::sym_generated::*;
2822
2823 pub const C: Symbol = ascii_letter_digit('C').unwrap();
2825
2826 #[expect(non_upper_case_globals)]
2828 pub const f: Symbol = ascii_letter_digit('f').unwrap();
2829 #[expect(non_upper_case_globals)]
2830 pub const d: Symbol = ascii_letter_digit('d').unwrap();
2831
2832 pub fn integer<N: TryInto<usize> + Copy + itoa::Integer>(n: N) -> Symbol {
2837 if let Result::Ok(idx) = n.try_into() {
2838 if idx < 10 {
2839 return Symbol::new(super::SYMBOL_DIGITS_BASE + idx as u32);
2840 }
2841 }
2842 let mut buffer = itoa::Buffer::new();
2843 let printed = buffer.format(n);
2844 Symbol::intern(printed)
2845 }
2846
2847 pub const fn ascii_letter_digit(c: char) -> Option<Symbol> {
2848 let i = c as u32;
2849 Option::Some(Symbol::new(match c {
2850 '0'..='9' => super::SYMBOL_DIGITS_BASE + (i - '0' as u32),
2851 'A'..='Z' => super::SYMBOL_UPPERCASE_LETTERS_BASE + (i - 'A' as u32),
2852 'a'..='z' => super::SYMBOL_LOWERCASE_LETTERS_BASE + (i - 'a' as u32),
2853 _ => return Option::None,
2854 }))
2855 }
2856
2857 pub fn character(c: char) -> Symbol {
2858 ascii_letter_digit(c).unwrap_or_else(|| {
2859 let mut buf: [u8; char::MAX_LEN_UTF8] = Default::default();
2860 Symbol::intern(c.encode_utf8(&mut buf))
2861 })
2862 }
2863}
2864
2865impl Symbol {
2866 fn is_special(self) -> bool {
2867 self <= kw::Underscore
2868 }
2869
2870 fn is_used_keyword_always(self) -> bool {
2871 self >= kw::As && self <= kw::While
2872 }
2873
2874 fn is_unused_keyword_always(self) -> bool {
2875 self >= kw::Abstract && self <= kw::Yield
2876 }
2877
2878 fn is_used_keyword_conditional(self, edition: impl FnOnce() -> Edition) -> bool {
2879 (self >= kw::Async && self <= kw::Dyn) && edition() >= Edition::Edition2018
2880 }
2881
2882 fn is_unused_keyword_conditional(self, edition: impl Copy + FnOnce() -> Edition) -> bool {
2883 self == kw::Gen && edition().at_least_rust_2024()
2884 || self == kw::Try && edition().at_least_rust_2018()
2885 }
2886
2887 pub fn is_reserved(self, edition: impl Copy + FnOnce() -> Edition) -> bool {
2888 self.is_special()
2889 || self.is_used_keyword_always()
2890 || self.is_unused_keyword_always()
2891 || self.is_used_keyword_conditional(edition)
2892 || self.is_unused_keyword_conditional(edition)
2893 }
2894
2895 pub fn is_weak(self) -> bool {
2896 self >= kw::Auto && self <= kw::Yeet
2897 }
2898
2899 pub fn is_path_segment_keyword(self) -> bool {
2901 self == kw::Super
2902 || self == kw::SelfLower
2903 || self == kw::SelfUpper
2904 || self == kw::Crate
2905 || self == kw::PathRoot
2906 || self == kw::DollarCrate
2907 }
2908
2909 pub fn is_bool_lit(self) -> bool {
2911 self == kw::True || self == kw::False
2912 }
2913
2914 pub fn can_be_raw(self) -> bool {
2916 self != sym::empty && self != kw::Underscore && !self.is_path_segment_keyword()
2917 }
2918
2919 pub fn is_predefined(index: u32) -> bool {
2923 index < PREDEFINED_SYMBOLS_COUNT
2924 }
2925}
2926
2927impl Ident {
2928 pub fn is_special(self) -> bool {
2931 self.name.is_special()
2932 }
2933
2934 pub fn is_used_keyword(self) -> bool {
2936 self.name.is_used_keyword_always()
2938 || self.name.is_used_keyword_conditional(|| self.span.edition())
2939 }
2940
2941 pub fn is_unused_keyword(self) -> bool {
2943 self.name.is_unused_keyword_always()
2945 || self.name.is_unused_keyword_conditional(|| self.span.edition())
2946 }
2947
2948 pub fn is_reserved(self) -> bool {
2950 self.name.is_reserved(|| self.span.edition())
2952 }
2953
2954 pub fn is_path_segment_keyword(self) -> bool {
2956 self.name.is_path_segment_keyword()
2957 }
2958
2959 pub fn is_raw_guess(self) -> bool {
2962 self.name.can_be_raw() && self.is_reserved()
2963 }
2964
2965 pub fn is_reserved_lifetime(self) -> bool {
2968 self.is_reserved() && ![kw::Underscore, kw::Static].contains(&self.name)
2969 }
2970
2971 pub fn is_raw_lifetime_guess(self) -> bool {
2972 if self.name.as_str() == "'" {
2975 return false;
2976 }
2977 let ident_without_apostrophe = self.without_first_quote();
2978 ident_without_apostrophe.name != self.name
2979 && ident_without_apostrophe.name.can_be_raw()
2980 && ident_without_apostrophe.is_reserved_lifetime()
2981 }
2982
2983 pub fn guess_print_mode(self) -> IdentPrintMode {
2984 if self.is_raw_lifetime_guess() {
2985 IdentPrintMode::RawLifetime
2986 } else if self.is_raw_guess() {
2987 IdentPrintMode::RawIdent
2988 } else {
2989 IdentPrintMode::Normal
2990 }
2991 }
2992
2993 pub fn is_numeric(self) -> bool {
2996 self.as_str().bytes().all(|b| b.is_ascii_digit())
2997 }
2998}
2999
3000pub fn used_keywords(edition: impl Copy + FnOnce() -> Edition) -> Vec<Symbol> {
3005 (kw::DollarCrate.as_u32()..kw::Yeet.as_u32())
3006 .filter_map(|kw| {
3007 let kw = Symbol::new(kw);
3008 if kw.is_used_keyword_always() || kw.is_used_keyword_conditional(edition) {
3009 Some(kw)
3010 } else {
3011 None
3012 }
3013 })
3014 .collect()
3015}