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