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