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