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