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