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