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