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