Skip to main content

rustc_span/
symbol.rs

1//! An "interner" is a data structure that associates values with usize tags and
2//! allows bidirectional lookup; i.e., given a value, one can easily find the
3//! type, and vice versa.
4
5use std::hash::{BuildHasher, Hash, Hasher};
6use std::{fmt, str};
7
8use rustc_arena::DroplessArena;
9use rustc_data_structures::fx::FxBuildHasher;
10use rustc_data_structures::hash_table::{Entry, HashTable};
11use rustc_data_structures::stable_hash::{StableCompare, StableHash, StableHashCtxt, StableHasher};
12use rustc_data_structures::sync::Lock;
13use rustc_macros::{Decodable, Encodable, StableHash, symbols};
14use rustc_serialize::ContextOrd;
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
22// The proc macro code for this is in `compiler/rustc_macros/src/symbols.rs`.
23const SYMBOL_DIGITS_BASE: u32 = 2360u32;
const SYMBOL_UPPERCASE_LETTERS_BASE: u32 = 2370u32;
const SYMBOL_LOWERCASE_LETTERS_BASE: u32 = 2396u32;
#[doc = r" The number of predefined symbols; this is the first index for"]
#[doc = r" extra pre-interned symbols in an Interner created via"]
#[doc = r" [`Interner::with_extra_symbols`]."]
pub const PREDEFINED_SYMBOLS_COUNT: u32 = 2423u32;
#[doc(hidden)]
#[allow(non_upper_case_globals)]
mod kw_generated {
    use super::Symbol;
    pub const DollarCrate: Symbol = Symbol::new(0u32);
    pub const PathRoot: Symbol = Symbol::new(1u32);
    pub const Underscore: Symbol = Symbol::new(2u32);
    pub const As: Symbol = Symbol::new(3u32);
    pub const Break: Symbol = Symbol::new(4u32);
    pub const Const: Symbol = Symbol::new(5u32);
    pub const Continue: Symbol = Symbol::new(6u32);
    pub const Crate: Symbol = Symbol::new(7u32);
    pub const Else: Symbol = Symbol::new(8u32);
    pub const Enum: Symbol = Symbol::new(9u32);
    pub const Extern: Symbol = Symbol::new(10u32);
    pub const False: Symbol = Symbol::new(11u32);
    pub const Fn: Symbol = Symbol::new(12u32);
    pub const For: Symbol = Symbol::new(13u32);
    pub const If: Symbol = Symbol::new(14u32);
    pub const Impl: Symbol = Symbol::new(15u32);
    pub const In: Symbol = Symbol::new(16u32);
    pub const Let: Symbol = Symbol::new(17u32);
    pub const Loop: Symbol = Symbol::new(18u32);
    pub const Match: Symbol = Symbol::new(19u32);
    pub const Mod: Symbol = Symbol::new(20u32);
    pub const Move: Symbol = Symbol::new(21u32);
    pub const Mut: Symbol = Symbol::new(22u32);
    pub const Pub: Symbol = Symbol::new(23u32);
    pub const Ref: Symbol = Symbol::new(24u32);
    pub const Return: Symbol = Symbol::new(25u32);
    pub const SelfLower: Symbol = Symbol::new(26u32);
    pub const SelfUpper: Symbol = Symbol::new(27u32);
    pub const Static: Symbol = Symbol::new(28u32);
    pub const Struct: Symbol = Symbol::new(29u32);
    pub const Super: Symbol = Symbol::new(30u32);
    pub const Trait: Symbol = Symbol::new(31u32);
    pub const True: Symbol = Symbol::new(32u32);
    pub const Type: Symbol = Symbol::new(33u32);
    pub const Unsafe: Symbol = Symbol::new(34u32);
    pub const Use: Symbol = Symbol::new(35u32);
    pub const Where: Symbol = Symbol::new(36u32);
    pub const While: Symbol = Symbol::new(37u32);
    pub const Abstract: Symbol = Symbol::new(38u32);
    pub const Become: Symbol = Symbol::new(39u32);
    pub const Box: Symbol = Symbol::new(40u32);
    pub const Do: Symbol = Symbol::new(41u32);
    pub const Final: Symbol = Symbol::new(42u32);
    pub const Macro: Symbol = Symbol::new(43u32);
    pub const Override: Symbol = Symbol::new(44u32);
    pub const Priv: Symbol = Symbol::new(45u32);
    pub const Typeof: Symbol = Symbol::new(46u32);
    pub const Unsized: Symbol = Symbol::new(47u32);
    pub const Virtual: Symbol = Symbol::new(48u32);
    pub const Yield: Symbol = Symbol::new(49u32);
    pub const Async: Symbol = Symbol::new(50u32);
    pub const Await: Symbol = Symbol::new(51u32);
    pub const Dyn: Symbol = Symbol::new(52u32);
    pub const Gen: Symbol = Symbol::new(53u32);
    pub const Try: Symbol = Symbol::new(54u32);
    pub const StaticLifetime: Symbol = Symbol::new(55u32);
    pub const UnderscoreLifetime: Symbol = Symbol::new(56u32);
    pub const Auto: Symbol = Symbol::new(57u32);
    pub const Catch: Symbol = Symbol::new(58u32);
    pub const ContractEnsures: Symbol = Symbol::new(59u32);
    pub const ContractRequires: Symbol = Symbol::new(60u32);
    pub const Default: Symbol = Symbol::new(61u32);
    pub const Deref: Symbol = Symbol::new(62u32);
    pub const FieldOf: Symbol = Symbol::new(63u32);
    pub const MacroRules: Symbol = Symbol::new(64u32);
    pub const OffsetOf: Symbol = Symbol::new(65u32);
    pub const Pin: Symbol = Symbol::new(66u32);
    pub const Raw: Symbol = Symbol::new(67u32);
    pub const Reuse: Symbol = Symbol::new(68u32);
    pub const Safe: Symbol = Symbol::new(69u32);
    pub const TypeAscribe: Symbol = Symbol::new(70u32);
    pub const Union: Symbol = Symbol::new(71u32);
    pub const UnwrapBinder: Symbol = Symbol::new(72u32);
    pub const WrapBinder: Symbol = Symbol::new(73u32);
    pub const Yeet: Symbol = Symbol::new(74u32);
}
#[allow(non_upper_case_globals)]
#[doc(hidden)]
pub mod sym_generated {
    use super::Symbol;
    pub const Abi: Symbol = Symbol::new(75u32);
    pub const AcqRel: Symbol = Symbol::new(76u32);
    pub const Acquire: Symbol = Symbol::new(77u32);
    pub const Active: Symbol = Symbol::new(78u32);
    pub const ActiveOnly: Symbol = Symbol::new(79u32);
    pub const Alignment: Symbol = Symbol::new(80u32);
    pub const Arc: Symbol = Symbol::new(81u32);
    pub const ArcWeak: Symbol = Symbol::new(82u32);
    pub const Array: Symbol = Symbol::new(83u32);
    pub const ArrayToPointer: Symbol = Symbol::new(84u32);
    pub const AsMut: Symbol = Symbol::new(85u32);
    pub const AsRef: Symbol = Symbol::new(86u32);
    pub const AssertParamIsClone: Symbol = Symbol::new(87u32);
    pub const AssertParamIsCopy: Symbol = Symbol::new(88u32);
    pub const AssertParamIsEq: Symbol = Symbol::new(89u32);
    pub const AsyncGenFinished: Symbol = Symbol::new(90u32);
    pub const AsyncGenPending: Symbol = Symbol::new(91u32);
    pub const AsyncGenReady: Symbol = Symbol::new(92u32);
    pub const Atomic: Symbol = Symbol::new(93u32);
    pub const BTreeMap: Symbol = Symbol::new(94u32);
    pub const Bool: Symbol = Symbol::new(95u32);
    pub const Borrow: Symbol = Symbol::new(96u32);
    pub const BorrowMut: Symbol = Symbol::new(97u32);
    pub const BoxDerefTransmute: Symbol = Symbol::new(98u32);
    pub const Break: Symbol = Symbol::new(99u32);
    pub const BuildHasher: Symbol = Symbol::new(100u32);
    pub const CStr: Symbol = Symbol::new(101u32);
    pub const CallOnceFuture: Symbol = Symbol::new(102u32);
    pub const CallRefFuture: Symbol = Symbol::new(103u32);
    pub const Capture: Symbol = Symbol::new(104u32);
    pub const Cell: Symbol = Symbol::new(105u32);
    pub const Char: Symbol = Symbol::new(106u32);
    pub const Cleanup: Symbol = Symbol::new(107u32);
    pub const Client: Symbol = Symbol::new(108u32);
    pub const Clone: Symbol = Symbol::new(109u32);
    pub const ClosureFnPointer: Symbol = Symbol::new(110u32);
    pub const CoercePointee: Symbol = Symbol::new(111u32);
    pub const CoercePointeeValidated: Symbol = Symbol::new(112u32);
    pub const CoerceShared: Symbol = Symbol::new(113u32);
    pub const CoerceUnsized: Symbol = Symbol::new(114u32);
    pub const Const: Symbol = Symbol::new(115u32);
    pub const ConstParamTy: Symbol = Symbol::new(116u32);
    pub const ConstParamTy_: Symbol = Symbol::new(117u32);
    pub const Context: Symbol = Symbol::new(118u32);
    pub const Continue: Symbol = Symbol::new(119u32);
    pub const ControlFlow: Symbol = Symbol::new(120u32);
    pub const Copy: Symbol = Symbol::new(121u32);
    pub const Cow: Symbol = Symbol::new(122u32);
    pub const Debug: Symbol = Symbol::new(123u32);
    pub const Default: Symbol = Symbol::new(124u32);
    pub const Deref: Symbol = Symbol::new(125u32);
    pub const DispatchFromDyn: Symbol = Symbol::new(126u32);
    pub const Display: Symbol = Symbol::new(127u32);
    pub const DropGuard: Symbol = Symbol::new(128u32);
    pub const Dual: Symbol = Symbol::new(129u32);
    pub const DualOnly: Symbol = Symbol::new(130u32);
    pub const Dualv: Symbol = Symbol::new(131u32);
    pub const DualvOnly: Symbol = Symbol::new(132u32);
    pub const Duplicated: Symbol = Symbol::new(133u32);
    pub const DuplicatedOnly: Symbol = Symbol::new(134u32);
    pub const DynTrait: Symbol = Symbol::new(135u32);
    pub const Enum: Symbol = Symbol::new(136u32);
    pub const Eq: Symbol = Symbol::new(137u32);
    pub const Equal: Symbol = Symbol::new(138u32);
    pub const Err: Symbol = Symbol::new(139u32);
    pub const ExitCode: Symbol = Symbol::new(140u32);
    pub const ExternC: Symbol = Symbol::new(141u32);
    pub const ExternRust: Symbol = Symbol::new(142u32);
    pub const Float: Symbol = Symbol::new(143u32);
    pub const FloatToFloat: Symbol = Symbol::new(144u32);
    pub const FloatToInt: Symbol = Symbol::new(145u32);
    pub const FmtArgumentsNew: Symbol = Symbol::new(146u32);
    pub const Fn: Symbol = Symbol::new(147u32);
    pub const FnMut: Symbol = Symbol::new(148u32);
    pub const FnOnce: Symbol = Symbol::new(149u32);
    pub const FnPtr: Symbol = Symbol::new(150u32);
    pub const FnPtrToPtr: Symbol = Symbol::new(151u32);
    pub const Formatter: Symbol = Symbol::new(152u32);
    pub const Forward: Symbol = Symbol::new(153u32);
    pub const From: Symbol = Symbol::new(154u32);
    pub const FromIterator: Symbol = Symbol::new(155u32);
    pub const FromResidual: Symbol = Symbol::new(156u32);
    pub const GenericTypeVisitable: Symbol = Symbol::new(157u32);
    pub const GlobalAlloc: Symbol = Symbol::new(158u32);
    pub const Hash: Symbol = Symbol::new(159u32);
    pub const HashMap: Symbol = Symbol::new(160u32);
    pub const HashSet: Symbol = Symbol::new(161u32);
    pub const Hasher: Symbol = Symbol::new(162u32);
    pub const InCleanup: Symbol = Symbol::new(163u32);
    pub const IndexOutput: Symbol = Symbol::new(164u32);
    pub const Input: Symbol = Symbol::new(165u32);
    pub const Int: Symbol = Symbol::new(166u32);
    pub const IntToFloat: Symbol = Symbol::new(167u32);
    pub const IntToInt: Symbol = Symbol::new(168u32);
    pub const Into: Symbol = Symbol::new(169u32);
    pub const IntoAsyncIterator: Symbol = Symbol::new(170u32);
    pub const IntoFuture: Symbol = Symbol::new(171u32);
    pub const IntoIterator: Symbol = Symbol::new(172u32);
    pub const IntoIteratorItem: Symbol = Symbol::new(173u32);
    pub const IoBufReader: Symbol = Symbol::new(174u32);
    pub const IrTyKind: Symbol = Symbol::new(175u32);
    pub const Item: Symbol = Symbol::new(176u32);
    pub const Iterator: Symbol = Symbol::new(177u32);
    pub const IteratorItem: Symbol = Symbol::new(178u32);
    pub const IteratorMap: Symbol = Symbol::new(179u32);
    pub const Layout: Symbol = Symbol::new(180u32);
    pub const Lifetime: Symbol = Symbol::new(181u32);
    pub const LintPass: Symbol = Symbol::new(182u32);
    pub const LocalKey: Symbol = Symbol::new(183u32);
    pub const MutToConstPointer: Symbol = Symbol::new(184u32);
    pub const Mutex: Symbol = Symbol::new(185u32);
    pub const MutexGuard: Symbol = Symbol::new(186u32);
    pub const Named: Symbol = Symbol::new(187u32);
    pub const NonZero: Symbol = Symbol::new(188u32);
    pub const None: Symbol = Symbol::new(189u32);
    pub const Normal: Symbol = Symbol::new(190u32);
    pub const Ok: Symbol = Symbol::new(191u32);
    pub const Option: Symbol = Symbol::new(192u32);
    pub const Ord: Symbol = Symbol::new(193u32);
    pub const Ordering: Symbol = Symbol::new(194u32);
    pub const Other: Symbol = Symbol::new(195u32);
    pub const Output: Symbol = Symbol::new(196u32);
    pub const ParamSet: Symbol = Symbol::new(197u32);
    pub const PartialEq: Symbol = Symbol::new(198u32);
    pub const PartialOrd: Symbol = Symbol::new(199u32);
    pub const Pending: Symbol = Symbol::new(200u32);
    pub const PinDerefMutHelper: Symbol = Symbol::new(201u32);
    pub const PinMacroHelper: Symbol = Symbol::new(202u32);
    pub const Pointer: Symbol = Symbol::new(203u32);
    pub const PointerCoercion: Symbol = Symbol::new(204u32);
    pub const PointerExposeProvenance: Symbol = Symbol::new(205u32);
    pub const PointerWithExposedProvenance: Symbol = Symbol::new(206u32);
    pub const Poll: Symbol = Symbol::new(207u32);
    pub const PtrToPtr: Symbol = Symbol::new(208u32);
    pub const Range: Symbol = Symbol::new(209u32);
    pub const RangeCopy: Symbol = Symbol::new(210u32);
    pub const RangeFrom: Symbol = Symbol::new(211u32);
    pub const RangeFromCopy: Symbol = Symbol::new(212u32);
    pub const RangeFull: Symbol = Symbol::new(213u32);
    pub const RangeInclusive: Symbol = Symbol::new(214u32);
    pub const RangeInclusiveCopy: Symbol = Symbol::new(215u32);
    pub const RangeMax: Symbol = Symbol::new(216u32);
    pub const RangeMin: Symbol = Symbol::new(217u32);
    pub const RangeSub: Symbol = Symbol::new(218u32);
    pub const RangeTo: Symbol = Symbol::new(219u32);
    pub const RangeToInclusive: Symbol = Symbol::new(220u32);
    pub const RangeToInclusiveCopy: Symbol = Symbol::new(221u32);
    pub const Rc: Symbol = Symbol::new(222u32);
    pub const RcWeak: Symbol = Symbol::new(223u32);
    pub const Ready: Symbol = Symbol::new(224u32);
    pub const Reborrow: Symbol = Symbol::new(225u32);
    pub const RefCell: Symbol = Symbol::new(226u32);
    pub const Reference: Symbol = Symbol::new(227u32);
    pub const ReifyFnPointer: Symbol = Symbol::new(228u32);
    pub const Relaxed: Symbol = Symbol::new(229u32);
    pub const Release: Symbol = Symbol::new(230u32);
    pub const Result: Symbol = Symbol::new(231u32);
    pub const ResumeTy: Symbol = Symbol::new(232u32);
    pub const Reverse: Symbol = Symbol::new(233u32);
    pub const Rust: Symbol = Symbol::new(234u32);
    pub const RustEmbed: Symbol = Symbol::new(235u32);
    pub const RustaceansAreAwesome: Symbol = Symbol::new(236u32);
    pub const RwLock: Symbol = Symbol::new(237u32);
    pub const RwLockReadGuard: Symbol = Symbol::new(238u32);
    pub const RwLockWriteGuard: Symbol = Symbol::new(239u32);
    pub const Safe: Symbol = Symbol::new(240u32);
    pub const Safety: Symbol = Symbol::new(241u32);
    pub const SelfTy: Symbol = Symbol::new(242u32);
    pub const Send: Symbol = Symbol::new(243u32);
    pub const SeqCst: Symbol = Symbol::new(244u32);
    pub const ShouldPanic: Symbol = Symbol::new(245u32);
    pub const Sized: Symbol = Symbol::new(246u32);
    pub const Slice: Symbol = Symbol::new(247u32);
    pub const SliceIndex: Symbol = Symbol::new(248u32);
    pub const Some: Symbol = Symbol::new(249u32);
    pub const Source: Symbol = Symbol::new(250u32);
    pub const StdinLock: Symbol = Symbol::new(251u32);
    pub const Str: Symbol = Symbol::new(252u32);
    pub const String: Symbol = Symbol::new(253u32);
    pub const Struct: Symbol = Symbol::new(254u32);
    pub const StructuralPartialEq: Symbol = Symbol::new(255u32);
    pub const Subtype: Symbol = Symbol::new(256u32);
    pub const SymbolIntern: Symbol = Symbol::new(257u32);
    pub const Sync: Symbol = Symbol::new(258u32);
    pub const SyncUnsafeCell: Symbol = Symbol::new(259u32);
    pub const Target: Symbol = Symbol::new(260u32);
    pub const TestType: Symbol = Symbol::new(261u32);
    pub const This: Symbol = Symbol::new(262u32);
    pub const TokenStream: Symbol = Symbol::new(263u32);
    pub const Transmute: Symbol = Symbol::new(264u32);
    pub const TrivialClone: Symbol = Symbol::new(265u32);
    pub const Try: Symbol = Symbol::new(266u32);
    pub const TryCaptureGeneric: Symbol = Symbol::new(267u32);
    pub const TryCapturePrintable: Symbol = Symbol::new(268u32);
    pub const TryFrom: Symbol = Symbol::new(269u32);
    pub const TryInto: Symbol = Symbol::new(270u32);
    pub const Tuple: Symbol = Symbol::new(271u32);
    pub const Ty: Symbol = Symbol::new(272u32);
    pub const TyCtxt: Symbol = Symbol::new(273u32);
    pub const TyKind: Symbol = Symbol::new(274u32);
    pub const Type: Symbol = Symbol::new(275u32);
    pub const TypeVisitable: Symbol = Symbol::new(276u32);
    pub const Union: Symbol = Symbol::new(277u32);
    pub const Unsafe: Symbol = Symbol::new(278u32);
    pub const UnsafeFnPointer: Symbol = Symbol::new(279u32);
    pub const Unsize: Symbol = Symbol::new(280u32);
    pub const UnsizePointee: Symbol = Symbol::new(281u32);
    pub const Vec: Symbol = Symbol::new(282u32);
    pub const Wrapper: Symbol = Symbol::new(283u32);
    pub const _DECLS: Symbol = Symbol::new(284u32);
    pub const __H: Symbol = Symbol::new(285u32);
    pub const __S: Symbol = Symbol::new(286u32);
    pub const __awaitee: Symbol = Symbol::new(287u32);
    pub const __ensures_checker: Symbol = Symbol::new(288u32);
    pub const __ret: Symbol = Symbol::new(289u32);
    pub const __try_var: Symbol = Symbol::new(290u32);
    pub const _t: Symbol = Symbol::new(291u32);
    pub const _task_context: Symbol = Symbol::new(292u32);
    pub const a32: Symbol = Symbol::new(293u32);
    pub const aarch64: Symbol = Symbol::new(294u32);
    pub const aarch64_target_feature: Symbol = Symbol::new(295u32);
    pub const aarch64_unstable_target_feature: Symbol = Symbol::new(296u32);
    pub const aarch64_ver_target_feature: Symbol = Symbol::new(297u32);
    pub const abi: Symbol = Symbol::new(298u32);
    pub const abi_amdgpu_kernel: Symbol = Symbol::new(299u32);
    pub const abi_avr_interrupt: Symbol = Symbol::new(300u32);
    pub const abi_c_cmse_nonsecure_call: Symbol = Symbol::new(301u32);
    pub const abi_cmse_nonsecure_call: Symbol = Symbol::new(302u32);
    pub const abi_custom: Symbol = Symbol::new(303u32);
    pub const abi_efiapi: Symbol = Symbol::new(304u32);
    pub const abi_gpu_kernel: Symbol = Symbol::new(305u32);
    pub const abi_msp430_interrupt: Symbol = Symbol::new(306u32);
    pub const abi_ptx: Symbol = Symbol::new(307u32);
    pub const abi_riscv_interrupt: Symbol = Symbol::new(308u32);
    pub const abi_swift: Symbol = Symbol::new(309u32);
    pub const abi_sysv64: Symbol = Symbol::new(310u32);
    pub const abi_thiscall: Symbol = Symbol::new(311u32);
    pub const abi_unadjusted: Symbol = Symbol::new(312u32);
    pub const abi_vectorcall: Symbol = Symbol::new(313u32);
    pub const abi_x86_interrupt: Symbol = Symbol::new(314u32);
    pub const abort: Symbol = Symbol::new(315u32);
    pub const abort_immediate: Symbol = Symbol::new(316u32);
    pub const add: Symbol = Symbol::new(317u32);
    pub const add_assign: Symbol = Symbol::new(318u32);
    pub const add_with_overflow: Symbol = Symbol::new(319u32);
    pub const address: Symbol = Symbol::new(320u32);
    pub const adt_const_params: Symbol = Symbol::new(321u32);
    pub const advanced_slice_patterns: Symbol = Symbol::new(322u32);
    pub const adx_target_feature: Symbol = Symbol::new(323u32);
    pub const aes: Symbol = Symbol::new(324u32);
    pub const aggregate_raw_ptr: Symbol = Symbol::new(325u32);
    pub const alias: Symbol = Symbol::new(326u32);
    pub const align: Symbol = Symbol::new(327u32);
    pub const align_of: Symbol = Symbol::new(328u32);
    pub const align_of_val: Symbol = Symbol::new(329u32);
    pub const alignment: Symbol = Symbol::new(330u32);
    pub const all: Symbol = Symbol::new(331u32);
    pub const alloc: Symbol = Symbol::new(332u32);
    pub const alloc_error_handler: Symbol = Symbol::new(333u32);
    pub const alloc_layout: Symbol = Symbol::new(334u32);
    pub const alloc_zeroed: Symbol = Symbol::new(335u32);
    pub const allocator: Symbol = Symbol::new(336u32);
    pub const allocator_internals: Symbol = Symbol::new(337u32);
    pub const allow: Symbol = Symbol::new(338u32);
    pub const allow_fail: Symbol = Symbol::new(339u32);
    pub const allow_internal_unsafe: Symbol = Symbol::new(340u32);
    pub const allow_internal_unstable: Symbol = Symbol::new(341u32);
    pub const altivec: Symbol = Symbol::new(342u32);
    pub const alu32: Symbol = Symbol::new(343u32);
    pub const always: Symbol = Symbol::new(344u32);
    pub const ambiguity: Symbol = Symbol::new(345u32);
    pub const amdgpu: Symbol = Symbol::new(346u32);
    pub const amdgpu_dispatch_ptr: Symbol = Symbol::new(347u32);
    pub const analysis: Symbol = Symbol::new(348u32);
    pub const and: Symbol = Symbol::new(349u32);
    pub const and_then: Symbol = Symbol::new(350u32);
    pub const anon: Symbol = Symbol::new(351u32);
    pub const anon_assoc: Symbol = Symbol::new(352u32);
    pub const anonymous_lifetime_in_impl_trait: Symbol = Symbol::new(353u32);
    pub const any: Symbol = Symbol::new(354u32);
    pub const apx_target_feature: Symbol = Symbol::new(355u32);
    pub const arbitrary_enum_discriminant: Symbol = Symbol::new(356u32);
    pub const arbitrary_self_types: Symbol = Symbol::new(357u32);
    pub const arbitrary_self_types_pointers: Symbol = Symbol::new(358u32);
    pub const areg: Symbol = Symbol::new(359u32);
    pub const args: Symbol = Symbol::new(360u32);
    pub const arith_offset: Symbol = Symbol::new(361u32);
    pub const arm: Symbol = Symbol::new(362u32);
    pub const arm64ec: Symbol = Symbol::new(363u32);
    pub const arm_a32: Symbol = Symbol::new(364u32);
    pub const arm_t32: Symbol = Symbol::new(365u32);
    pub const arm_target_feature: Symbol = Symbol::new(366u32);
    pub const array: Symbol = Symbol::new(367u32);
    pub const as_dash_needed: Symbol = Symbol::new(368u32);
    pub const as_ptr: Symbol = Symbol::new(369u32);
    pub const as_ref: Symbol = Symbol::new(370u32);
    pub const asm: Symbol = Symbol::new(371u32);
    pub const asm_cfg: Symbol = Symbol::new(372u32);
    pub const asm_const: Symbol = Symbol::new(373u32);
    pub const asm_const_ptr: Symbol = Symbol::new(374u32);
    pub const asm_experimental_arch: Symbol = Symbol::new(375u32);
    pub const asm_experimental_reg: Symbol = Symbol::new(376u32);
    pub const asm_goto: Symbol = Symbol::new(377u32);
    pub const asm_goto_with_outputs: Symbol = Symbol::new(378u32);
    pub const asm_sym: Symbol = Symbol::new(379u32);
    pub const asm_unwind: Symbol = Symbol::new(380u32);
    pub const assert: Symbol = Symbol::new(381u32);
    pub const assert_eq: Symbol = Symbol::new(382u32);
    pub const assert_eq_macro: Symbol = Symbol::new(383u32);
    pub const assert_fields_are_eq: Symbol = Symbol::new(384u32);
    pub const assert_inhabited: Symbol = Symbol::new(385u32);
    pub const assert_macro: Symbol = Symbol::new(386u32);
    pub const assert_mem_uninitialized_valid: Symbol = Symbol::new(387u32);
    pub const assert_ne_macro: Symbol = Symbol::new(388u32);
    pub const assert_receiver_is_total_eq: Symbol = Symbol::new(389u32);
    pub const assert_zero_valid: Symbol = Symbol::new(390u32);
    pub const asserting: Symbol = Symbol::new(391u32);
    pub const associated_const_equality: Symbol = Symbol::new(392u32);
    pub const associated_consts: Symbol = Symbol::new(393u32);
    pub const associated_type_bounds: Symbol = Symbol::new(394u32);
    pub const associated_type_defaults: Symbol = Symbol::new(395u32);
    pub const associated_types: Symbol = Symbol::new(396u32);
    pub const assume: Symbol = Symbol::new(397u32);
    pub const assume_init: Symbol = Symbol::new(398u32);
    pub const asterisk: Symbol = Symbol::new(399u32);
    pub const async_await: Symbol = Symbol::new(400u32);
    pub const async_call: Symbol = Symbol::new(401u32);
    pub const async_call_mut: Symbol = Symbol::new(402u32);
    pub const async_call_once: Symbol = Symbol::new(403u32);
    pub const async_closure: Symbol = Symbol::new(404u32);
    pub const async_drop: Symbol = Symbol::new(405u32);
    pub const async_drop_in_place: Symbol = Symbol::new(406u32);
    pub const async_fn: Symbol = Symbol::new(407u32);
    pub const async_fn_in_dyn_trait: Symbol = Symbol::new(408u32);
    pub const async_fn_in_trait: Symbol = Symbol::new(409u32);
    pub const async_fn_kind_helper: Symbol = Symbol::new(410u32);
    pub const async_fn_kind_upvars: Symbol = Symbol::new(411u32);
    pub const async_fn_mut: Symbol = Symbol::new(412u32);
    pub const async_fn_once: Symbol = Symbol::new(413u32);
    pub const async_fn_once_output: Symbol = Symbol::new(414u32);
    pub const async_fn_track_caller: Symbol = Symbol::new(415u32);
    pub const async_fn_traits: Symbol = Symbol::new(416u32);
    pub const async_for_loop: Symbol = Symbol::new(417u32);
    pub const async_gen_internals: Symbol = Symbol::new(418u32);
    pub const async_iterator: Symbol = Symbol::new(419u32);
    pub const async_iterator_poll_next: Symbol = Symbol::new(420u32);
    pub const async_trait_bounds: Symbol = Symbol::new(421u32);
    pub const atomic: Symbol = Symbol::new(422u32);
    pub const atomic_and: Symbol = Symbol::new(423u32);
    pub const atomic_cxchg: Symbol = Symbol::new(424u32);
    pub const atomic_cxchgweak: Symbol = Symbol::new(425u32);
    pub const atomic_fence: Symbol = Symbol::new(426u32);
    pub const atomic_load: Symbol = Symbol::new(427u32);
    pub const atomic_max: Symbol = Symbol::new(428u32);
    pub const atomic_min: Symbol = Symbol::new(429u32);
    pub const atomic_nand: Symbol = Symbol::new(430u32);
    pub const atomic_or: Symbol = Symbol::new(431u32);
    pub const atomic_singlethreadfence: Symbol = Symbol::new(432u32);
    pub const atomic_store: Symbol = Symbol::new(433u32);
    pub const atomic_umax: Symbol = Symbol::new(434u32);
    pub const atomic_umin: Symbol = Symbol::new(435u32);
    pub const atomic_xadd: Symbol = Symbol::new(436u32);
    pub const atomic_xchg: Symbol = Symbol::new(437u32);
    pub const atomic_xor: Symbol = Symbol::new(438u32);
    pub const atomic_xsub: Symbol = Symbol::new(439u32);
    pub const atomics: Symbol = Symbol::new(440u32);
    pub const att_syntax: Symbol = Symbol::new(441u32);
    pub const attr: Symbol = Symbol::new(442u32);
    pub const attr_literals: Symbol = Symbol::new(443u32);
    pub const attribute: Symbol = Symbol::new(444u32);
    pub const attributes: Symbol = Symbol::new(445u32);
    pub const audit_that: Symbol = Symbol::new(446u32);
    pub const augmented_assignments: Symbol = Symbol::new(447u32);
    pub const auto_cfg: Symbol = Symbol::new(448u32);
    pub const auto_traits: Symbol = Symbol::new(449u32);
    pub const autodiff: Symbol = Symbol::new(450u32);
    pub const autodiff_forward: Symbol = Symbol::new(451u32);
    pub const autodiff_reverse: Symbol = Symbol::new(452u32);
    pub const automatically_derived: Symbol = Symbol::new(453u32);
    pub const available_externally: Symbol = Symbol::new(454u32);
    pub const avr: Symbol = Symbol::new(455u32);
    pub const avr_target_feature: Symbol = Symbol::new(456u32);
    pub const avx: Symbol = Symbol::new(457u32);
    pub const avx10_target_feature: Symbol = Symbol::new(458u32);
    pub const avx512_target_feature: Symbol = Symbol::new(459u32);
    pub const avx512bw: Symbol = Symbol::new(460u32);
    pub const avx512f: Symbol = Symbol::new(461u32);
    pub const await_macro: Symbol = Symbol::new(462u32);
    pub const backchain: Symbol = Symbol::new(463u32);
    pub const backend_repr: Symbol = Symbol::new(464u32);
    pub const begin_panic: Symbol = Symbol::new(465u32);
    pub const bench: Symbol = Symbol::new(466u32);
    pub const bevy_ecs: Symbol = Symbol::new(467u32);
    pub const bikeshed: Symbol = Symbol::new(468u32);
    pub const bikeshed_guaranteed_no_drop: Symbol = Symbol::new(469u32);
    pub const bin: Symbol = Symbol::new(470u32);
    pub const bind_by_move_pattern_guards: Symbol = Symbol::new(471u32);
    pub const bindings_after_at: Symbol = Symbol::new(472u32);
    pub const bitand: Symbol = Symbol::new(473u32);
    pub const bitand_assign: Symbol = Symbol::new(474u32);
    pub const bitor: Symbol = Symbol::new(475u32);
    pub const bitor_assign: Symbol = Symbol::new(476u32);
    pub const bitreverse: Symbol = Symbol::new(477u32);
    pub const bits: Symbol = Symbol::new(478u32);
    pub const bitxor: Symbol = Symbol::new(479u32);
    pub const bitxor_assign: Symbol = Symbol::new(480u32);
    pub const bivariant: Symbol = Symbol::new(481u32);
    pub const black_box: Symbol = Symbol::new(482u32);
    pub const block: Symbol = Symbol::new(483u32);
    pub const blocking: Symbol = Symbol::new(484u32);
    pub const bool: Symbol = Symbol::new(485u32);
    pub const borrowck_graphviz_format: Symbol = Symbol::new(486u32);
    pub const borrowck_graphviz_postflow: Symbol = Symbol::new(487u32);
    pub const box_new: Symbol = Symbol::new(488u32);
    pub const box_patterns: Symbol = Symbol::new(489u32);
    pub const box_syntax: Symbol = Symbol::new(490u32);
    pub const boxed_slice: Symbol = Symbol::new(491u32);
    pub const bpf: Symbol = Symbol::new(492u32);
    pub const bpf_target_feature: Symbol = Symbol::new(493u32);
    pub const braced_empty_structs: Symbol = Symbol::new(494u32);
    pub const branch: Symbol = Symbol::new(495u32);
    pub const breakpoint: Symbol = Symbol::new(496u32);
    pub const breg: Symbol = Symbol::new(497u32);
    pub const bridge: Symbol = Symbol::new(498u32);
    pub const bswap: Symbol = Symbol::new(499u32);
    pub const built: Symbol = Symbol::new(500u32);
    pub const bundle: Symbol = Symbol::new(501u32);
    pub const c_dash_variadic: Symbol = Symbol::new(502u32);
    pub const c_str_literals: Symbol = Symbol::new(503u32);
    pub const c_unwind: Symbol = Symbol::new(504u32);
    pub const c_variadic: Symbol = Symbol::new(505u32);
    pub const c_variadic_experimental_arch: Symbol = Symbol::new(506u32);
    pub const c_variadic_naked_functions: Symbol = Symbol::new(507u32);
    pub const c_void: Symbol = Symbol::new(508u32);
    pub const call: Symbol = Symbol::new(509u32);
    pub const call_mut: Symbol = Symbol::new(510u32);
    pub const call_once: Symbol = Symbol::new(511u32);
    pub const call_once_future: Symbol = Symbol::new(512u32);
    pub const call_ref_future: Symbol = Symbol::new(513u32);
    pub const caller: Symbol = Symbol::new(514u32);
    pub const caller_location: Symbol = Symbol::new(515u32);
    pub const capture_disjoint_fields: Symbol = Symbol::new(516u32);
    pub const carrying_mul_add: Symbol = Symbol::new(517u32);
    pub const carryless_mul: Symbol = Symbol::new(518u32);
    pub const catch_unwind: Symbol = Symbol::new(519u32);
    pub const cause: Symbol = Symbol::new(520u32);
    pub const cdylib: Symbol = Symbol::new(521u32);
    pub const ceil: Symbol = Symbol::new(522u32);
    pub const cfg: Symbol = Symbol::new(523u32);
    pub const cfg_accessible: Symbol = Symbol::new(524u32);
    pub const cfg_attr: Symbol = Symbol::new(525u32);
    pub const cfg_attr_multi: Symbol = Symbol::new(526u32);
    pub const cfg_boolean_literals: Symbol = Symbol::new(527u32);
    pub const cfg_contract_checks: Symbol = Symbol::new(528u32);
    pub const cfg_doctest: Symbol = Symbol::new(529u32);
    pub const cfg_eval: Symbol = Symbol::new(530u32);
    pub const cfg_overflow_checks: Symbol = Symbol::new(531u32);
    pub const cfg_panic: Symbol = Symbol::new(532u32);
    pub const cfg_relocation_model: Symbol = Symbol::new(533u32);
    pub const cfg_sanitize: Symbol = Symbol::new(534u32);
    pub const cfg_sanitizer_cfi: Symbol = Symbol::new(535u32);
    pub const cfg_select: Symbol = Symbol::new(536u32);
    pub const cfg_target_abi: Symbol = Symbol::new(537u32);
    pub const cfg_target_compact: Symbol = Symbol::new(538u32);
    pub const cfg_target_feature: Symbol = Symbol::new(539u32);
    pub const cfg_target_has_atomic: Symbol = Symbol::new(540u32);
    pub const cfg_target_has_atomic_equal_alignment: Symbol =
        Symbol::new(541u32);
    pub const cfg_target_has_reliable_f16_f128: Symbol = Symbol::new(542u32);
    pub const cfg_target_has_reliable_f16b: Symbol = Symbol::new(543u32);
    pub const cfg_target_has_threads: Symbol = Symbol::new(544u32);
    pub const cfg_target_object_format: Symbol = Symbol::new(545u32);
    pub const cfg_target_thread_local: Symbol = Symbol::new(546u32);
    pub const cfg_target_vendor: Symbol = Symbol::new(547u32);
    pub const cfg_ub_checks: Symbol = Symbol::new(548u32);
    pub const cfg_version: Symbol = Symbol::new(549u32);
    pub const cfi: Symbol = Symbol::new(550u32);
    pub const cfi_encoding: Symbol = Symbol::new(551u32);
    pub const char: Symbol = Symbol::new(552u32);
    pub const checked_type_aliases: Symbol = Symbol::new(553u32);
    pub const clflushopt_target_feature: Symbol = Symbol::new(554u32);
    pub const client: Symbol = Symbol::new(555u32);
    pub const clippy: Symbol = Symbol::new(556u32);
    pub const clobber_abi: Symbol = Symbol::new(557u32);
    pub const clone: Symbol = Symbol::new(558u32);
    pub const clone_closures: Symbol = Symbol::new(559u32);
    pub const clone_fn: Symbol = Symbol::new(560u32);
    pub const clone_from: Symbol = Symbol::new(561u32);
    pub const clone_from_fn: Symbol = Symbol::new(562u32);
    pub const close_fn: Symbol = Symbol::new(563u32);
    pub const closure: Symbol = Symbol::new(564u32);
    pub const closure_lifetime_binder: Symbol = Symbol::new(565u32);
    pub const closure_to_fn_coercion: Symbol = Symbol::new(566u32);
    pub const closure_track_caller: Symbol = Symbol::new(567u32);
    pub const cmp: Symbol = Symbol::new(568u32);
    pub const cmp_ord_max: Symbol = Symbol::new(569u32);
    pub const cmp_ord_min: Symbol = Symbol::new(570u32);
    pub const cmp_partialeq_eq: Symbol = Symbol::new(571u32);
    pub const cmp_partialeq_ne: Symbol = Symbol::new(572u32);
    pub const cmp_partialord_cmp: Symbol = Symbol::new(573u32);
    pub const cmp_partialord_ge: Symbol = Symbol::new(574u32);
    pub const cmp_partialord_gt: Symbol = Symbol::new(575u32);
    pub const cmp_partialord_le: Symbol = Symbol::new(576u32);
    pub const cmp_partialord_lt: Symbol = Symbol::new(577u32);
    pub const cmpxchg16b_target_feature: Symbol = Symbol::new(578u32);
    pub const cmse_nonsecure_entry: Symbol = Symbol::new(579u32);
    pub const code: Symbol = Symbol::new(580u32);
    pub const codeview_annotation: Symbol = Symbol::new(581u32);
    pub const coerce_pointee_validated: Symbol = Symbol::new(582u32);
    pub const coerce_shared: Symbol = Symbol::new(583u32);
    pub const coerce_shared_target: Symbol = Symbol::new(584u32);
    pub const coerce_unsized: Symbol = Symbol::new(585u32);
    pub const coff: Symbol = Symbol::new(586u32);
    pub const cold: Symbol = Symbol::new(587u32);
    pub const cold_path: Symbol = Symbol::new(588u32);
    pub const collapse_debuginfo: Symbol = Symbol::new(589u32);
    pub const color: Symbol = Symbol::new(590u32);
    pub const column: Symbol = Symbol::new(591u32);
    pub const compare_bytes: Symbol = Symbol::new(592u32);
    pub const compare_exchange: Symbol = Symbol::new(593u32);
    pub const compare_exchange_weak: Symbol = Symbol::new(594u32);
    pub const compile_error: Symbol = Symbol::new(595u32);
    pub const compiler: Symbol = Symbol::new(596u32);
    pub const compiler_builtins: Symbol = Symbol::new(597u32);
    pub const compiler_copy: Symbol = Symbol::new(598u32);
    pub const compiler_fence: Symbol = Symbol::new(599u32);
    pub const compiler_move: Symbol = Symbol::new(600u32);
    pub const complex: Symbol = Symbol::new(601u32);
    pub const concat: Symbol = Symbol::new(602u32);
    pub const concat_bytes: Symbol = Symbol::new(603u32);
    pub const concat_str: Symbol = Symbol::new(604u32);
    pub const conservative_impl_trait: Symbol = Symbol::new(605u32);
    pub const console: Symbol = Symbol::new(606u32);
    pub const const_allocate: Symbol = Symbol::new(607u32);
    pub const const_async_blocks: Symbol = Symbol::new(608u32);
    pub const const_block_items: Symbol = Symbol::new(609u32);
    pub const const_c_variadic: Symbol = Symbol::new(610u32);
    pub const const_closures: Symbol = Symbol::new(611u32);
    pub const const_compare_raw_pointers: Symbol = Symbol::new(612u32);
    pub const const_constructor: Symbol = Symbol::new(613u32);
    pub const const_continue: Symbol = Symbol::new(614u32);
    pub const const_deallocate: Symbol = Symbol::new(615u32);
    pub const const_destruct: Symbol = Symbol::new(616u32);
    pub const const_eval_limit: Symbol = Symbol::new(617u32);
    pub const const_eval_select: Symbol = Symbol::new(618u32);
    pub const const_evaluatable_checked: Symbol = Symbol::new(619u32);
    pub const const_extern_fn: Symbol = Symbol::new(620u32);
    pub const const_fn: Symbol = Symbol::new(621u32);
    pub const const_fn_floating_point_arithmetic: Symbol =
        Symbol::new(622u32);
    pub const const_fn_fn_ptr_basics: Symbol = Symbol::new(623u32);
    pub const const_fn_trait_bound: Symbol = Symbol::new(624u32);
    pub const const_fn_transmute: Symbol = Symbol::new(625u32);
    pub const const_fn_union: Symbol = Symbol::new(626u32);
    pub const const_fn_unsize: Symbol = Symbol::new(627u32);
    pub const const_for: Symbol = Symbol::new(628u32);
    pub const const_format_args: Symbol = Symbol::new(629u32);
    pub const const_generics: Symbol = Symbol::new(630u32);
    pub const const_generics_defaults: Symbol = Symbol::new(631u32);
    pub const const_if_match: Symbol = Symbol::new(632u32);
    pub const const_impl_trait: Symbol = Symbol::new(633u32);
    pub const const_in_array_repeat_expressions: Symbol = Symbol::new(634u32);
    pub const const_indexing: Symbol = Symbol::new(635u32);
    pub const const_let: Symbol = Symbol::new(636u32);
    pub const const_loop: Symbol = Symbol::new(637u32);
    pub const const_make_global: Symbol = Symbol::new(638u32);
    pub const const_mut_refs: Symbol = Symbol::new(639u32);
    pub const const_panic: Symbol = Symbol::new(640u32);
    pub const const_panic_fmt: Symbol = Symbol::new(641u32);
    pub const const_param_ty: Symbol = Symbol::new(642u32);
    pub const const_param_ty_unchecked: Symbol = Symbol::new(643u32);
    pub const const_precise_live_drops: Symbol = Symbol::new(644u32);
    pub const const_ptr_cast: Symbol = Symbol::new(645u32);
    pub const const_raw_ptr_deref: Symbol = Symbol::new(646u32);
    pub const const_raw_ptr_to_usize_cast: Symbol = Symbol::new(647u32);
    pub const const_refs_to_cell: Symbol = Symbol::new(648u32);
    pub const const_refs_to_static: Symbol = Symbol::new(649u32);
    pub const const_trait_bound_opt_out: Symbol = Symbol::new(650u32);
    pub const const_trait_impl: Symbol = Symbol::new(651u32);
    pub const const_try: Symbol = Symbol::new(652u32);
    pub const const_ty_placeholder: Symbol = Symbol::new(653u32);
    pub const constant: Symbol = Symbol::new(654u32);
    pub const constructor: Symbol = Symbol::new(655u32);
    pub const contract_build_check_ensures: Symbol = Symbol::new(656u32);
    pub const contract_check_ensures: Symbol = Symbol::new(657u32);
    pub const contract_check_requires: Symbol = Symbol::new(658u32);
    pub const contract_checks: Symbol = Symbol::new(659u32);
    pub const contracts: Symbol = Symbol::new(660u32);
    pub const contracts_ensures: Symbol = Symbol::new(661u32);
    pub const contracts_internals: Symbol = Symbol::new(662u32);
    pub const contracts_requires: Symbol = Symbol::new(663u32);
    pub const contravariant: Symbol = Symbol::new(664u32);
    pub const convert: Symbol = Symbol::new(665u32);
    pub const coprocessor: Symbol = Symbol::new(666u32);
    pub const copy: Symbol = Symbol::new(667u32);
    pub const copy_closures: Symbol = Symbol::new(668u32);
    pub const copy_nonoverlapping: Symbol = Symbol::new(669u32);
    pub const copysignf16: Symbol = Symbol::new(670u32);
    pub const copysignf32: Symbol = Symbol::new(671u32);
    pub const copysignf64: Symbol = Symbol::new(672u32);
    pub const copysignf128: Symbol = Symbol::new(673u32);
    pub const core: Symbol = Symbol::new(674u32);
    pub const core_panic: Symbol = Symbol::new(675u32);
    pub const core_panic_2015_macro: Symbol = Symbol::new(676u32);
    pub const core_panic_macro: Symbol = Symbol::new(677u32);
    pub const coroutine: Symbol = Symbol::new(678u32);
    pub const coroutine_clone: Symbol = Symbol::new(679u32);
    pub const coroutine_resume: Symbol = Symbol::new(680u32);
    pub const coroutine_return: Symbol = Symbol::new(681u32);
    pub const coroutine_state: Symbol = Symbol::new(682u32);
    pub const coroutine_yield: Symbol = Symbol::new(683u32);
    pub const coroutines: Symbol = Symbol::new(684u32);
    pub const cos: Symbol = Symbol::new(685u32);
    pub const count: Symbol = Symbol::new(686u32);
    pub const covariant: Symbol = Symbol::new(687u32);
    pub const covariant_unsafe_cell: Symbol = Symbol::new(688u32);
    pub const coverage: Symbol = Symbol::new(689u32);
    pub const coverage_attribute: Symbol = Symbol::new(690u32);
    pub const cr: Symbol = Symbol::new(691u32);
    pub const crate_in_paths: Symbol = Symbol::new(692u32);
    pub const crate_local: Symbol = Symbol::new(693u32);
    pub const crate_name: Symbol = Symbol::new(694u32);
    pub const crate_type: Symbol = Symbol::new(695u32);
    pub const crate_visibility_modifier: Symbol = Symbol::new(696u32);
    pub const crt_dash_static: Symbol = Symbol::new(697u32);
    pub const csky: Symbol = Symbol::new(698u32);
    pub const csky_target_feature: Symbol = Symbol::new(699u32);
    pub const cstr_type: Symbol = Symbol::new(700u32);
    pub const cstring_type: Symbol = Symbol::new(701u32);
    pub const ctlz: Symbol = Symbol::new(702u32);
    pub const ctlz_nonzero: Symbol = Symbol::new(703u32);
    pub const ctpop: Symbol = Symbol::new(704u32);
    pub const ctr: Symbol = Symbol::new(705u32);
    pub const cttz: Symbol = Symbol::new(706u32);
    pub const cttz_nonzero: Symbol = Symbol::new(707u32);
    pub const custom_attribute: Symbol = Symbol::new(708u32);
    pub const custom_code_classes_in_docs: Symbol = Symbol::new(709u32);
    pub const custom_derive: Symbol = Symbol::new(710u32);
    pub const custom_inner_attributes: Symbol = Symbol::new(711u32);
    pub const custom_mir: Symbol = Symbol::new(712u32);
    pub const custom_test_frameworks: Symbol = Symbol::new(713u32);
    pub const d32: Symbol = Symbol::new(714u32);
    pub const dead_code: Symbol = Symbol::new(715u32);
    pub const dead_code_pub_in_binary: Symbol = Symbol::new(716u32);
    pub const dealloc: Symbol = Symbol::new(717u32);
    pub const debug: Symbol = Symbol::new(718u32);
    pub const debug_assert_eq_macro: Symbol = Symbol::new(719u32);
    pub const debug_assert_macro: Symbol = Symbol::new(720u32);
    pub const debug_assert_ne_macro: Symbol = Symbol::new(721u32);
    pub const debug_assertions: Symbol = Symbol::new(722u32);
    pub const debug_c_like_enum_write_str: Symbol = Symbol::new(723u32);
    pub const debug_struct_fields_finish: Symbol = Symbol::new(724u32);
    pub const debugger_visualizer: Symbol = Symbol::new(725u32);
    pub const decl_macro: Symbol = Symbol::new(726u32);
    pub const declare_lint_pass: Symbol = Symbol::new(727u32);
    pub const decorated: Symbol = Symbol::new(728u32);
    pub const default_alloc_error_handler: Symbol = Symbol::new(729u32);
    pub const default_field_values: Symbol = Symbol::new(730u32);
    pub const default_fn: Symbol = Symbol::new(731u32);
    pub const default_lib_allocator: Symbol = Symbol::new(732u32);
    pub const default_trait1: Symbol = Symbol::new(733u32);
    pub const default_trait2: Symbol = Symbol::new(734u32);
    pub const default_trait3: Symbol = Symbol::new(735u32);
    pub const default_trait4: Symbol = Symbol::new(736u32);
    pub const default_type_parameter_fallback: Symbol = Symbol::new(737u32);
    pub const default_type_params: Symbol = Symbol::new(738u32);
    pub const define_opaque: Symbol = Symbol::new(739u32);
    pub const deny: Symbol = Symbol::new(740u32);
    pub const deprecated: Symbol = Symbol::new(741u32);
    pub const deprecated_safe: Symbol = Symbol::new(742u32);
    pub const deprecated_suggestion: Symbol = Symbol::new(743u32);
    pub const deref_method: Symbol = Symbol::new(744u32);
    pub const deref_mut: Symbol = Symbol::new(745u32);
    pub const deref_patterns: Symbol = Symbol::new(746u32);
    pub const deref_pure: Symbol = Symbol::new(747u32);
    pub const deref_target: Symbol = Symbol::new(748u32);
    pub const derive: Symbol = Symbol::new(749u32);
    pub const derive_const: Symbol = Symbol::new(750u32);
    pub const derive_default_enum: Symbol = Symbol::new(751u32);
    pub const derive_from: Symbol = Symbol::new(752u32);
    pub const derive_smart_pointer: Symbol = Symbol::new(753u32);
    pub const destruct: Symbol = Symbol::new(754u32);
    pub const destructuring_assignment: Symbol = Symbol::new(755u32);
    pub const diagnostic: Symbol = Symbol::new(756u32);
    pub const diagnostic_namespace: Symbol = Symbol::new(757u32);
    pub const diagnostic_on_const: Symbol = Symbol::new(758u32);
    pub const diagnostic_on_move: Symbol = Symbol::new(759u32);
    pub const diagnostic_on_type_error: Symbol = Symbol::new(760u32);
    pub const diagnostic_on_unknown: Symbol = Symbol::new(761u32);
    pub const diagnostic_on_unmatch_args: Symbol = Symbol::new(762u32);
    pub const diagnostic_on_unmatched_args: Symbol = Symbol::new(763u32);
    pub const diagnostic_opaque: Symbol = Symbol::new(764u32);
    pub const dialect: Symbol = Symbol::new(765u32);
    pub const direct: Symbol = Symbol::new(766u32);
    pub const discriminant_kind: Symbol = Symbol::new(767u32);
    pub const discriminant_type: Symbol = Symbol::new(768u32);
    pub const discriminant_value: Symbol = Symbol::new(769u32);
    pub const disjoint_bitor: Symbol = Symbol::new(770u32);
    pub const dispatch_from_dyn: Symbol = Symbol::new(771u32);
    pub const div: Symbol = Symbol::new(772u32);
    pub const div_assign: Symbol = Symbol::new(773u32);
    pub const diverging_block_default: Symbol = Symbol::new(774u32);
    pub const dl: Symbol = Symbol::new(775u32);
    pub const do_not_recommend: Symbol = Symbol::new(776u32);
    pub const doc: Symbol = Symbol::new(777u32);
    pub const doc_alias: Symbol = Symbol::new(778u32);
    pub const doc_auto_cfg: Symbol = Symbol::new(779u32);
    pub const doc_cfg: Symbol = Symbol::new(780u32);
    pub const doc_cfg_hide: Symbol = Symbol::new(781u32);
    pub const doc_keyword: Symbol = Symbol::new(782u32);
    pub const doc_masked: Symbol = Symbol::new(783u32);
    pub const doc_notable_trait: Symbol = Symbol::new(784u32);
    pub const doc_primitive: Symbol = Symbol::new(785u32);
    pub const doc_spotlight: Symbol = Symbol::new(786u32);
    pub const doctest: Symbol = Symbol::new(787u32);
    pub const dotdot_in_tuple_patterns: Symbol = Symbol::new(788u32);
    pub const dotdoteq_in_patterns: Symbol = Symbol::new(789u32);
    pub const dreg: Symbol = Symbol::new(790u32);
    pub const dreg_low8: Symbol = Symbol::new(791u32);
    pub const dreg_low16: Symbol = Symbol::new(792u32);
    pub const dret: Symbol = Symbol::new(793u32);
    pub const drop: Symbol = Symbol::new(794u32);
    pub const drop_glue: Symbol = Symbol::new(795u32);
    pub const drop_in_place: Symbol = Symbol::new(796u32);
    pub const drop_types_in_const: Symbol = Symbol::new(797u32);
    pub const dropck_eyepatch: Symbol = Symbol::new(798u32);
    pub const dropck_parametricity: Symbol = Symbol::new(799u32);
    pub const dummy: Symbol = Symbol::new(800u32);
    pub const dummy_cgu_name: Symbol = Symbol::new(801u32);
    pub const dylib: Symbol = Symbol::new(802u32);
    pub const dyn_compatible_for_dispatch: Symbol = Symbol::new(803u32);
    pub const dyn_metadata: Symbol = Symbol::new(804u32);
    pub const dyn_star: Symbol = Symbol::new(805u32);
    pub const dyn_trait: Symbol = Symbol::new(806u32);
    pub const dynamic_no_pic: Symbol = Symbol::new(807u32);
    pub const edition_panic: Symbol = Symbol::new(808u32);
    pub const effective_target_features: Symbol = Symbol::new(809u32);
    pub const effects: Symbol = Symbol::new(810u32);
    pub const eh_personality: Symbol = Symbol::new(811u32);
    pub const eii: Symbol = Symbol::new(812u32);
    pub const eii_declaration: Symbol = Symbol::new(813u32);
    pub const eii_internals: Symbol = Symbol::new(814u32);
    pub const eii_shared_macro: Symbol = Symbol::new(815u32);
    pub const element_ty: Symbol = Symbol::new(816u32);
    pub const elf: Symbol = Symbol::new(817u32);
    pub const empty: Symbol = Symbol::new(818u32);
    pub const empty_braces: Symbol = Symbol::new(819u32);
    pub const empty_brackets: Symbol = Symbol::new(820u32);
    pub const empty_parens: Symbol = Symbol::new(821u32);
    pub const enable: Symbol = Symbol::new(822u32);
    pub const end: Symbol = Symbol::new(823u32);
    pub const entry_nops: Symbol = Symbol::new(824u32);
    pub const env: Symbol = Symbol::new(825u32);
    pub const eprint_macro: Symbol = Symbol::new(826u32);
    pub const eprintln_macro: Symbol = Symbol::new(827u32);
    pub const eq: Symbol = Symbol::new(828u32);
    pub const ergonomic_clones: Symbol = Symbol::new(829u32);
    pub const ermsb_target_feature: Symbol = Symbol::new(830u32);
    pub const exact_div: Symbol = Symbol::new(831u32);
    pub const except: Symbol = Symbol::new(832u32);
    pub const exception: Symbol = Symbol::new(833u32);
    pub const exception_handling: Symbol = Symbol::new(834u32);
    pub const exclusive_range_pattern: Symbol = Symbol::new(835u32);
    pub const exhaustive_integer_patterns: Symbol = Symbol::new(836u32);
    pub const exhaustive_patterns: Symbol = Symbol::new(837u32);
    pub const existential_type: Symbol = Symbol::new(838u32);
    pub const exists: Symbol = Symbol::new(839u32);
    pub const exp: Symbol = Symbol::new(840u32);
    pub const exp2: Symbol = Symbol::new(841u32);
    pub const expand1: Symbol = Symbol::new(842u32);
    pub const expand2: Symbol = Symbol::new(843u32);
    pub const expect: Symbol = Symbol::new(844u32);
    pub const expected: Symbol = Symbol::new(845u32);
    pub const explicit_extern_abis: Symbol = Symbol::new(846u32);
    pub const explicit_generic_args_with_impl_trait: Symbol =
        Symbol::new(847u32);
    pub const explicit_tail_calls: Symbol = Symbol::new(848u32);
    pub const export_name: Symbol = Symbol::new(849u32);
    pub const export_stable: Symbol = Symbol::new(850u32);
    pub const export_symbols: Symbol = Symbol::new(851u32);
    pub const expr: Symbol = Symbol::new(852u32);
    pub const expr_2021: Symbol = Symbol::new(853u32);
    pub const expr_fragment_specifier_2024: Symbol = Symbol::new(854u32);
    pub const extended_key_value_attributes: Symbol = Symbol::new(855u32);
    pub const extended_varargs_abi_support: Symbol = Symbol::new(856u32);
    pub const extendedl32r: Symbol = Symbol::new(857u32);
    pub const extern_absolute_paths: Symbol = Symbol::new(858u32);
    pub const extern_crate_item_prelude: Symbol = Symbol::new(859u32);
    pub const extern_crate_self: Symbol = Symbol::new(860u32);
    pub const extern_in_paths: Symbol = Symbol::new(861u32);
    pub const extern_item_impls: Symbol = Symbol::new(862u32);
    pub const extern_prelude: Symbol = Symbol::new(863u32);
    pub const extern_system_varargs: Symbol = Symbol::new(864u32);
    pub const extern_types: Symbol = Symbol::new(865u32);
    pub const extern_weak: Symbol = Symbol::new(866u32);
    pub const external: Symbol = Symbol::new(867u32);
    pub const external_doc: Symbol = Symbol::new(868u32);
    pub const f16: Symbol = Symbol::new(869u32);
    pub const f16_nan: Symbol = Symbol::new(870u32);
    pub const f16b: Symbol = Symbol::new(871u32);
    pub const f16c_target_feature: Symbol = Symbol::new(872u32);
    pub const f32: Symbol = Symbol::new(873u32);
    pub const f32_nan: Symbol = Symbol::new(874u32);
    pub const f64: Symbol = Symbol::new(875u32);
    pub const f64_nan: Symbol = Symbol::new(876u32);
    pub const f128: Symbol = Symbol::new(877u32);
    pub const f128_nan: Symbol = Symbol::new(878u32);
    pub const fabs: Symbol = Symbol::new(879u32);
    pub const fadd_algebraic: Symbol = Symbol::new(880u32);
    pub const fadd_fast: Symbol = Symbol::new(881u32);
    pub const fake_variadic: Symbol = Symbol::new(882u32);
    pub const fallback: Symbol = Symbol::new(883u32);
    pub const fdiv_algebraic: Symbol = Symbol::new(884u32);
    pub const fdiv_fast: Symbol = Symbol::new(885u32);
    pub const feature: Symbol = Symbol::new(886u32);
    pub const fence: Symbol = Symbol::new(887u32);
    pub const ferris: Symbol = Symbol::new(888u32);
    pub const fetch_update: Symbol = Symbol::new(889u32);
    pub const ffi_const: Symbol = Symbol::new(890u32);
    pub const ffi_pure: Symbol = Symbol::new(891u32);
    pub const ffi_returns_twice: Symbol = Symbol::new(892u32);
    pub const ffr: Symbol = Symbol::new(893u32);
    pub const field: Symbol = Symbol::new(894u32);
    pub const field_base: Symbol = Symbol::new(895u32);
    pub const field_init_shorthand: Symbol = Symbol::new(896u32);
    pub const field_offset: Symbol = Symbol::new(897u32);
    pub const field_projections: Symbol = Symbol::new(898u32);
    pub const field_representing_type: Symbol = Symbol::new(899u32);
    pub const field_representing_type_actual_type_id: Symbol =
        Symbol::new(900u32);
    pub const field_representing_type_name: Symbol = Symbol::new(901u32);
    pub const field_representing_type_offset: Symbol = Symbol::new(902u32);
    pub const field_representing_type_raw: Symbol = Symbol::new(903u32);
    pub const field_type: Symbol = Symbol::new(904u32);
    pub const fields: Symbol = Symbol::new(905u32);
    pub const file: Symbol = Symbol::new(906u32);
    pub const final_associated_functions: Symbol = Symbol::new(907u32);
    pub const float_mul_add_relaxed: Symbol = Symbol::new(908u32);
    pub const float_to_int_unchecked: Symbol = Symbol::new(909u32);
    pub const floor: Symbol = Symbol::new(910u32);
    pub const fma: Symbol = Symbol::new(911u32);
    pub const fma4_target_feature: Symbol = Symbol::new(912u32);
    pub const fmt: Symbol = Symbol::new(913u32);
    pub const fmt_debug: Symbol = Symbol::new(914u32);
    pub const fmul_algebraic: Symbol = Symbol::new(915u32);
    pub const fmul_fast: Symbol = Symbol::new(916u32);
    pub const fmuladd: Symbol = Symbol::new(917u32);
    pub const fn_align: Symbol = Symbol::new(918u32);
    pub const fn_body: Symbol = Symbol::new(919u32);
    pub const fn_delegation: Symbol = Symbol::new(920u32);
    pub const fn_must_use: Symbol = Symbol::new(921u32);
    pub const fn_mut: Symbol = Symbol::new(922u32);
    pub const fn_once: Symbol = Symbol::new(923u32);
    pub const fn_once_output: Symbol = Symbol::new(924u32);
    pub const fn_ptr_as_ptr: Symbol = Symbol::new(925u32);
    pub const fn_ptr_from_ptr: Symbol = Symbol::new(926u32);
    pub const fn_ptr_trait: Symbol = Symbol::new(927u32);
    pub const fn_static: Symbol = Symbol::new(928u32);
    pub const forall: Symbol = Symbol::new(929u32);
    pub const forbid: Symbol = Symbol::new(930u32);
    pub const force_target_feature: Symbol = Symbol::new(931u32);
    pub const forced_keywords: Symbol = Symbol::new(932u32);
    pub const forget: Symbol = Symbol::new(933u32);
    pub const forget_trait: Symbol = Symbol::new(934u32);
    pub const format_args: Symbol = Symbol::new(935u32);
    pub const format_args_capture: Symbol = Symbol::new(936u32);
    pub const format_args_macro: Symbol = Symbol::new(937u32);
    pub const format_args_nl: Symbol = Symbol::new(938u32);
    pub const format_argument: Symbol = Symbol::new(939u32);
    pub const format_arguments: Symbol = Symbol::new(940u32);
    pub const format_macro: Symbol = Symbol::new(941u32);
    pub const format_placeholder: Symbol = Symbol::new(942u32);
    pub const format_unsafe_arg: Symbol = Symbol::new(943u32);
    pub const found: Symbol = Symbol::new(944u32);
    pub const fp: Symbol = Symbol::new(945u32);
    pub const fpregs: Symbol = Symbol::new(946u32);
    pub const framework: Symbol = Symbol::new(947u32);
    pub const freeze: Symbol = Symbol::new(948u32);
    pub const freeze_impls: Symbol = Symbol::new(949u32);
    pub const freg: Symbol = Symbol::new(950u32);
    pub const frem_algebraic: Symbol = Symbol::new(951u32);
    pub const frem_fast: Symbol = Symbol::new(952u32);
    pub const from: Symbol = Symbol::new(953u32);
    pub const from_desugaring: Symbol = Symbol::new(954u32);
    pub const from_iter: Symbol = Symbol::new(955u32);
    pub const from_output: Symbol = Symbol::new(956u32);
    pub const from_residual: Symbol = Symbol::new(957u32);
    pub const from_size_align_unchecked: Symbol = Symbol::new(958u32);
    pub const from_size_alignment_unchecked: Symbol = Symbol::new(959u32);
    pub const from_str: Symbol = Symbol::new(960u32);
    pub const from_str_nonconst: Symbol = Symbol::new(961u32);
    pub const from_usize: Symbol = Symbol::new(962u32);
    pub const from_yeet: Symbol = Symbol::new(963u32);
    pub const frontmatter: Symbol = Symbol::new(964u32);
    pub const fsub_algebraic: Symbol = Symbol::new(965u32);
    pub const fsub_fast: Symbol = Symbol::new(966u32);
    pub const full: Symbol = Symbol::new(967u32);
    pub const function_arg_const_generics: Symbol = Symbol::new(968u32);
    pub const fundamental: Symbol = Symbol::new(969u32);
    pub const fused_iterator: Symbol = Symbol::new(970u32);
    pub const future_output: Symbol = Symbol::new(971u32);
    pub const future_trait: Symbol = Symbol::new(972u32);
    pub const fxsr: Symbol = Symbol::new(973u32);
    pub const gca: Symbol = Symbol::new(974u32);
    pub const gca_adts: Symbol = Symbol::new(975u32);
    pub const gca_const_items: Symbol = Symbol::new(976u32);
    pub const gca_macroless_args: Symbol = Symbol::new(977u32);
    pub const gca_macroless_items: Symbol = Symbol::new(978u32);
    pub const gca_min_const_items: Symbol = Symbol::new(979u32);
    pub const gdb_script_file: Symbol = Symbol::new(980u32);
    pub const ge: Symbol = Symbol::new(981u32);
    pub const gen_blocks: Symbol = Symbol::new(982u32);
    pub const gen_future: Symbol = Symbol::new(983u32);
    pub const generator_clone: Symbol = Symbol::new(984u32);
    pub const generators: Symbol = Symbol::new(985u32);
    pub const generic_arg_infer: Symbol = Symbol::new(986u32);
    pub const generic_assert: Symbol = Symbol::new(987u32);
    pub const generic_associated_types: Symbol = Symbol::new(988u32);
    pub const generic_associated_types_extended: Symbol = Symbol::new(989u32);
    pub const generic_const_args: Symbol = Symbol::new(990u32);
    pub const generic_const_exprs: Symbol = Symbol::new(991u32);
    pub const generic_const_items: Symbol = Symbol::new(992u32);
    pub const generic_const_parameter_types: Symbol = Symbol::new(993u32);
    pub const generic_param_attrs: Symbol = Symbol::new(994u32);
    pub const generic_pattern_types: Symbol = Symbol::new(995u32);
    pub const generics: Symbol = Symbol::new(996u32);
    pub const get_context: Symbol = Symbol::new(997u32);
    pub const global_alloc_ty: Symbol = Symbol::new(998u32);
    pub const global_allocator: Symbol = Symbol::new(999u32);
    pub const global_asm: Symbol = Symbol::new(1000u32);
    pub const global_registration: Symbol = Symbol::new(1001u32);
    pub const globs: Symbol = Symbol::new(1002u32);
    pub const gpu_kernel: Symbol = Symbol::new(1003u32);
    pub const gpu_launch_sized_workgroup_mem: Symbol = Symbol::new(1004u32);
    pub const gt: Symbol = Symbol::new(1005u32);
    pub const guard: Symbol = Symbol::new(1006u32);
    pub const guard_patterns: Symbol = Symbol::new(1007u32);
    pub const half_open_range_patterns: Symbol = Symbol::new(1008u32);
    pub const half_open_range_patterns_in_slices: Symbol =
        Symbol::new(1009u32);
    pub const hash: Symbol = Symbol::new(1010u32);
    pub const hexagon: Symbol = Symbol::new(1011u32);
    pub const hexagon_target_feature: Symbol = Symbol::new(1012u32);
    pub const hidden: Symbol = Symbol::new(1013u32);
    pub const hide: Symbol = Symbol::new(1014u32);
    pub const highpriinterrupts: Symbol = Symbol::new(1015u32);
    pub const hint: Symbol = Symbol::new(1016u32);
    pub const homogeneous_aggregate: Symbol = Symbol::new(1017u32);
    pub const html_favicon_url: Symbol = Symbol::new(1018u32);
    pub const html_logo_url: Symbol = Symbol::new(1019u32);
    pub const html_no_source: Symbol = Symbol::new(1020u32);
    pub const html_playground_url: Symbol = Symbol::new(1021u32);
    pub const html_root_url: Symbol = Symbol::new(1022u32);
    pub const hvx: Symbol = Symbol::new(1023u32);
    pub const hvx_length64b: Symbol = Symbol::new(1024u32);
    pub const hvx_length128b: Symbol = Symbol::new(1025u32);
    pub const hwaddress: Symbol = Symbol::new(1026u32);
    pub const i8: Symbol = Symbol::new(1027u32);
    pub const i16: Symbol = Symbol::new(1028u32);
    pub const i32: Symbol = Symbol::new(1029u32);
    pub const i64: Symbol = Symbol::new(1030u32);
    pub const i128: Symbol = Symbol::new(1031u32);
    pub const i128_type: Symbol = Symbol::new(1032u32);
    pub const ident: Symbol = Symbol::new(1033u32);
    pub const ident_from_str_and_span: Symbol = Symbol::new(1034u32);
    pub const if_let: Symbol = Symbol::new(1035u32);
    pub const if_let_guard: Symbol = Symbol::new(1036u32);
    pub const if_let_rescope: Symbol = Symbol::new(1037u32);
    pub const if_while_or_patterns: Symbol = Symbol::new(1038u32);
    pub const ignore: Symbol = Symbol::new(1039u32);
    pub const immediate_abort: Symbol = Symbol::new(1040u32);
    pub const impl_header_lifetime_elision: Symbol = Symbol::new(1041u32);
    pub const impl_lint_pass: Symbol = Symbol::new(1042u32);
    pub const impl_restriction: Symbol = Symbol::new(1043u32);
    pub const impl_trait_in_assoc_type: Symbol = Symbol::new(1044u32);
    pub const impl_trait_in_bindings: Symbol = Symbol::new(1045u32);
    pub const impl_trait_in_fn_trait_return: Symbol = Symbol::new(1046u32);
    pub const impl_trait_projections: Symbol = Symbol::new(1047u32);
    pub const implied_by: Symbol = Symbol::new(1048u32);
    pub const import: Symbol = Symbol::new(1049u32);
    pub const import_name_type: Symbol = Symbol::new(1050u32);
    pub const import_shadowing: Symbol = Symbol::new(1051u32);
    pub const import_trait_associated_functions: Symbol =
        Symbol::new(1052u32);
    pub const imported_main: Symbol = Symbol::new(1053u32);
    pub const in_band_lifetimes: Symbol = Symbol::new(1054u32);
    pub const include: Symbol = Symbol::new(1055u32);
    pub const include_bytes: Symbol = Symbol::new(1056u32);
    pub const include_str: Symbol = Symbol::new(1057u32);
    pub const inclusive_range_syntax: Symbol = Symbol::new(1058u32);
    pub const incomplete_features: Symbol = Symbol::new(1059u32);
    pub const index: Symbol = Symbol::new(1060u32);
    pub const index_mut: Symbol = Symbol::new(1061u32);
    pub const infer_outlives_requirements: Symbol = Symbol::new(1062u32);
    pub const infer_static_outlives_requirements: Symbol =
        Symbol::new(1063u32);
    pub const inherent_associated_types: Symbol = Symbol::new(1064u32);
    pub const initial: Symbol = Symbol::new(1065u32);
    pub const inlateout: Symbol = Symbol::new(1066u32);
    pub const inline: Symbol = Symbol::new(1067u32);
    pub const inline_const: Symbol = Symbol::new(1068u32);
    pub const inline_const_pat: Symbol = Symbol::new(1069u32);
    pub const inout: Symbol = Symbol::new(1070u32);
    pub const inputs: Symbol = Symbol::new(1071u32);
    pub const instruction_set: Symbol = Symbol::new(1072u32);
    pub const instrument_fn: Symbol = Symbol::new(1073u32);
    pub const integer_: Symbol = Symbol::new(1074u32);
    pub const integer_max: Symbol = Symbol::new(1075u32);
    pub const integer_min: Symbol = Symbol::new(1076u32);
    pub const integral: Symbol = Symbol::new(1077u32);
    pub const internal_eq_trait_method_impls: Symbol = Symbol::new(1078u32);
    pub const internal_features: Symbol = Symbol::new(1079u32);
    pub const internal_syntax: Symbol = Symbol::new(1080u32);
    pub const interrupt: Symbol = Symbol::new(1081u32);
    pub const into_async_iter_into_iter: Symbol = Symbol::new(1082u32);
    pub const into_future: Symbol = Symbol::new(1083u32);
    pub const into_iter: Symbol = Symbol::new(1084u32);
    pub const into_try_type: Symbol = Symbol::new(1085u32);
    pub const intra_doc_pointers: Symbol = Symbol::new(1086u32);
    pub const intrinsic_fallback_is_spec: Symbol = Symbol::new(1087u32);
    pub const intrinsics: Symbol = Symbol::new(1088u32);
    pub const invariant: Symbol = Symbol::new(1089u32);
    pub const irrefutable_let_patterns: Symbol = Symbol::new(1090u32);
    pub const is: Symbol = Symbol::new(1091u32);
    pub const is_auto: Symbol = Symbol::new(1092u32);
    pub const is_splatted: Symbol = Symbol::new(1093u32);
    pub const is_unsafe: Symbol = Symbol::new(1094u32);
    pub const is_val_statically_known: Symbol = Symbol::new(1095u32);
    pub const isa_attribute: Symbol = Symbol::new(1096u32);
    pub const isize: Symbol = Symbol::new(1097u32);
    pub const issue: Symbol = Symbol::new(1098u32);
    pub const issue_5723_bootstrap: Symbol = Symbol::new(1099u32);
    pub const issue_tracker_base_url: Symbol = Symbol::new(1100u32);
    pub const item: Symbol = Symbol::new(1101u32);
    pub const item_context: Symbol = Symbol::new(1102u32);
    pub const item_like_imports: Symbol = Symbol::new(1103u32);
    pub const iter: Symbol = Symbol::new(1104u32);
    pub const iter_mut: Symbol = Symbol::new(1105u32);
    pub const iterator: Symbol = Symbol::new(1106u32);
    pub const iterator_collect_fn: Symbol = Symbol::new(1107u32);
    pub const kcfi: Symbol = Symbol::new(1108u32);
    pub const kernel_address: Symbol = Symbol::new(1109u32);
    pub const kernel_hwaddress: Symbol = Symbol::new(1110u32);
    pub const keylocker_x86: Symbol = Symbol::new(1111u32);
    pub const keyword: Symbol = Symbol::new(1112u32);
    pub const kind: Symbol = Symbol::new(1113u32);
    pub const kreg: Symbol = Symbol::new(1114u32);
    pub const kreg0: Symbol = Symbol::new(1115u32);
    pub const label: Symbol = Symbol::new(1116u32);
    pub const label_break_value: Symbol = Symbol::new(1117u32);
    pub const lahfsahf_target_feature: Symbol = Symbol::new(1118u32);
    pub const lang: Symbol = Symbol::new(1119u32);
    pub const lang_items: Symbol = Symbol::new(1120u32);
    pub const large_assignments: Symbol = Symbol::new(1121u32);
    pub const largest_niche: Symbol = Symbol::new(1122u32);
    pub const last: Symbol = Symbol::new(1123u32);
    pub const lasx: Symbol = Symbol::new(1124u32);
    pub const late_bound_turbofishing: Symbol = Symbol::new(1125u32);
    pub const lateout: Symbol = Symbol::new(1126u32);
    pub const lazy_normalization_consts: Symbol = Symbol::new(1127u32);
    pub const lazy_type_alias: Symbol = Symbol::new(1128u32);
    pub const le: Symbol = Symbol::new(1129u32);
    pub const legacy_receiver: Symbol = Symbol::new(1130u32);
    pub const len: Symbol = Symbol::new(1131u32);
    pub const let_chains: Symbol = Symbol::new(1132u32);
    pub const let_else: Symbol = Symbol::new(1133u32);
    pub const lhs: Symbol = Symbol::new(1134u32);
    pub const lib: Symbol = Symbol::new(1135u32);
    pub const libc: Symbol = Symbol::new(1136u32);
    pub const lifetime: Symbol = Symbol::new(1137u32);
    pub const lifetime_capture_rules_2024: Symbol = Symbol::new(1138u32);
    pub const lifetimes: Symbol = Symbol::new(1139u32);
    pub const line: Symbol = Symbol::new(1140u32);
    pub const link: Symbol = Symbol::new(1141u32);
    pub const link_arg_attribute: Symbol = Symbol::new(1142u32);
    pub const link_args: Symbol = Symbol::new(1143u32);
    pub const link_cfg: Symbol = Symbol::new(1144u32);
    pub const link_dash_arg: Symbol = Symbol::new(1145u32);
    pub const link_enzyme_intrinsics: Symbol = Symbol::new(1146u32);
    pub const link_llvm_intrinsics: Symbol = Symbol::new(1147u32);
    pub const link_name: Symbol = Symbol::new(1148u32);
    pub const link_ordinal: Symbol = Symbol::new(1149u32);
    pub const link_section: Symbol = Symbol::new(1150u32);
    pub const linkage: Symbol = Symbol::new(1151u32);
    pub const linker: Symbol = Symbol::new(1152u32);
    pub const linker_info: Symbol = Symbol::new(1153u32);
    pub const linker_messages: Symbol = Symbol::new(1154u32);
    pub const linkonce: Symbol = Symbol::new(1155u32);
    pub const linkonce_odr: Symbol = Symbol::new(1156u32);
    pub const lint: Symbol = Symbol::new(1157u32);
    pub const lint_reasons: Symbol = Symbol::new(1158u32);
    pub const literal: Symbol = Symbol::new(1159u32);
    pub const little: Symbol = Symbol::new(1160u32);
    pub const big: Symbol = Symbol::new(1161u32);
    pub const load: Symbol = Symbol::new(1162u32);
    pub const loaded_from_disk: Symbol = Symbol::new(1163u32);
    pub const local: Symbol = Symbol::new(1164u32);
    pub const local_inner_macros: Symbol = Symbol::new(1165u32);
    pub const log: Symbol = Symbol::new(1166u32);
    pub const log2: Symbol = Symbol::new(1167u32);
    pub const log10: Symbol = Symbol::new(1168u32);
    pub const log_syntax: Symbol = Symbol::new(1169u32);
    pub const loongarch32: Symbol = Symbol::new(1170u32);
    pub const loongarch64: Symbol = Symbol::new(1171u32);
    pub const loongarch_target_feature: Symbol = Symbol::new(1172u32);
    pub const loop_break_value: Symbol = Symbol::new(1173u32);
    pub const loop_hints: Symbol = Symbol::new(1174u32);
    pub const loop_match: Symbol = Symbol::new(1175u32);
    pub const lr: Symbol = Symbol::new(1176u32);
    pub const lsx: Symbol = Symbol::new(1177u32);
    pub const lt: Symbol = Symbol::new(1178u32);
    pub const m68k: Symbol = Symbol::new(1179u32);
    pub const m68k_target_feature: Symbol = Symbol::new(1180u32);
    pub const mac16: Symbol = Symbol::new(1181u32);
    pub const macho: Symbol = Symbol::new(1182u32);
    pub const macro_at_most_once_rep: Symbol = Symbol::new(1183u32);
    pub const macro_attr: Symbol = Symbol::new(1184u32);
    pub const macro_attributes_in_derive_output: Symbol =
        Symbol::new(1185u32);
    pub const macro_derive: Symbol = Symbol::new(1186u32);
    pub const macro_escape: Symbol = Symbol::new(1187u32);
    pub const macro_export: Symbol = Symbol::new(1188u32);
    pub const macro_guard_matcher: Symbol = Symbol::new(1189u32);
    pub const macro_lifetime_matcher: Symbol = Symbol::new(1190u32);
    pub const macro_literal_matcher: Symbol = Symbol::new(1191u32);
    pub const macro_metavar_expr: Symbol = Symbol::new(1192u32);
    pub const macro_metavar_expr_concat: Symbol = Symbol::new(1193u32);
    pub const macro_reexport: Symbol = Symbol::new(1194u32);
    pub const macro_use: Symbol = Symbol::new(1195u32);
    pub const macro_vis_matcher: Symbol = Symbol::new(1196u32);
    pub const macroless_const_item_generic_const_args: Symbol =
        Symbol::new(1197u32);
    pub const macroless_generic_const_args: Symbol = Symbol::new(1198u32);
    pub const macros_in_extern: Symbol = Symbol::new(1199u32);
    pub const main: Symbol = Symbol::new(1200u32);
    pub const managed_boxes: Symbol = Symbol::new(1201u32);
    pub const manually_drop: Symbol = Symbol::new(1202u32);
    pub const map: Symbol = Symbol::new(1203u32);
    pub const map_err: Symbol = Symbol::new(1204u32);
    pub const marked_unchecked_type_aliases: Symbol = Symbol::new(1205u32);
    pub const marker: Symbol = Symbol::new(1206u32);
    pub const marker_trait_attr: Symbol = Symbol::new(1207u32);
    pub const masked: Symbol = Symbol::new(1208u32);
    pub const match_beginning_vert: Symbol = Symbol::new(1209u32);
    pub const match_default_bindings: Symbol = Symbol::new(1210u32);
    pub const maximum_number_nsz_f16: Symbol = Symbol::new(1211u32);
    pub const maximum_number_nsz_f32: Symbol = Symbol::new(1212u32);
    pub const maximum_number_nsz_f64: Symbol = Symbol::new(1213u32);
    pub const maximum_number_nsz_f128: Symbol = Symbol::new(1214u32);
    pub const maximumf16: Symbol = Symbol::new(1215u32);
    pub const maximumf32: Symbol = Symbol::new(1216u32);
    pub const maximumf64: Symbol = Symbol::new(1217u32);
    pub const maximumf128: Symbol = Symbol::new(1218u32);
    pub const may_dangle: Symbol = Symbol::new(1219u32);
    pub const may_unwind: Symbol = Symbol::new(1220u32);
    pub const maybe_dangling: Symbol = Symbol::new(1221u32);
    pub const maybe_uninit: Symbol = Symbol::new(1222u32);
    pub const maybe_uninit_uninit: Symbol = Symbol::new(1223u32);
    pub const maybe_uninit_zeroed: Symbol = Symbol::new(1224u32);
    pub const mem: Symbol = Symbol::new(1225u32);
    pub const mem_align_const: Symbol = Symbol::new(1226u32);
    pub const mem_discriminant: Symbol = Symbol::new(1227u32);
    pub const mem_drop: Symbol = Symbol::new(1228u32);
    pub const mem_forget: Symbol = Symbol::new(1229u32);
    pub const mem_size_const: Symbol = Symbol::new(1230u32);
    pub const mem_swap: Symbol = Symbol::new(1231u32);
    pub const mem_uninitialized: Symbol = Symbol::new(1232u32);
    pub const mem_variant_count: Symbol = Symbol::new(1233u32);
    pub const mem_zeroed: Symbol = Symbol::new(1234u32);
    pub const member_constraints: Symbol = Symbol::new(1235u32);
    pub const memory: Symbol = Symbol::new(1236u32);
    pub const memtag: Symbol = Symbol::new(1237u32);
    pub const message: Symbol = Symbol::new(1238u32);
    pub const meta: Symbol = Symbol::new(1239u32);
    pub const meta_sized: Symbol = Symbol::new(1240u32);
    pub const metadata_type: Symbol = Symbol::new(1241u32);
    pub const min_adt_const_params: Symbol = Symbol::new(1242u32);
    pub const min_const_fn: Symbol = Symbol::new(1243u32);
    pub const min_const_generics: Symbol = Symbol::new(1244u32);
    pub const min_const_unsafe_fn: Symbol = Symbol::new(1245u32);
    pub const min_exhaustive_patterns: Symbol = Symbol::new(1246u32);
    pub const min_generic_const_args: Symbol = Symbol::new(1247u32);
    pub const min_specialization: Symbol = Symbol::new(1248u32);
    pub const min_type_alias_impl_trait: Symbol = Symbol::new(1249u32);
    pub const minimum_number_nsz_f16: Symbol = Symbol::new(1250u32);
    pub const minimum_number_nsz_f32: Symbol = Symbol::new(1251u32);
    pub const minimum_number_nsz_f64: Symbol = Symbol::new(1252u32);
    pub const minimum_number_nsz_f128: Symbol = Symbol::new(1253u32);
    pub const minimumf16: Symbol = Symbol::new(1254u32);
    pub const minimumf32: Symbol = Symbol::new(1255u32);
    pub const minimumf64: Symbol = Symbol::new(1256u32);
    pub const minimumf128: Symbol = Symbol::new(1257u32);
    pub const mips: Symbol = Symbol::new(1258u32);
    pub const mips32r6: Symbol = Symbol::new(1259u32);
    pub const mips64: Symbol = Symbol::new(1260u32);
    pub const mips64r6: Symbol = Symbol::new(1261u32);
    pub const mips_target_feature: Symbol = Symbol::new(1262u32);
    pub const mir_assume: Symbol = Symbol::new(1263u32);
    pub const mir_basic_block: Symbol = Symbol::new(1264u32);
    pub const mir_call: Symbol = Symbol::new(1265u32);
    pub const mir_cast: Symbol = Symbol::new(1266u32);
    pub const mir_cast_fn_ptr_safety: Symbol = Symbol::new(1267u32);
    pub const mir_cast_kind: Symbol = Symbol::new(1268u32);
    pub const mir_cast_ptr_coercion: Symbol = Symbol::new(1269u32);
    pub const mir_cast_ptr_to_ptr: Symbol = Symbol::new(1270u32);
    pub const mir_cast_transmute: Symbol = Symbol::new(1271u32);
    pub const mir_cast_unsize: Symbol = Symbol::new(1272u32);
    pub const mir_checked: Symbol = Symbol::new(1273u32);
    pub const mir_debuginfo: Symbol = Symbol::new(1274u32);
    pub const mir_discriminant: Symbol = Symbol::new(1275u32);
    pub const mir_drop: Symbol = Symbol::new(1276u32);
    pub const mir_field: Symbol = Symbol::new(1277u32);
    pub const mir_goto: Symbol = Symbol::new(1278u32);
    pub const mir_make_place: Symbol = Symbol::new(1279u32);
    pub const mir_move: Symbol = Symbol::new(1280u32);
    pub const mir_offset: Symbol = Symbol::new(1281u32);
    pub const mir_ptr_metadata: Symbol = Symbol::new(1282u32);
    pub const mir_return: Symbol = Symbol::new(1283u32);
    pub const mir_return_to: Symbol = Symbol::new(1284u32);
    pub const mir_set_discriminant: Symbol = Symbol::new(1285u32);
    pub const mir_static: Symbol = Symbol::new(1286u32);
    pub const mir_static_mut: Symbol = Symbol::new(1287u32);
    pub const mir_storage_dead: Symbol = Symbol::new(1288u32);
    pub const mir_storage_live: Symbol = Symbol::new(1289u32);
    pub const mir_tail_call: Symbol = Symbol::new(1290u32);
    pub const mir_unreachable: Symbol = Symbol::new(1291u32);
    pub const mir_unwind_cleanup: Symbol = Symbol::new(1292u32);
    pub const mir_unwind_continue: Symbol = Symbol::new(1293u32);
    pub const mir_unwind_resume: Symbol = Symbol::new(1294u32);
    pub const mir_unwind_terminate: Symbol = Symbol::new(1295u32);
    pub const mir_unwind_terminate_reason: Symbol = Symbol::new(1296u32);
    pub const mir_unwind_unreachable: Symbol = Symbol::new(1297u32);
    pub const mir_variant: Symbol = Symbol::new(1298u32);
    pub const miri: Symbol = Symbol::new(1299u32);
    pub const misc: Symbol = Symbol::new(1300u32);
    pub const miscsr: Symbol = Symbol::new(1301u32);
    pub const mmx_reg: Symbol = Symbol::new(1302u32);
    pub const modifiers: Symbol = Symbol::new(1303u32);
    pub const module: Symbol = Symbol::new(1304u32);
    pub const module_path: Symbol = Symbol::new(1305u32);
    pub const more_maybe_bounds: Symbol = Symbol::new(1306u32);
    pub const more_qualified_paths: Symbol = Symbol::new(1307u32);
    pub const more_struct_aliases: Symbol = Symbol::new(1308u32);
    pub const movbe_target_feature: Symbol = Symbol::new(1309u32);
    pub const movdir64b_target_feature: Symbol = Symbol::new(1310u32);
    pub const movdiri_target_feature: Symbol = Symbol::new(1311u32);
    pub const move_expr: Symbol = Symbol::new(1312u32);
    pub const move_ref_pattern: Symbol = Symbol::new(1313u32);
    pub const move_size_limit: Symbol = Symbol::new(1314u32);
    pub const movrs_target_feature: Symbol = Symbol::new(1315u32);
    pub const msa: Symbol = Symbol::new(1316u32);
    pub const msp430: Symbol = Symbol::new(1317u32);
    pub const mul: Symbol = Symbol::new(1318u32);
    pub const mul_assign: Symbol = Symbol::new(1319u32);
    pub const mul_with_overflow: Symbol = Symbol::new(1320u32);
    pub const multiple_supertrait_upcastable: Symbol = Symbol::new(1321u32);
    pub const must_not_suspend: Symbol = Symbol::new(1322u32);
    pub const must_use: Symbol = Symbol::new(1323u32);
    pub const mut_preserve_binding_mode_2024: Symbol = Symbol::new(1324u32);
    pub const mut_ref: Symbol = Symbol::new(1325u32);
    pub const mut_restriction: Symbol = Symbol::new(1326u32);
    pub const mutable: Symbol = Symbol::new(1327u32);
    pub const naked: Symbol = Symbol::new(1328u32);
    pub const naked_asm: Symbol = Symbol::new(1329u32);
    pub const naked_functions: Symbol = Symbol::new(1330u32);
    pub const naked_functions_rustic_abi: Symbol = Symbol::new(1331u32);
    pub const naked_functions_target_feature: Symbol = Symbol::new(1332u32);
    pub const name: Symbol = Symbol::new(1333u32);
    pub const named_fn_trait_parameters: Symbol = Symbol::new(1334u32);
    pub const names: Symbol = Symbol::new(1335u32);
    pub const native_link_modifiers: Symbol = Symbol::new(1336u32);
    pub const native_link_modifiers_as_needed: Symbol = Symbol::new(1337u32);
    pub const native_link_modifiers_bundle: Symbol = Symbol::new(1338u32);
    pub const native_link_modifiers_verbatim: Symbol = Symbol::new(1339u32);
    pub const native_link_modifiers_whole_archive: Symbol =
        Symbol::new(1340u32);
    pub const natvis_file: Symbol = Symbol::new(1341u32);
    pub const ne: Symbol = Symbol::new(1342u32);
    pub const needs_allocator: Symbol = Symbol::new(1343u32);
    pub const needs_drop: Symbol = Symbol::new(1344u32);
    pub const needs_panic_runtime: Symbol = Symbol::new(1345u32);
    pub const neg: Symbol = Symbol::new(1346u32);
    pub const negate_unsigned: Symbol = Symbol::new(1347u32);
    pub const negative_bounds: Symbol = Symbol::new(1348u32);
    pub const negative_impls: Symbol = Symbol::new(1349u32);
    pub const neon: Symbol = Symbol::new(1350u32);
    pub const nested: Symbol = Symbol::new(1351u32);
    pub const never: Symbol = Symbol::new(1352u32);
    pub const never_patterns: Symbol = Symbol::new(1353u32);
    pub const never_returns_null_ptr: Symbol = Symbol::new(1354u32);
    pub const never_type: Symbol = Symbol::new(1355u32);
    pub const never_type_fallback: Symbol = Symbol::new(1356u32);
    pub const new: Symbol = Symbol::new(1357u32);
    pub const new_binary: Symbol = Symbol::new(1358u32);
    pub const new_debug: Symbol = Symbol::new(1359u32);
    pub const new_debug_noop: Symbol = Symbol::new(1360u32);
    pub const new_display: Symbol = Symbol::new(1361u32);
    pub const new_lower_exp: Symbol = Symbol::new(1362u32);
    pub const new_lower_hex: Symbol = Symbol::new(1363u32);
    pub const new_octal: Symbol = Symbol::new(1364u32);
    pub const new_pointer: Symbol = Symbol::new(1365u32);
    pub const new_range: Symbol = Symbol::new(1366u32);
    pub const new_unchecked: Symbol = Symbol::new(1367u32);
    pub const new_upper_exp: Symbol = Symbol::new(1368u32);
    pub const new_upper_hex: Symbol = Symbol::new(1369u32);
    pub const next: Symbol = Symbol::new(1370u32);
    pub const niko: Symbol = Symbol::new(1371u32);
    pub const nll: Symbol = Symbol::new(1372u32);
    pub const no: Symbol = Symbol::new(1373u32);
    pub const no_builtins: Symbol = Symbol::new(1374u32);
    pub const no_core: Symbol = Symbol::new(1375u32);
    pub const no_coverage: Symbol = Symbol::new(1376u32);
    pub const no_crate_inject: Symbol = Symbol::new(1377u32);
    pub const no_debug: Symbol = Symbol::new(1378u32);
    pub const no_default_passes: Symbol = Symbol::new(1379u32);
    pub const no_implicit_prelude: Symbol = Symbol::new(1380u32);
    pub const no_inline: Symbol = Symbol::new(1381u32);
    pub const no_link: Symbol = Symbol::new(1382u32);
    pub const no_main: Symbol = Symbol::new(1383u32);
    pub const no_mangle: Symbol = Symbol::new(1384u32);
    pub const no_sanitize: Symbol = Symbol::new(1385u32);
    pub const no_stack_check: Symbol = Symbol::new(1386u32);
    pub const no_std: Symbol = Symbol::new(1387u32);
    pub const nomem: Symbol = Symbol::new(1388u32);
    pub const non_ascii_idents: Symbol = Symbol::new(1389u32);
    pub const non_exhaustive: Symbol = Symbol::new(1390u32);
    pub const non_exhaustive_omitted_patterns_lint: Symbol =
        Symbol::new(1391u32);
    pub const non_lifetime_binders: Symbol = Symbol::new(1392u32);
    pub const non_modrs_mods: Symbol = Symbol::new(1393u32);
    pub const non_null: Symbol = Symbol::new(1394u32);
    pub const nonblocking: Symbol = Symbol::new(1395u32);
    pub const none: Symbol = Symbol::new(1396u32);
    pub const nontemporal_store: Symbol = Symbol::new(1397u32);
    pub const noop_method_borrow: Symbol = Symbol::new(1398u32);
    pub const noop_method_clone: Symbol = Symbol::new(1399u32);
    pub const noop_method_deref: Symbol = Symbol::new(1400u32);
    pub const noprefix: Symbol = Symbol::new(1401u32);
    pub const noreturn: Symbol = Symbol::new(1402u32);
    pub const nostack: Symbol = Symbol::new(1403u32);
    pub const not: Symbol = Symbol::new(1404u32);
    pub const notable_trait: Symbol = Symbol::new(1405u32);
    pub const note: Symbol = Symbol::new(1406u32);
    pub const null: Symbol = Symbol::new(1407u32);
    pub const nvptx64: Symbol = Symbol::new(1408u32);
    pub const nvptx_target_feature: Symbol = Symbol::new(1409u32);
    pub const object_safe_for_dispatch: Symbol = Symbol::new(1410u32);
    pub const of: Symbol = Symbol::new(1411u32);
    pub const off: Symbol = Symbol::new(1412u32);
    pub const offload: Symbol = Symbol::new(1413u32);
    pub const offload_get_num_devices: Symbol = Symbol::new(1414u32);
    pub const offload_kernel: Symbol = Symbol::new(1415u32);
    pub const offload_region: Symbol = Symbol::new(1416u32);
    pub const offset: Symbol = Symbol::new(1417u32);
    pub const offset_of_enum: Symbol = Symbol::new(1418u32);
    pub const offset_of_nested: Symbol = Symbol::new(1419u32);
    pub const offset_of_slice: Symbol = Symbol::new(1420u32);
    pub const ok_or_else: Symbol = Symbol::new(1421u32);
    pub const old_name: Symbol = Symbol::new(1422u32);
    pub const omit_gdb_pretty_printer_section: Symbol = Symbol::new(1423u32);
    pub const on: Symbol = Symbol::new(1424u32);
    pub const on_const: Symbol = Symbol::new(1425u32);
    pub const on_move: Symbol = Symbol::new(1426u32);
    pub const on_type_error: Symbol = Symbol::new(1427u32);
    pub const on_unimplemented: Symbol = Symbol::new(1428u32);
    pub const on_unknown: Symbol = Symbol::new(1429u32);
    pub const on_unmatched_args: Symbol = Symbol::new(1430u32);
    pub const opaque: Symbol = Symbol::new(1431u32);
    pub const opaque_module_name_placeholder: Symbol = Symbol::new(1432u32);
    pub const ops: Symbol = Symbol::new(1433u32);
    pub const opt_out_copy: Symbol = Symbol::new(1434u32);
    pub const optimize: Symbol = Symbol::new(1435u32);
    pub const optimize_attribute: Symbol = Symbol::new(1436u32);
    pub const optimized: Symbol = Symbol::new(1437u32);
    pub const optin_builtin_traits: Symbol = Symbol::new(1438u32);
    pub const option: Symbol = Symbol::new(1439u32);
    pub const option_env: Symbol = Symbol::new(1440u32);
    pub const options: Symbol = Symbol::new(1441u32);
    pub const or: Symbol = Symbol::new(1442u32);
    pub const or_patterns: Symbol = Symbol::new(1443u32);
    pub const ord_cmp_method: Symbol = Symbol::new(1444u32);
    pub const other: Symbol = Symbol::new(1445u32);
    pub const out: Symbol = Symbol::new(1446u32);
    pub const output: Symbol = Symbol::new(1447u32);
    pub const overflow_checks: Symbol = Symbol::new(1448u32);
    pub const overlapping_marker_traits: Symbol = Symbol::new(1449u32);
    pub const owned_box: Symbol = Symbol::new(1450u32);
    pub const packed: Symbol = Symbol::new(1451u32);
    pub const packed_bundled_libs: Symbol = Symbol::new(1452u32);
    pub const panic: Symbol = Symbol::new(1453u32);
    pub const panic_2015: Symbol = Symbol::new(1454u32);
    pub const panic_2021: Symbol = Symbol::new(1455u32);
    pub const panic_abort: Symbol = Symbol::new(1456u32);
    pub const panic_bounds_check: Symbol = Symbol::new(1457u32);
    pub const panic_cannot_unwind: Symbol = Symbol::new(1458u32);
    pub const panic_const_add_overflow: Symbol = Symbol::new(1459u32);
    pub const panic_const_async_fn_resumed: Symbol = Symbol::new(1460u32);
    pub const panic_const_async_fn_resumed_drop: Symbol =
        Symbol::new(1461u32);
    pub const panic_const_async_fn_resumed_panic: Symbol =
        Symbol::new(1462u32);
    pub const panic_const_async_gen_fn_resumed: Symbol = Symbol::new(1463u32);
    pub const panic_const_async_gen_fn_resumed_drop: Symbol =
        Symbol::new(1464u32);
    pub const panic_const_async_gen_fn_resumed_panic: Symbol =
        Symbol::new(1465u32);
    pub const panic_const_coroutine_resumed: Symbol = Symbol::new(1466u32);
    pub const panic_const_coroutine_resumed_drop: Symbol =
        Symbol::new(1467u32);
    pub const panic_const_coroutine_resumed_panic: Symbol =
        Symbol::new(1468u32);
    pub const panic_const_div_by_zero: Symbol = Symbol::new(1469u32);
    pub const panic_const_div_overflow: Symbol = Symbol::new(1470u32);
    pub const panic_const_gen_fn_none: Symbol = Symbol::new(1471u32);
    pub const panic_const_gen_fn_none_drop: Symbol = Symbol::new(1472u32);
    pub const panic_const_gen_fn_none_panic: Symbol = Symbol::new(1473u32);
    pub const panic_const_mul_overflow: Symbol = Symbol::new(1474u32);
    pub const panic_const_neg_overflow: Symbol = Symbol::new(1475u32);
    pub const panic_const_rem_by_zero: Symbol = Symbol::new(1476u32);
    pub const panic_const_rem_overflow: Symbol = Symbol::new(1477u32);
    pub const panic_const_shl_overflow: Symbol = Symbol::new(1478u32);
    pub const panic_const_shr_overflow: Symbol = Symbol::new(1479u32);
    pub const panic_const_sub_overflow: Symbol = Symbol::new(1480u32);
    pub const panic_display: Symbol = Symbol::new(1481u32);
    pub const panic_fmt: Symbol = Symbol::new(1482u32);
    pub const panic_handler: Symbol = Symbol::new(1483u32);
    pub const panic_impl: Symbol = Symbol::new(1484u32);
    pub const panic_implementation: Symbol = Symbol::new(1485u32);
    pub const panic_in_cleanup: Symbol = Symbol::new(1486u32);
    pub const panic_info: Symbol = Symbol::new(1487u32);
    pub const panic_invalid_enum_construction: Symbol = Symbol::new(1488u32);
    pub const panic_location: Symbol = Symbol::new(1489u32);
    pub const panic_misaligned_pointer_dereference: Symbol =
        Symbol::new(1490u32);
    pub const panic_nounwind: Symbol = Symbol::new(1491u32);
    pub const panic_null_pointer_dereference: Symbol = Symbol::new(1492u32);
    pub const panic_null_reference_constructed: Symbol = Symbol::new(1493u32);
    pub const panic_runtime: Symbol = Symbol::new(1494u32);
    pub const panic_str_2015: Symbol = Symbol::new(1495u32);
    pub const panic_unwind: Symbol = Symbol::new(1496u32);
    pub const panicking: Symbol = Symbol::new(1497u32);
    pub const param_attrs: Symbol = Symbol::new(1498u32);
    pub const parent_label: Symbol = Symbol::new(1499u32);
    pub const partial_cmp: Symbol = Symbol::new(1500u32);
    pub const partial_ord: Symbol = Symbol::new(1501u32);
    pub const passes: Symbol = Symbol::new(1502u32);
    pub const pat: Symbol = Symbol::new(1503u32);
    pub const pat_param: Symbol = Symbol::new(1504u32);
    pub const patchable_function_entry: Symbol = Symbol::new(1505u32);
    pub const path: Symbol = Symbol::new(1506u32);
    pub const pattern_complexity_limit: Symbol = Symbol::new(1507u32);
    pub const pattern_parentheses: Symbol = Symbol::new(1508u32);
    pub const pattern_type: Symbol = Symbol::new(1509u32);
    pub const pattern_type_range_trait: Symbol = Symbol::new(1510u32);
    pub const pattern_types: Symbol = Symbol::new(1511u32);
    pub const phantom_data: Symbol = Symbol::new(1512u32);
    pub const phase: Symbol = Symbol::new(1513u32);
    pub const pic: Symbol = Symbol::new(1514u32);
    pub const pie: Symbol = Symbol::new(1515u32);
    pub const pin_drop: Symbol = Symbol::new(1516u32);
    pub const pin_ergonomics: Symbol = Symbol::new(1517u32);
    pub const pin_v2: Symbol = Symbol::new(1518u32);
    pub const platform_intrinsics: Symbol = Symbol::new(1519u32);
    pub const plugin: Symbol = Symbol::new(1520u32);
    pub const plugin_registrar: Symbol = Symbol::new(1521u32);
    pub const plugins: Symbol = Symbol::new(1522u32);
    pub const pointee: Symbol = Symbol::new(1523u32);
    pub const pointee_sized: Symbol = Symbol::new(1524u32);
    pub const pointee_trait: Symbol = Symbol::new(1525u32);
    pub const pointer: Symbol = Symbol::new(1526u32);
    pub const poll: Symbol = Symbol::new(1527u32);
    pub const post_cleanup: Symbol = Symbol::new(1528u32);
    pub const post_dash_lto: Symbol = Symbol::new(1529u32);
    pub const postfix_match: Symbol = Symbol::new(1530u32);
    pub const powerpc: Symbol = Symbol::new(1531u32);
    pub const powerpc64: Symbol = Symbol::new(1532u32);
    pub const powerpc_target_feature: Symbol = Symbol::new(1533u32);
    pub const powf: Symbol = Symbol::new(1534u32);
    pub const powi: Symbol = Symbol::new(1535u32);
    pub const ppcf128: Symbol = Symbol::new(1536u32);
    pub const pre_dash_lto: Symbol = Symbol::new(1537u32);
    pub const precise_capturing: Symbol = Symbol::new(1538u32);
    pub const precise_capturing_in_traits: Symbol = Symbol::new(1539u32);
    pub const precise_pointer_size_matching: Symbol = Symbol::new(1540u32);
    pub const predicates: Symbol = Symbol::new(1541u32);
    pub const pref_align_of: Symbol = Symbol::new(1542u32);
    pub const prefetch_read_data: Symbol = Symbol::new(1543u32);
    pub const prefetch_read_instruction: Symbol = Symbol::new(1544u32);
    pub const prefetch_write_data: Symbol = Symbol::new(1545u32);
    pub const prefetch_write_instruction: Symbol = Symbol::new(1546u32);
    pub const prefix_nops: Symbol = Symbol::new(1547u32);
    pub const preg: Symbol = Symbol::new(1548u32);
    pub const prelude: Symbol = Symbol::new(1549u32);
    pub const prelude_import: Symbol = Symbol::new(1550u32);
    pub const preserves_flags: Symbol = Symbol::new(1551u32);
    pub const prfchw_target_feature: Symbol = Symbol::new(1552u32);
    pub const prid: Symbol = Symbol::new(1553u32);
    pub const primitive: Symbol = Symbol::new(1554u32);
    pub const print_macro: Symbol = Symbol::new(1555u32);
    pub const println_macro: Symbol = Symbol::new(1556u32);
    pub const proc_dash_macro: Symbol = Symbol::new(1557u32);
    pub const proc_macro: Symbol = Symbol::new(1558u32);
    pub const proc_macro_attribute: Symbol = Symbol::new(1559u32);
    pub const proc_macro_derive: Symbol = Symbol::new(1560u32);
    pub const proc_macro_expr: Symbol = Symbol::new(1561u32);
    pub const proc_macro_gen: Symbol = Symbol::new(1562u32);
    pub const proc_macro_hygiene: Symbol = Symbol::new(1563u32);
    pub const proc_macro_internals: Symbol = Symbol::new(1564u32);
    pub const proc_macro_mod: Symbol = Symbol::new(1565u32);
    pub const proc_macro_non_items: Symbol = Symbol::new(1566u32);
    pub const proc_macro_path_invoc: Symbol = Symbol::new(1567u32);
    pub const profiler_runtime: Symbol = Symbol::new(1568u32);
    pub const ptr: Symbol = Symbol::new(1569u32);
    pub const ptr_cast: Symbol = Symbol::new(1570u32);
    pub const ptr_cast_const: Symbol = Symbol::new(1571u32);
    pub const ptr_cast_mut: Symbol = Symbol::new(1572u32);
    pub const ptr_const_is_null: Symbol = Symbol::new(1573u32);
    pub const ptr_copy: Symbol = Symbol::new(1574u32);
    pub const ptr_copy_nonoverlapping: Symbol = Symbol::new(1575u32);
    pub const ptr_drop_in_place: Symbol = Symbol::new(1576u32);
    pub const ptr_drop_in_place_self: Symbol = Symbol::new(1577u32);
    pub const ptr_from_ref: Symbol = Symbol::new(1578u32);
    pub const ptr_guaranteed_cmp: Symbol = Symbol::new(1579u32);
    pub const ptr_is_null: Symbol = Symbol::new(1580u32);
    pub const ptr_mask: Symbol = Symbol::new(1581u32);
    pub const ptr_metadata: Symbol = Symbol::new(1582u32);
    pub const ptr_null: Symbol = Symbol::new(1583u32);
    pub const ptr_null_mut: Symbol = Symbol::new(1584u32);
    pub const ptr_offset_from: Symbol = Symbol::new(1585u32);
    pub const ptr_offset_from_unsigned: Symbol = Symbol::new(1586u32);
    pub const ptr_read: Symbol = Symbol::new(1587u32);
    pub const ptr_read_unaligned: Symbol = Symbol::new(1588u32);
    pub const ptr_replace: Symbol = Symbol::new(1589u32);
    pub const ptr_swap: Symbol = Symbol::new(1590u32);
    pub const ptr_swap_nonoverlapping: Symbol = Symbol::new(1591u32);
    pub const ptr_write: Symbol = Symbol::new(1592u32);
    pub const ptr_write_bytes: Symbol = Symbol::new(1593u32);
    pub const ptr_write_unaligned: Symbol = Symbol::new(1594u32);
    pub const ptr_write_volatile: Symbol = Symbol::new(1595u32);
    pub const pub_macro_rules: Symbol = Symbol::new(1596u32);
    pub const pub_restricted: Symbol = Symbol::new(1597u32);
    pub const public: Symbol = Symbol::new(1598u32);
    pub const pure: Symbol = Symbol::new(1599u32);
    pub const pushpop_unsafe: Symbol = Symbol::new(1600u32);
    pub const qreg: Symbol = Symbol::new(1601u32);
    pub const qreg_low4: Symbol = Symbol::new(1602u32);
    pub const qreg_low8: Symbol = Symbol::new(1603u32);
    pub const quad_precision_float: Symbol = Symbol::new(1604u32);
    pub const question_mark: Symbol = Symbol::new(1605u32);
    pub const quote: Symbol = Symbol::new(1606u32);
    pub const range_inclusive_new: Symbol = Symbol::new(1607u32);
    pub const raw_dash_dylib: Symbol = Symbol::new(1608u32);
    pub const raw_dylib: Symbol = Symbol::new(1609u32);
    pub const raw_dylib_elf: Symbol = Symbol::new(1610u32);
    pub const raw_eq: Symbol = Symbol::new(1611u32);
    pub const raw_identifiers: Symbol = Symbol::new(1612u32);
    pub const raw_ref_op: Symbol = Symbol::new(1613u32);
    pub const re_rebalance_coherence: Symbol = Symbol::new(1614u32);
    pub const read_via_copy: Symbol = Symbol::new(1615u32);
    pub const readonly: Symbol = Symbol::new(1616u32);
    pub const realloc: Symbol = Symbol::new(1617u32);
    pub const realtime: Symbol = Symbol::new(1618u32);
    pub const reason: Symbol = Symbol::new(1619u32);
    pub const reborrow: Symbol = Symbol::new(1620u32);
    pub const receiver: Symbol = Symbol::new(1621u32);
    pub const receiver_target: Symbol = Symbol::new(1622u32);
    pub const recursion_limit: Symbol = Symbol::new(1623u32);
    pub const reexport_test_harness_main: Symbol = Symbol::new(1624u32);
    pub const ref_pat_eat_one_layer_2024: Symbol = Symbol::new(1625u32);
    pub const ref_pat_eat_one_layer_2024_structural: Symbol =
        Symbol::new(1626u32);
    pub const ref_pat_everywhere: Symbol = Symbol::new(1627u32);
    pub const ref_unwind_safe_trait: Symbol = Symbol::new(1628u32);
    pub const reference: Symbol = Symbol::new(1629u32);
    pub const reflect: Symbol = Symbol::new(1630u32);
    pub const reg: Symbol = Symbol::new(1631u32);
    pub const reg16: Symbol = Symbol::new(1632u32);
    pub const reg32: Symbol = Symbol::new(1633u32);
    pub const reg64: Symbol = Symbol::new(1634u32);
    pub const reg_abcd: Symbol = Symbol::new(1635u32);
    pub const reg_addr: Symbol = Symbol::new(1636u32);
    pub const reg_byte: Symbol = Symbol::new(1637u32);
    pub const reg_data: Symbol = Symbol::new(1638u32);
    pub const reg_iw: Symbol = Symbol::new(1639u32);
    pub const reg_nonzero: Symbol = Symbol::new(1640u32);
    pub const reg_pair: Symbol = Symbol::new(1641u32);
    pub const reg_ptr: Symbol = Symbol::new(1642u32);
    pub const reg_upper: Symbol = Symbol::new(1643u32);
    pub const register_attr: Symbol = Symbol::new(1644u32);
    pub const register_attribute_tool: Symbol = Symbol::new(1645u32);
    pub const register_lint_tool: Symbol = Symbol::new(1646u32);
    pub const register_tool: Symbol = Symbol::new(1647u32);
    pub const relaxed_adts: Symbol = Symbol::new(1648u32);
    pub const relaxed_struct_unsize: Symbol = Symbol::new(1649u32);
    pub const relocation_model: Symbol = Symbol::new(1650u32);
    pub const rem: Symbol = Symbol::new(1651u32);
    pub const rem_assign: Symbol = Symbol::new(1652u32);
    pub const repr: Symbol = Symbol::new(1653u32);
    pub const repr128: Symbol = Symbol::new(1654u32);
    pub const repr_align: Symbol = Symbol::new(1655u32);
    pub const repr_align_enum: Symbol = Symbol::new(1656u32);
    pub const repr_packed: Symbol = Symbol::new(1657u32);
    pub const repr_simd: Symbol = Symbol::new(1658u32);
    pub const repr_transparent: Symbol = Symbol::new(1659u32);
    pub const require: Symbol = Symbol::new(1660u32);
    pub const reserve_x18: Symbol = Symbol::new(1661u32);
    pub const residual: Symbol = Symbol::new(1662u32);
    pub const result: Symbol = Symbol::new(1663u32);
    pub const result_ffi_guarantees: Symbol = Symbol::new(1664u32);
    pub const resumable_breakpoint: Symbol = Symbol::new(1665u32);
    pub const return_address: Symbol = Symbol::new(1666u32);
    pub const return_position_impl_trait_in_trait: Symbol =
        Symbol::new(1667u32);
    pub const return_type_notation: Symbol = Symbol::new(1668u32);
    pub const right_arrow: Symbol = Symbol::new(1669u32);
    pub const riscv32: Symbol = Symbol::new(1670u32);
    pub const riscv64: Symbol = Symbol::new(1671u32);
    pub const riscv_target_feature: Symbol = Symbol::new(1672u32);
    pub const rlib: Symbol = Symbol::new(1673u32);
    pub const ropi: Symbol = Symbol::new(1674u32);
    pub const ropi_rwpi: Symbol = Symbol::new(1675u32);
    pub const rotate_left: Symbol = Symbol::new(1676u32);
    pub const rotate_right: Symbol = Symbol::new(1677u32);
    pub const round: Symbol = Symbol::new(1678u32);
    pub const round_ties_even: Symbol = Symbol::new(1679u32);
    pub const rtm_target_feature: Symbol = Symbol::new(1680u32);
    pub const runtime: Symbol = Symbol::new(1681u32);
    pub const rust: Symbol = Symbol::new(1682u32);
    pub const rust_2015: Symbol = Symbol::new(1683u32);
    pub const rust_2018: Symbol = Symbol::new(1684u32);
    pub const rust_2018_preview: Symbol = Symbol::new(1685u32);
    pub const rust_2021: Symbol = Symbol::new(1686u32);
    pub const rust_2024: Symbol = Symbol::new(1687u32);
    pub const rust_analyzer: Symbol = Symbol::new(1688u32);
    pub const rust_begin_unwind: Symbol = Symbol::new(1689u32);
    pub const rust_cold_cc: Symbol = Symbol::new(1690u32);
    pub const rust_dash_call: Symbol = Symbol::new(1691u32);
    pub const rust_eh_personality: Symbol = Symbol::new(1692u32);
    pub const rust_future: Symbol = Symbol::new(1693u32);
    pub const rust_logo: Symbol = Symbol::new(1694u32);
    pub const rust_out: Symbol = Symbol::new(1695u32);
    pub const rust_preserve_none_cc: Symbol = Symbol::new(1696u32);
    pub const rust_tail_cc: Symbol = Symbol::new(1697u32);
    pub const rustc: Symbol = Symbol::new(1698u32);
    pub const rustc_abi: Symbol = Symbol::new(1699u32);
    pub const rustc_align: Symbol = Symbol::new(1700u32);
    pub const rustc_align_static: Symbol = Symbol::new(1701u32);
    pub const rustc_allocator: Symbol = Symbol::new(1702u32);
    pub const rustc_allocator_zeroed: Symbol = Symbol::new(1703u32);
    pub const rustc_allocator_zeroed_variant: Symbol = Symbol::new(1704u32);
    pub const rustc_allow_const_fn_unstable: Symbol = Symbol::new(1705u32);
    pub const rustc_allow_incoherent_impl: Symbol = Symbol::new(1706u32);
    pub const rustc_allow_lifetime_dependent_specialization: Symbol =
        Symbol::new(1707u32);
    pub const rustc_allowed_through_unstable_modules: Symbol =
        Symbol::new(1708u32);
    pub const rustc_always_gca: Symbol = Symbol::new(1709u32);
    pub const rustc_assert_variance: Symbol = Symbol::new(1710u32);
    pub const rustc_attrs: Symbol = Symbol::new(1711u32);
    pub const rustc_autodiff: Symbol = Symbol::new(1712u32);
    pub const rustc_builtin_macro: Symbol = Symbol::new(1713u32);
    pub const rustc_canonical_symbol: Symbol = Symbol::new(1714u32);
    pub const rustc_capture_analysis: Symbol = Symbol::new(1715u32);
    pub const rustc_clean: Symbol = Symbol::new(1716u32);
    pub const rustc_coherence_is_core: Symbol = Symbol::new(1717u32);
    pub const rustc_coinductive: Symbol = Symbol::new(1718u32);
    pub const rustc_comptime: Symbol = Symbol::new(1719u32);
    pub const rustc_confusables: Symbol = Symbol::new(1720u32);
    pub const rustc_const_stable: Symbol = Symbol::new(1721u32);
    pub const rustc_const_stable_indirect: Symbol = Symbol::new(1722u32);
    pub const rustc_const_unstable: Symbol = Symbol::new(1723u32);
    pub const rustc_conversion_suggestion: Symbol = Symbol::new(1724u32);
    pub const rustc_deallocator: Symbol = Symbol::new(1725u32);
    pub const rustc_default_body_unstable: Symbol = Symbol::new(1726u32);
    pub const rustc_delayed_bug_from_inside_query: Symbol =
        Symbol::new(1727u32);
    pub const rustc_deny_explicit_impl: Symbol = Symbol::new(1728u32);
    pub const rustc_deprecated_safe_2024: Symbol = Symbol::new(1729u32);
    pub const rustc_diagnostic_item: Symbol = Symbol::new(1730u32);
    pub const rustc_diagnostic_macros: Symbol = Symbol::new(1731u32);
    pub const rustc_diagnostic_opaque: Symbol = Symbol::new(1732u32);
    pub const rustc_do_not_const_check: Symbol = Symbol::new(1733u32);
    pub const rustc_doc_primitive: Symbol = Symbol::new(1734u32);
    pub const rustc_driver: Symbol = Symbol::new(1735u32);
    pub const rustc_dummy: Symbol = Symbol::new(1736u32);
    pub const rustc_dump_clauses: Symbol = Symbol::new(1737u32);
    pub const rustc_dump_def_parents: Symbol = Symbol::new(1738u32);
    pub const rustc_dump_def_path: Symbol = Symbol::new(1739u32);
    pub const rustc_dump_generics: Symbol = Symbol::new(1740u32);
    pub const rustc_dump_hidden_type_of_opaques: Symbol =
        Symbol::new(1741u32);
    pub const rustc_dump_inferred_outlives: Symbol = Symbol::new(1742u32);
    pub const rustc_dump_item_bounds: Symbol = Symbol::new(1743u32);
    pub const rustc_dump_layout: Symbol = Symbol::new(1744u32);
    pub const rustc_dump_object_lifetime_defaults: Symbol =
        Symbol::new(1745u32);
    pub const rustc_dump_symbol_name: Symbol = Symbol::new(1746u32);
    pub const rustc_dump_user_args: Symbol = Symbol::new(1747u32);
    pub const rustc_dump_variances: Symbol = Symbol::new(1748u32);
    pub const rustc_dump_variances_of_opaques: Symbol = Symbol::new(1749u32);
    pub const rustc_dump_vtable: Symbol = Symbol::new(1750u32);
    pub const rustc_dyn_incompatible_trait: Symbol = Symbol::new(1751u32);
    pub const rustc_effective_visibility: Symbol = Symbol::new(1752u32);
    pub const rustc_eii_foreign_item: Symbol = Symbol::new(1753u32);
    pub const rustc_evaluate_where_clauses: Symbol = Symbol::new(1754u32);
    pub const rustc_expected_cgu_reuse: Symbol = Symbol::new(1755u32);
    pub const rustc_force_inline: Symbol = Symbol::new(1756u32);
    pub const rustc_has_incoherent_inherent_impls: Symbol =
        Symbol::new(1757u32);
    pub const rustc_if_this_changed: Symbol = Symbol::new(1758u32);
    pub const rustc_inherit_overflow_checks: Symbol = Symbol::new(1759u32);
    pub const rustc_insignificant_dtor: Symbol = Symbol::new(1760u32);
    pub const rustc_intrinsic: Symbol = Symbol::new(1761u32);
    pub const rustc_intrinsic_const_stable_indirect: Symbol =
        Symbol::new(1762u32);
    pub const rustc_legacy_const_generics: Symbol = Symbol::new(1763u32);
    pub const rustc_lint_opt_deny_field_access: Symbol = Symbol::new(1764u32);
    pub const rustc_lint_opt_ty: Symbol = Symbol::new(1765u32);
    pub const rustc_lint_query_instability: Symbol = Symbol::new(1766u32);
    pub const rustc_lint_untracked_query_information: Symbol =
        Symbol::new(1767u32);
    pub const rustc_macro_transparency: Symbol = Symbol::new(1768u32);
    pub const rustc_main: Symbol = Symbol::new(1769u32);
    pub const rustc_mir: Symbol = Symbol::new(1770u32);
    pub const rustc_must_implement_one_of: Symbol = Symbol::new(1771u32);
    pub const rustc_must_match_exhaustively: Symbol = Symbol::new(1772u32);
    pub const rustc_no_implicit_autorefs: Symbol = Symbol::new(1773u32);
    pub const rustc_no_implicit_bounds: Symbol = Symbol::new(1774u32);
    pub const rustc_no_mir_inline: Symbol = Symbol::new(1775u32);
    pub const rustc_no_writable: Symbol = Symbol::new(1776u32);
    pub const rustc_non_const_trait_method: Symbol = Symbol::new(1777u32);
    pub const rustc_nonnull_optimization_guaranteed: Symbol =
        Symbol::new(1778u32);
    pub const rustc_nounwind: Symbol = Symbol::new(1779u32);
    pub const rustc_objc_class: Symbol = Symbol::new(1780u32);
    pub const rustc_objc_selector: Symbol = Symbol::new(1781u32);
    pub const rustc_offload_kernel: Symbol = Symbol::new(1782u32);
    pub const rustc_on_unimplemented: Symbol = Symbol::new(1783u32);
    pub const rustc_panics_when_zero: Symbol = Symbol::new(1784u32);
    pub const rustc_paren_sugar: Symbol = Symbol::new(1785u32);
    pub const rustc_partition_codegened: Symbol = Symbol::new(1786u32);
    pub const rustc_partition_reused: Symbol = Symbol::new(1787u32);
    pub const rustc_pass_by_value: Symbol = Symbol::new(1788u32);
    pub const rustc_pass_indirectly_in_non_rustic_abis: Symbol =
        Symbol::new(1789u32);
    pub const rustc_peek: Symbol = Symbol::new(1790u32);
    pub const rustc_peek_liveness: Symbol = Symbol::new(1791u32);
    pub const rustc_peek_maybe_init: Symbol = Symbol::new(1792u32);
    pub const rustc_peek_maybe_uninit: Symbol = Symbol::new(1793u32);
    pub const rustc_preserve_ub_checks: Symbol = Symbol::new(1794u32);
    pub const rustc_pretty_live_locals: Symbol = Symbol::new(1795u32);
    pub const rustc_pretty_precise_liveness: Symbol = Symbol::new(1796u32);
    pub const rustc_pretty_transitive_live_locals: Symbol =
        Symbol::new(1797u32);
    pub const rustc_private: Symbol = Symbol::new(1798u32);
    pub const rustc_proc_macro_decls: Symbol = Symbol::new(1799u32);
    pub const rustc_promotable: Symbol = Symbol::new(1800u32);
    pub const rustc_pub_transparent: Symbol = Symbol::new(1801u32);
    pub const rustc_reallocator: Symbol = Symbol::new(1802u32);
    pub const rustc_regions: Symbol = Symbol::new(1803u32);
    pub const rustc_scalable_vector: Symbol = Symbol::new(1804u32);
    pub const rustc_should_not_be_called_on_const_items: Symbol =
        Symbol::new(1805u32);
    pub const rustc_show_spans: Symbol = Symbol::new(1806u32);
    pub const rustc_simd_monomorphize_lane_limit: Symbol =
        Symbol::new(1807u32);
    pub const rustc_skip_during_method_dispatch: Symbol =
        Symbol::new(1808u32);
    pub const rustc_specialization_trait: Symbol = Symbol::new(1809u32);
    pub const rustc_splat: Symbol = Symbol::new(1810u32);
    pub const rustc_std_internal_symbol: Symbol = Symbol::new(1811u32);
    pub const rustc_strict_coherence: Symbol = Symbol::new(1812u32);
    pub const rustc_test_marker: Symbol = Symbol::new(1813u32);
    pub const rustc_then_this_would_need: Symbol = Symbol::new(1814u32);
    pub const rustc_trivial_field_reads: Symbol = Symbol::new(1815u32);
    pub const rustc_unchecked_type_alias: Symbol = Symbol::new(1816u32);
    pub const rustc_unroll: Symbol = Symbol::new(1817u32);
    pub const rustdoc: Symbol = Symbol::new(1818u32);
    pub const rustdoc_internals: Symbol = Symbol::new(1819u32);
    pub const rustdoc_missing_doc_code_examples: Symbol =
        Symbol::new(1820u32);
    pub const rustdoc_skip_body: Symbol = Symbol::new(1821u32);
    pub const rustfmt: Symbol = Symbol::new(1822u32);
    pub const rvalue_static_promotion: Symbol = Symbol::new(1823u32);
    pub const rvector: Symbol = Symbol::new(1824u32);
    pub const rwpi: Symbol = Symbol::new(1825u32);
    pub const s32c1i: Symbol = Symbol::new(1826u32);
    pub const s390x: Symbol = Symbol::new(1827u32);
    pub const s390x_target_feature: Symbol = Symbol::new(1828u32);
    pub const s390x_target_feature_vector: Symbol = Symbol::new(1829u32);
    pub const safestack: Symbol = Symbol::new(1830u32);
    pub const safety: Symbol = Symbol::new(1831u32);
    pub const sanitize: Symbol = Symbol::new(1832u32);
    pub const sanitizer_cfi_generalize_pointers: Symbol =
        Symbol::new(1833u32);
    pub const sanitizer_cfi_normalize_integers: Symbol = Symbol::new(1834u32);
    pub const sanitizer_runtime: Symbol = Symbol::new(1835u32);
    pub const saturating_add: Symbol = Symbol::new(1836u32);
    pub const saturating_sub: Symbol = Symbol::new(1837u32);
    pub const sdylib: Symbol = Symbol::new(1838u32);
    pub const search_unbox: Symbol = Symbol::new(1839u32);
    pub const section: Symbol = Symbol::new(1840u32);
    pub const select_unpredictable: Symbol = Symbol::new(1841u32);
    pub const self_in_typedefs: Symbol = Symbol::new(1842u32);
    pub const self_struct_ctor: Symbol = Symbol::new(1843u32);
    pub const semiopaque: Symbol = Symbol::new(1844u32);
    pub const sgpr32: Symbol = Symbol::new(1845u32);
    pub const sgpr64: Symbol = Symbol::new(1846u32);
    pub const sgpr96: Symbol = Symbol::new(1847u32);
    pub const sgpr128: Symbol = Symbol::new(1848u32);
    pub const sgpr256: Symbol = Symbol::new(1849u32);
    pub const sgpr512: Symbol = Symbol::new(1850u32);
    pub const sha2: Symbol = Symbol::new(1851u32);
    pub const sha3: Symbol = Symbol::new(1852u32);
    pub const sha512_sm_x86: Symbol = Symbol::new(1853u32);
    pub const shadow_call_stack: Symbol = Symbol::new(1854u32);
    pub const shallow: Symbol = Symbol::new(1855u32);
    pub const shl: Symbol = Symbol::new(1856u32);
    pub const shl_assign: Symbol = Symbol::new(1857u32);
    pub const shorter_tail_lifetimes: Symbol = Symbol::new(1858u32);
    pub const should_not_be_called_on_const_items: Symbol =
        Symbol::new(1859u32);
    pub const should_panic: Symbol = Symbol::new(1860u32);
    pub const show: Symbol = Symbol::new(1861u32);
    pub const shr: Symbol = Symbol::new(1862u32);
    pub const shr_assign: Symbol = Symbol::new(1863u32);
    pub const signed: Symbol = Symbol::new(1864u32);
    pub const simd: Symbol = Symbol::new(1865u32);
    pub const simd_add: Symbol = Symbol::new(1866u32);
    pub const simd_and: Symbol = Symbol::new(1867u32);
    pub const simd_arith_offset: Symbol = Symbol::new(1868u32);
    pub const simd_as: Symbol = Symbol::new(1869u32);
    pub const simd_bitmask: Symbol = Symbol::new(1870u32);
    pub const simd_bitreverse: Symbol = Symbol::new(1871u32);
    pub const simd_bswap: Symbol = Symbol::new(1872u32);
    pub const simd_carryless_mul: Symbol = Symbol::new(1873u32);
    pub const simd_cast: Symbol = Symbol::new(1874u32);
    pub const simd_cast_ptr: Symbol = Symbol::new(1875u32);
    pub const simd_ceil: Symbol = Symbol::new(1876u32);
    pub const simd_ctlz: Symbol = Symbol::new(1877u32);
    pub const simd_ctpop: Symbol = Symbol::new(1878u32);
    pub const simd_cttz: Symbol = Symbol::new(1879u32);
    pub const simd_div: Symbol = Symbol::new(1880u32);
    pub const simd_eq: Symbol = Symbol::new(1881u32);
    pub const simd_expose_provenance: Symbol = Symbol::new(1882u32);
    pub const simd_extract: Symbol = Symbol::new(1883u32);
    pub const simd_extract_dyn: Symbol = Symbol::new(1884u32);
    pub const simd_fabs: Symbol = Symbol::new(1885u32);
    pub const simd_fcos: Symbol = Symbol::new(1886u32);
    pub const simd_fexp: Symbol = Symbol::new(1887u32);
    pub const simd_fexp2: Symbol = Symbol::new(1888u32);
    pub const simd_ffi: Symbol = Symbol::new(1889u32);
    pub const simd_flog: Symbol = Symbol::new(1890u32);
    pub const simd_flog2: Symbol = Symbol::new(1891u32);
    pub const simd_flog10: Symbol = Symbol::new(1892u32);
    pub const simd_floor: Symbol = Symbol::new(1893u32);
    pub const simd_fma: Symbol = Symbol::new(1894u32);
    pub const simd_fsin: Symbol = Symbol::new(1895u32);
    pub const simd_fsqrt: Symbol = Symbol::new(1896u32);
    pub const simd_funnel_shl: Symbol = Symbol::new(1897u32);
    pub const simd_funnel_shr: Symbol = Symbol::new(1898u32);
    pub const simd_gather: Symbol = Symbol::new(1899u32);
    pub const simd_ge: Symbol = Symbol::new(1900u32);
    pub const simd_gt: Symbol = Symbol::new(1901u32);
    pub const simd_insert: Symbol = Symbol::new(1902u32);
    pub const simd_insert_dyn: Symbol = Symbol::new(1903u32);
    pub const simd_le: Symbol = Symbol::new(1904u32);
    pub const simd_lt: Symbol = Symbol::new(1905u32);
    pub const simd_masked_load: Symbol = Symbol::new(1906u32);
    pub const simd_masked_store: Symbol = Symbol::new(1907u32);
    pub const simd_maximum_number_nsz: Symbol = Symbol::new(1908u32);
    pub const simd_minimum_number_nsz: Symbol = Symbol::new(1909u32);
    pub const simd_mul: Symbol = Symbol::new(1910u32);
    pub const simd_ne: Symbol = Symbol::new(1911u32);
    pub const simd_neg: Symbol = Symbol::new(1912u32);
    pub const simd_or: Symbol = Symbol::new(1913u32);
    pub const simd_reduce_add_ordered: Symbol = Symbol::new(1914u32);
    pub const simd_reduce_add_unordered: Symbol = Symbol::new(1915u32);
    pub const simd_reduce_all: Symbol = Symbol::new(1916u32);
    pub const simd_reduce_and: Symbol = Symbol::new(1917u32);
    pub const simd_reduce_any: Symbol = Symbol::new(1918u32);
    pub const simd_reduce_max: Symbol = Symbol::new(1919u32);
    pub const simd_reduce_min: Symbol = Symbol::new(1920u32);
    pub const simd_reduce_mul_ordered: Symbol = Symbol::new(1921u32);
    pub const simd_reduce_mul_unordered: Symbol = Symbol::new(1922u32);
    pub const simd_reduce_or: Symbol = Symbol::new(1923u32);
    pub const simd_reduce_xor: Symbol = Symbol::new(1924u32);
    pub const simd_relaxed_fma: Symbol = Symbol::new(1925u32);
    pub const simd_rem: Symbol = Symbol::new(1926u32);
    pub const simd_round: Symbol = Symbol::new(1927u32);
    pub const simd_round_ties_even: Symbol = Symbol::new(1928u32);
    pub const simd_saturating_add: Symbol = Symbol::new(1929u32);
    pub const simd_saturating_sub: Symbol = Symbol::new(1930u32);
    pub const simd_scatter: Symbol = Symbol::new(1931u32);
    pub const simd_select: Symbol = Symbol::new(1932u32);
    pub const simd_select_bitmask: Symbol = Symbol::new(1933u32);
    pub const simd_shl: Symbol = Symbol::new(1934u32);
    pub const simd_shr: Symbol = Symbol::new(1935u32);
    pub const simd_shuffle: Symbol = Symbol::new(1936u32);
    pub const simd_shuffle_const_generic: Symbol = Symbol::new(1937u32);
    pub const simd_splat: Symbol = Symbol::new(1938u32);
    pub const simd_sub: Symbol = Symbol::new(1939u32);
    pub const simd_trunc: Symbol = Symbol::new(1940u32);
    pub const simd_with_exposed_provenance: Symbol = Symbol::new(1941u32);
    pub const simd_xor: Symbol = Symbol::new(1942u32);
    pub const sin: Symbol = Symbol::new(1943u32);
    pub const since: Symbol = Symbol::new(1944u32);
    pub const size: Symbol = Symbol::new(1945u32);
    pub const size_of: Symbol = Symbol::new(1946u32);
    pub const size_of_type_id: Symbol = Symbol::new(1947u32);
    pub const size_of_val: Symbol = Symbol::new(1948u32);
    pub const sized: Symbol = Symbol::new(1949u32);
    pub const sized_hierarchy: Symbol = Symbol::new(1950u32);
    pub const slice: Symbol = Symbol::new(1951u32);
    pub const slice_from_raw_parts: Symbol = Symbol::new(1952u32);
    pub const slice_from_raw_parts_mut: Symbol = Symbol::new(1953u32);
    pub const slice_get_unchecked: Symbol = Symbol::new(1954u32);
    pub const slice_len_fn: Symbol = Symbol::new(1955u32);
    pub const slice_patterns: Symbol = Symbol::new(1956u32);
    pub const slicing_syntax: Symbol = Symbol::new(1957u32);
    pub const soft_float: Symbol = Symbol::new(1958u32);
    pub const sparc: Symbol = Symbol::new(1959u32);
    pub const sparc64: Symbol = Symbol::new(1960u32);
    pub const sparc_target_feature: Symbol = Symbol::new(1961u32);
    pub const spe_acc: Symbol = Symbol::new(1962u32);
    pub const specialization: Symbol = Symbol::new(1963u32);
    pub const speed: Symbol = Symbol::new(1964u32);
    pub const spirv: Symbol = Symbol::new(1965u32);
    pub const splat: Symbol = Symbol::new(1966u32);
    pub const splatted_index: Symbol = Symbol::new(1967u32);
    pub const spotlight: Symbol = Symbol::new(1968u32);
    pub const sqrt: Symbol = Symbol::new(1969u32);
    pub const sreg: Symbol = Symbol::new(1970u32);
    pub const sreg_low16: Symbol = Symbol::new(1971u32);
    pub const sse: Symbol = Symbol::new(1972u32);
    pub const sse2: Symbol = Symbol::new(1973u32);
    pub const sse4a_target_feature: Symbol = Symbol::new(1974u32);
    pub const stable: Symbol = Symbol::new(1975u32);
    pub const staged_api: Symbol = Symbol::new(1976u32);
    pub const start: Symbol = Symbol::new(1977u32);
    pub const state: Symbol = Symbol::new(1978u32);
    pub const static_align: Symbol = Symbol::new(1979u32);
    pub const static_in_const: Symbol = Symbol::new(1980u32);
    pub const static_nobundle: Symbol = Symbol::new(1981u32);
    pub const static_recursion: Symbol = Symbol::new(1982u32);
    pub const staticlib: Symbol = Symbol::new(1983u32);
    pub const std: Symbol = Symbol::new(1984u32);
    pub const std_lib_injection: Symbol = Symbol::new(1985u32);
    pub const std_panic: Symbol = Symbol::new(1986u32);
    pub const std_panic_2015_macro: Symbol = Symbol::new(1987u32);
    pub const std_panic_macro: Symbol = Symbol::new(1988u32);
    pub const stmt: Symbol = Symbol::new(1989u32);
    pub const stmt_expr_attributes: Symbol = Symbol::new(1990u32);
    pub const stop_after_dataflow: Symbol = Symbol::new(1991u32);
    pub const store: Symbol = Symbol::new(1992u32);
    pub const str: Symbol = Symbol::new(1993u32);
    pub const str_from_utf8: Symbol = Symbol::new(1994u32);
    pub const str_from_utf8_mut: Symbol = Symbol::new(1995u32);
    pub const str_from_utf8_unchecked: Symbol = Symbol::new(1996u32);
    pub const str_from_utf8_unchecked_mut: Symbol = Symbol::new(1997u32);
    pub const str_inherent_from_utf8: Symbol = Symbol::new(1998u32);
    pub const str_inherent_from_utf8_mut: Symbol = Symbol::new(1999u32);
    pub const str_inherent_from_utf8_unchecked: Symbol = Symbol::new(2000u32);
    pub const str_inherent_from_utf8_unchecked_mut: Symbol =
        Symbol::new(2001u32);
    pub const strict_provenance_lints: Symbol = Symbol::new(2002u32);
    pub const string_deref_patterns: Symbol = Symbol::new(2003u32);
    pub const stringify: Symbol = Symbol::new(2004u32);
    pub const struct_field_attributes: Symbol = Symbol::new(2005u32);
    pub const struct_inherit: Symbol = Symbol::new(2006u32);
    pub const struct_variant: Symbol = Symbol::new(2007u32);
    pub const structural_match: Symbol = Symbol::new(2008u32);
    pub const structural_peq: Symbol = Symbol::new(2009u32);
    pub const sub: Symbol = Symbol::new(2010u32);
    pub const sub_assign: Symbol = Symbol::new(2011u32);
    pub const sub_with_overflow: Symbol = Symbol::new(2012u32);
    pub const suggestion: Symbol = Symbol::new(2013u32);
    pub const super_let: Symbol = Symbol::new(2014u32);
    pub const supertrait_item_shadowing: Symbol = Symbol::new(2015u32);
    pub const sve: Symbol = Symbol::new(2016u32);
    pub const sve_cast: Symbol = Symbol::new(2017u32);
    pub const sve_tuple_create2: Symbol = Symbol::new(2018u32);
    pub const sve_tuple_create3: Symbol = Symbol::new(2019u32);
    pub const sve_tuple_create4: Symbol = Symbol::new(2020u32);
    pub const sve_tuple_get: Symbol = Symbol::new(2021u32);
    pub const sve_tuple_set: Symbol = Symbol::new(2022u32);
    pub const sym: Symbol = Symbol::new(2023u32);
    pub const sync: Symbol = Symbol::new(2024u32);
    pub const synthetic: Symbol = Symbol::new(2025u32);
    pub const t32: Symbol = Symbol::new(2026u32);
    pub const target: Symbol = Symbol::new(2027u32);
    pub const target_abi: Symbol = Symbol::new(2028u32);
    pub const target_arch: Symbol = Symbol::new(2029u32);
    pub const target_endian: Symbol = Symbol::new(2030u32);
    pub const target_env: Symbol = Symbol::new(2031u32);
    pub const target_family: Symbol = Symbol::new(2032u32);
    pub const target_feature: Symbol = Symbol::new(2033u32);
    pub const target_feature_11: Symbol = Symbol::new(2034u32);
    pub const target_feature_inline_always: Symbol = Symbol::new(2035u32);
    pub const target_has_atomic: Symbol = Symbol::new(2036u32);
    pub const target_has_atomic_load_store: Symbol = Symbol::new(2037u32);
    pub const target_has_atomic_primitive_alignment: Symbol =
        Symbol::new(2038u32);
    pub const target_has_reliable_f16: Symbol = Symbol::new(2039u32);
    pub const target_has_reliable_f16_math: Symbol = Symbol::new(2040u32);
    pub const target_has_reliable_f16b: Symbol = Symbol::new(2041u32);
    pub const target_has_reliable_f128: Symbol = Symbol::new(2042u32);
    pub const target_has_reliable_f128_math: Symbol = Symbol::new(2043u32);
    pub const target_has_threads: Symbol = Symbol::new(2044u32);
    pub const target_object_format: Symbol = Symbol::new(2045u32);
    pub const target_os: Symbol = Symbol::new(2046u32);
    pub const target_pointer_width: Symbol = Symbol::new(2047u32);
    pub const target_thread_local: Symbol = Symbol::new(2048u32);
    pub const target_vendor: Symbol = Symbol::new(2049u32);
    pub const tbm_target_feature: Symbol = Symbol::new(2050u32);
    pub const termination: Symbol = Symbol::new(2051u32);
    pub const termination_trait: Symbol = Symbol::new(2052u32);
    pub const termination_trait_test: Symbol = Symbol::new(2053u32);
    pub const test: Symbol = Symbol::new(2054u32);
    pub const test_2018_feature: Symbol = Symbol::new(2055u32);
    pub const test_accepted_feature: Symbol = Symbol::new(2056u32);
    pub const test_binder_constraints: Symbol = Symbol::new(2057u32);
    pub const test_case: Symbol = Symbol::new(2058u32);
    pub const test_incomplete_feature: Symbol = Symbol::new(2059u32);
    pub const test_removed_feature: Symbol = Symbol::new(2060u32);
    pub const test_runner: Symbol = Symbol::new(2061u32);
    pub const test_unstable_lint: Symbol = Symbol::new(2062u32);
    pub const this: Symbol = Symbol::new(2063u32);
    pub const thread: Symbol = Symbol::new(2064u32);
    pub const thread_local: Symbol = Symbol::new(2065u32);
    pub const threadptr: Symbol = Symbol::new(2066u32);
    pub const three_way_compare: Symbol = Symbol::new(2067u32);
    pub const thumb2: Symbol = Symbol::new(2068u32);
    pub const thumb_mode: Symbol = Symbol::new(2069u32);
    pub const time: Symbol = Symbol::new(2070u32);
    pub const tmm_reg: Symbol = Symbol::new(2071u32);
    pub const to_owned_method: Symbol = Symbol::new(2072u32);
    pub const to_string: Symbol = Symbol::new(2073u32);
    pub const to_vec: Symbol = Symbol::new(2074u32);
    pub const todo_macro: Symbol = Symbol::new(2075u32);
    pub const tool_attributes: Symbol = Symbol::new(2076u32);
    pub const tool_lints: Symbol = Symbol::new(2077u32);
    pub const trace_macros: Symbol = Symbol::new(2078u32);
    pub const track_caller: Symbol = Symbol::new(2079u32);
    pub const trait_alias: Symbol = Symbol::new(2080u32);
    pub const trait_ty: Symbol = Symbol::new(2081u32);
    pub const trait_upcasting: Symbol = Symbol::new(2082u32);
    pub const transmute: Symbol = Symbol::new(2083u32);
    pub const transmute_generic_consts: Symbol = Symbol::new(2084u32);
    pub const transmute_opts: Symbol = Symbol::new(2085u32);
    pub const transmute_trait: Symbol = Symbol::new(2086u32);
    pub const transmute_unchecked: Symbol = Symbol::new(2087u32);
    pub const transparent: Symbol = Symbol::new(2088u32);
    pub const transparent_enums: Symbol = Symbol::new(2089u32);
    pub const transparent_unions: Symbol = Symbol::new(2090u32);
    pub const trivial_bounds: Symbol = Symbol::new(2091u32);
    pub const trivial_clone: Symbol = Symbol::new(2092u32);
    pub const trunc: Symbol = Symbol::new(2093u32);
    pub const try_as_dyn: Symbol = Symbol::new(2094u32);
    pub const try_blocks: Symbol = Symbol::new(2095u32);
    pub const try_blocks_heterogeneous: Symbol = Symbol::new(2096u32);
    pub const try_capture: Symbol = Symbol::new(2097u32);
    pub const try_from: Symbol = Symbol::new(2098u32);
    pub const try_into: Symbol = Symbol::new(2099u32);
    pub const try_trait_v2: Symbol = Symbol::new(2100u32);
    pub const try_trait_v2_residual: Symbol = Symbol::new(2101u32);
    pub const try_update: Symbol = Symbol::new(2102u32);
    pub const tt: Symbol = Symbol::new(2103u32);
    pub const tuple: Symbol = Symbol::new(2104u32);
    pub const tuple_indexing: Symbol = Symbol::new(2105u32);
    pub const tuple_trait: Symbol = Symbol::new(2106u32);
    pub const two_phase: Symbol = Symbol::new(2107u32);
    pub const ty: Symbol = Symbol::new(2108u32);
    pub const type_alias_enum_variants: Symbol = Symbol::new(2109u32);
    pub const type_alias_impl_trait: Symbol = Symbol::new(2110u32);
    pub const type_ascription: Symbol = Symbol::new(2111u32);
    pub const type_changing_struct_update: Symbol = Symbol::new(2112u32);
    pub const type_id: Symbol = Symbol::new(2113u32);
    pub const type_id_array_len: Symbol = Symbol::new(2114u32);
    pub const type_id_element_ty: Symbol = Symbol::new(2115u32);
    pub const type_id_eq: Symbol = Symbol::new(2116u32);
    pub const type_id_field_representing_type: Symbol = Symbol::new(2117u32);
    pub const type_id_fields: Symbol = Symbol::new(2118u32);
    pub const type_id_function_ptr: Symbol = Symbol::new(2119u32);
    pub const type_id_generics: Symbol = Symbol::new(2120u32);
    pub const type_id_is_signed: Symbol = Symbol::new(2121u32);
    pub const type_id_non_exhaustive: Symbol = Symbol::new(2122u32);
    pub const type_id_points_mutably: Symbol = Symbol::new(2123u32);
    pub const type_id_points_to: Symbol = Symbol::new(2124u32);
    pub const type_id_size_of: Symbol = Symbol::new(2125u32);
    pub const type_id_type_of: Symbol = Symbol::new(2126u32);
    pub const type_id_variant_name: Symbol = Symbol::new(2127u32);
    pub const type_id_variant_non_exhaustive: Symbol = Symbol::new(2128u32);
    pub const type_id_variants: Symbol = Symbol::new(2129u32);
    pub const type_id_vtable: Symbol = Symbol::new(2130u32);
    pub const type_info: Symbol = Symbol::new(2131u32);
    pub const type_info_generic: Symbol = Symbol::new(2132u32);
    pub const type_ir: Symbol = Symbol::new(2133u32);
    pub const type_ir_infer_ctxt_like: Symbol = Symbol::new(2134u32);
    pub const type_ir_inherent: Symbol = Symbol::new(2135u32);
    pub const type_ir_interner: Symbol = Symbol::new(2136u32);
    pub const type_length_limit: Symbol = Symbol::new(2137u32);
    pub const type_macros: Symbol = Symbol::new(2138u32);
    pub const type_name: Symbol = Symbol::new(2139u32);
    pub const type_privacy_lints: Symbol = Symbol::new(2140u32);
    pub const typed_swap_nonoverlapping: Symbol = Symbol::new(2141u32);
    pub const u8: Symbol = Symbol::new(2142u32);
    pub const u8_legacy_const_max: Symbol = Symbol::new(2143u32);
    pub const u8_legacy_const_min: Symbol = Symbol::new(2144u32);
    pub const u8_legacy_fn_max_value: Symbol = Symbol::new(2145u32);
    pub const u8_legacy_fn_min_value: Symbol = Symbol::new(2146u32);
    pub const u8_legacy_mod: Symbol = Symbol::new(2147u32);
    pub const u16: Symbol = Symbol::new(2148u32);
    pub const u16_legacy_const_max: Symbol = Symbol::new(2149u32);
    pub const u16_legacy_const_min: Symbol = Symbol::new(2150u32);
    pub const u16_legacy_fn_max_value: Symbol = Symbol::new(2151u32);
    pub const u16_legacy_fn_min_value: Symbol = Symbol::new(2152u32);
    pub const u16_legacy_mod: Symbol = Symbol::new(2153u32);
    pub const u32: Symbol = Symbol::new(2154u32);
    pub const u32_legacy_const_max: Symbol = Symbol::new(2155u32);
    pub const u32_legacy_const_min: Symbol = Symbol::new(2156u32);
    pub const u32_legacy_fn_max_value: Symbol = Symbol::new(2157u32);
    pub const u32_legacy_fn_min_value: Symbol = Symbol::new(2158u32);
    pub const u32_legacy_mod: Symbol = Symbol::new(2159u32);
    pub const u64: Symbol = Symbol::new(2160u32);
    pub const u64_legacy_const_max: Symbol = Symbol::new(2161u32);
    pub const u64_legacy_const_min: Symbol = Symbol::new(2162u32);
    pub const u64_legacy_fn_max_value: Symbol = Symbol::new(2163u32);
    pub const u64_legacy_fn_min_value: Symbol = Symbol::new(2164u32);
    pub const u64_legacy_mod: Symbol = Symbol::new(2165u32);
    pub const u128: Symbol = Symbol::new(2166u32);
    pub const u128_legacy_const_max: Symbol = Symbol::new(2167u32);
    pub const u128_legacy_const_min: Symbol = Symbol::new(2168u32);
    pub const u128_legacy_fn_max_value: Symbol = Symbol::new(2169u32);
    pub const u128_legacy_fn_min_value: Symbol = Symbol::new(2170u32);
    pub const u128_legacy_mod: Symbol = Symbol::new(2171u32);
    pub const ub_checks: Symbol = Symbol::new(2172u32);
    pub const unaligned_volatile_load: Symbol = Symbol::new(2173u32);
    pub const unaligned_volatile_store: Symbol = Symbol::new(2174u32);
    pub const unboxed_closures: Symbol = Symbol::new(2175u32);
    pub const unchecked_add: Symbol = Symbol::new(2176u32);
    pub const unchecked_div: Symbol = Symbol::new(2177u32);
    pub const unchecked_funnel_shl: Symbol = Symbol::new(2178u32);
    pub const unchecked_funnel_shr: Symbol = Symbol::new(2179u32);
    pub const unchecked_mul: Symbol = Symbol::new(2180u32);
    pub const unchecked_rem: Symbol = Symbol::new(2181u32);
    pub const unchecked_shl: Symbol = Symbol::new(2182u32);
    pub const unchecked_shr: Symbol = Symbol::new(2183u32);
    pub const unchecked_sub: Symbol = Symbol::new(2184u32);
    pub const undecorated: Symbol = Symbol::new(2185u32);
    pub const underscore_const_names: Symbol = Symbol::new(2186u32);
    pub const underscore_imports: Symbol = Symbol::new(2187u32);
    pub const underscore_lifetimes: Symbol = Symbol::new(2188u32);
    pub const uniform_paths: Symbol = Symbol::new(2189u32);
    pub const unimplemented: Symbol = Symbol::new(2190u32);
    pub const unimplemented_macro: Symbol = Symbol::new(2191u32);
    pub const unit: Symbol = Symbol::new(2192u32);
    pub const universal_impl_trait: Symbol = Symbol::new(2193u32);
    pub const unix: Symbol = Symbol::new(2194u32);
    pub const unlikely: Symbol = Symbol::new(2195u32);
    pub const unmarked_api: Symbol = Symbol::new(2196u32);
    pub const unnamed_enum_variants: Symbol = Symbol::new(2197u32);
    pub const unnamed_fields: Symbol = Symbol::new(2198u32);
    pub const unpin: Symbol = Symbol::new(2199u32);
    pub const unqualified_local_imports: Symbol = Symbol::new(2200u32);
    pub const unreachable: Symbol = Symbol::new(2201u32);
    pub const unreachable_2015: Symbol = Symbol::new(2202u32);
    pub const unreachable_2015_macro: Symbol = Symbol::new(2203u32);
    pub const unreachable_2021: Symbol = Symbol::new(2204u32);
    pub const unreachable_code: Symbol = Symbol::new(2205u32);
    pub const unreachable_display: Symbol = Symbol::new(2206u32);
    pub const unreachable_macro: Symbol = Symbol::new(2207u32);
    pub const unresolved: Symbol = Symbol::new(2208u32);
    pub const unrestricted_attribute_tokens: Symbol = Symbol::new(2209u32);
    pub const unsafe_attributes: Symbol = Symbol::new(2210u32);
    pub const unsafe_binders: Symbol = Symbol::new(2211u32);
    pub const unsafe_block_in_unsafe_fn: Symbol = Symbol::new(2212u32);
    pub const unsafe_cell: Symbol = Symbol::new(2213u32);
    pub const unsafe_cell_raw_get: Symbol = Symbol::new(2214u32);
    pub const unsafe_eii: Symbol = Symbol::new(2215u32);
    pub const unsafe_extern_blocks: Symbol = Symbol::new(2216u32);
    pub const unsafe_fields: Symbol = Symbol::new(2217u32);
    pub const unsafe_no_drop_flag: Symbol = Symbol::new(2218u32);
    pub const unsafe_pinned: Symbol = Symbol::new(2219u32);
    pub const unsafe_unpin: Symbol = Symbol::new(2220u32);
    pub const unsize: Symbol = Symbol::new(2221u32);
    pub const unsized_const_param_ty: Symbol = Symbol::new(2222u32);
    pub const unsized_const_params: Symbol = Symbol::new(2223u32);
    pub const unsized_fn_params: Symbol = Symbol::new(2224u32);
    pub const unsized_locals: Symbol = Symbol::new(2225u32);
    pub const unsized_tuple_coercion: Symbol = Symbol::new(2226u32);
    pub const unstable: Symbol = Symbol::new(2227u32);
    pub const unstable_feature_bound: Symbol = Symbol::new(2228u32);
    pub const unstable_location_reason_default: Symbol = Symbol::new(2229u32);
    pub const unstable_removed: Symbol = Symbol::new(2230u32);
    pub const untagged_unions: Symbol = Symbol::new(2231u32);
    pub const unused_imports: Symbol = Symbol::new(2232u32);
    pub const unwind: Symbol = Symbol::new(2233u32);
    pub const unwind_attributes: Symbol = Symbol::new(2234u32);
    pub const unwind_safe_trait: Symbol = Symbol::new(2235u32);
    pub const unwrap: Symbol = Symbol::new(2236u32);
    pub const unwrap_or: Symbol = Symbol::new(2237u32);
    pub const update: Symbol = Symbol::new(2238u32);
    pub const use_cloned: Symbol = Symbol::new(2239u32);
    pub const use_extern_macros: Symbol = Symbol::new(2240u32);
    pub const use_nested_groups: Symbol = Symbol::new(2241u32);
    pub const used: Symbol = Symbol::new(2242u32);
    pub const used_with_arg: Symbol = Symbol::new(2243u32);
    pub const using: Symbol = Symbol::new(2244u32);
    pub const usize: Symbol = Symbol::new(2245u32);
    pub const usize_legacy_const_max: Symbol = Symbol::new(2246u32);
    pub const usize_legacy_const_min: Symbol = Symbol::new(2247u32);
    pub const usize_legacy_fn_max_value: Symbol = Symbol::new(2248u32);
    pub const usize_legacy_fn_min_value: Symbol = Symbol::new(2249u32);
    pub const usize_legacy_mod: Symbol = Symbol::new(2250u32);
    pub const v1: Symbol = Symbol::new(2251u32);
    pub const v8plus: Symbol = Symbol::new(2252u32);
    pub const v9: Symbol = Symbol::new(2253u32);
    pub const va_arg: Symbol = Symbol::new(2254u32);
    pub const va_arg_safe: Symbol = Symbol::new(2255u32);
    pub const va_copy: Symbol = Symbol::new(2256u32);
    pub const va_end: Symbol = Symbol::new(2257u32);
    pub const va_list: Symbol = Symbol::new(2258u32);
    pub const val: Symbol = Symbol::new(2259u32);
    pub const validity: Symbol = Symbol::new(2260u32);
    pub const value: Symbol = Symbol::new(2261u32);
    pub const values: Symbol = Symbol::new(2262u32);
    pub const var: Symbol = Symbol::new(2263u32);
    pub const variadic: Symbol = Symbol::new(2264u32);
    pub const variant_count: Symbol = Symbol::new(2265u32);
    pub const vec: Symbol = Symbol::new(2266u32);
    pub const vector: Symbol = Symbol::new(2267u32);
    pub const verbatim: Symbol = Symbol::new(2268u32);
    pub const version: Symbol = Symbol::new(2269u32);
    pub const vfp2: Symbol = Symbol::new(2270u32);
    pub const vgpr16: Symbol = Symbol::new(2271u32);
    pub const vgpr32: Symbol = Symbol::new(2272u32);
    pub const vgpr64: Symbol = Symbol::new(2273u32);
    pub const vgpr96: Symbol = Symbol::new(2274u32);
    pub const vgpr128: Symbol = Symbol::new(2275u32);
    pub const vgpr160: Symbol = Symbol::new(2276u32);
    pub const vgpr192: Symbol = Symbol::new(2277u32);
    pub const vgpr224: Symbol = Symbol::new(2278u32);
    pub const vgpr256: Symbol = Symbol::new(2279u32);
    pub const vgpr288: Symbol = Symbol::new(2280u32);
    pub const vgpr320: Symbol = Symbol::new(2281u32);
    pub const vgpr352: Symbol = Symbol::new(2282u32);
    pub const vgpr384: Symbol = Symbol::new(2283u32);
    pub const vgpr512: Symbol = Symbol::new(2284u32);
    pub const vgpr1024: Symbol = Symbol::new(2285u32);
    pub const view_type: Symbol = Symbol::new(2286u32);
    pub const view_types: Symbol = Symbol::new(2287u32);
    pub const vis: Symbol = Symbol::new(2288u32);
    pub const visible_private_types: Symbol = Symbol::new(2289u32);
    pub const volatile: Symbol = Symbol::new(2290u32);
    pub const volatile_copy_memory: Symbol = Symbol::new(2291u32);
    pub const volatile_copy_nonoverlapping_memory: Symbol =
        Symbol::new(2292u32);
    pub const volatile_load: Symbol = Symbol::new(2293u32);
    pub const volatile_set_memory: Symbol = Symbol::new(2294u32);
    pub const volatile_store: Symbol = Symbol::new(2295u32);
    pub const vreg: Symbol = Symbol::new(2296u32);
    pub const vreg_low16: Symbol = Symbol::new(2297u32);
    pub const vreg_pair: Symbol = Symbol::new(2298u32);
    pub const vsreg: Symbol = Symbol::new(2299u32);
    pub const vsx: Symbol = Symbol::new(2300u32);
    pub const vtable_align: Symbol = Symbol::new(2301u32);
    pub const vtable_size: Symbol = Symbol::new(2302u32);
    pub const warn: Symbol = Symbol::new(2303u32);
    pub const warnings: Symbol = Symbol::new(2304u32);
    pub const wasip2: Symbol = Symbol::new(2305u32);
    pub const wasm: Symbol = Symbol::new(2306u32);
    pub const wasm32: Symbol = Symbol::new(2307u32);
    pub const wasm64: Symbol = Symbol::new(2308u32);
    pub const wasm_abi: Symbol = Symbol::new(2309u32);
    pub const wasm_import_module: Symbol = Symbol::new(2310u32);
    pub const wasm_target_feature: Symbol = Symbol::new(2311u32);
    pub const weak: Symbol = Symbol::new(2312u32);
    pub const weak_odr: Symbol = Symbol::new(2313u32);
    pub const where_clause_attrs: Symbol = Symbol::new(2314u32);
    pub const while_let: Symbol = Symbol::new(2315u32);
    pub const whole_dash_archive: Symbol = Symbol::new(2316u32);
    pub const width: Symbol = Symbol::new(2317u32);
    pub const windowed: Symbol = Symbol::new(2318u32);
    pub const windows: Symbol = Symbol::new(2319u32);
    pub const windows_subsystem: Symbol = Symbol::new(2320u32);
    pub const with_negative_coherence: Symbol = Symbol::new(2321u32);
    pub const wrapping_add: Symbol = Symbol::new(2322u32);
    pub const wrapping_div: Symbol = Symbol::new(2323u32);
    pub const wrapping_mul: Symbol = Symbol::new(2324u32);
    pub const wrapping_rem: Symbol = Symbol::new(2325u32);
    pub const wrapping_rem_euclid: Symbol = Symbol::new(2326u32);
    pub const wrapping_sub: Symbol = Symbol::new(2327u32);
    pub const wreg: Symbol = Symbol::new(2328u32);
    pub const write_box_via_move: Symbol = Symbol::new(2329u32);
    pub const write_bytes: Symbol = Symbol::new(2330u32);
    pub const write_fmt: Symbol = Symbol::new(2331u32);
    pub const write_macro: Symbol = Symbol::new(2332u32);
    pub const write_str: Symbol = Symbol::new(2333u32);
    pub const write_via_move: Symbol = Symbol::new(2334u32);
    pub const writeln_macro: Symbol = Symbol::new(2335u32);
    pub const x86: Symbol = Symbol::new(2336u32);
    pub const x86_64: Symbol = Symbol::new(2337u32);
    pub const x86_amx_intrinsics: Symbol = Symbol::new(2338u32);
    pub const x87_reg: Symbol = Symbol::new(2339u32);
    pub const x87_target_feature: Symbol = Symbol::new(2340u32);
    pub const xcoff: Symbol = Symbol::new(2341u32);
    pub const xer: Symbol = Symbol::new(2342u32);
    pub const xloop: Symbol = Symbol::new(2343u32);
    pub const xmm_reg: Symbol = Symbol::new(2344u32);
    pub const xop_target_feature: Symbol = Symbol::new(2345u32);
    pub const xreg: Symbol = Symbol::new(2346u32);
    pub const xtensa: Symbol = Symbol::new(2347u32);
    pub const xtensa_target_feature: Symbol = Symbol::new(2348u32);
    pub const yeet_desugar_details: Symbol = Symbol::new(2349u32);
    pub const yeet_expr: Symbol = Symbol::new(2350u32);
    pub const yes: Symbol = Symbol::new(2351u32);
    pub const yield_expr: Symbol = Symbol::new(2352u32);
    pub const ymm_reg: Symbol = Symbol::new(2353u32);
    pub const yreg: Symbol = Symbol::new(2354u32);
    pub const zca: Symbol = Symbol::new(2355u32);
    pub const zfh: Symbol = Symbol::new(2356u32);
    pub const zfhmin: Symbol = Symbol::new(2357u32);
    pub const zmm_reg: Symbol = Symbol::new(2358u32);
    pub const ztso: Symbol = Symbol::new(2359u32);
    pub const env_CFG_RELEASE: Symbol = Symbol::new(2422u32);
}
impl 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", "catch",
                        "contract_ensures", "contract_requires", "default", "deref",
                        "field_of", "macro_rules", "offset_of", "pin", "raw",
                        "reuse", "safe", "type_ascribe", "union", "unwrap_binder",
                        "wrap_binder", "yeet", "Abi", "AcqRel", "Acquire", "Active",
                        "ActiveOnly", "Alignment", "Arc", "ArcWeak", "Array",
                        "ArrayToPointer", "AsMut", "AsRef", "AssertParamIsClone",
                        "AssertParamIsCopy", "AssertParamIsEq", "AsyncGenFinished",
                        "AsyncGenPending", "AsyncGenReady", "Atomic", "BTreeMap",
                        "Bool", "Borrow", "BorrowMut", "BoxDerefTransmute", "Break",
                        "BuildHasher", "CStr", "CallOnceFuture", "CallRefFuture",
                        "Capture", "Cell", "Char", "Cleanup", "Client", "Clone",
                        "ClosureFnPointer", "CoercePointee",
                        "CoercePointeeValidated", "CoerceShared", "CoerceUnsized",
                        "Const", "ConstParamTy", "ConstParamTy_", "Context",
                        "Continue", "ControlFlow", "Copy", "Cow", "Debug",
                        "Default", "Deref", "DispatchFromDyn", "Display",
                        "DropGuard", "Dual", "DualOnly", "Dualv", "DualvOnly",
                        "Duplicated", "DuplicatedOnly", "DynTrait", "Enum", "Eq",
                        "Equal", "Err", "ExitCode", "ExternC", "ExternRust",
                        "Float", "FloatToFloat", "FloatToInt", "FmtArgumentsNew",
                        "Fn", "FnMut", "FnOnce", "FnPtr", "FnPtrToPtr", "Formatter",
                        "Forward", "From", "FromIterator", "FromResidual",
                        "GenericTypeVisitable", "GlobalAlloc", "Hash", "HashMap",
                        "HashSet", "Hasher", "InCleanup", "IndexOutput", "Input",
                        "Int", "IntToFloat", "IntToInt", "Into",
                        "IntoAsyncIterator", "IntoFuture", "IntoIterator",
                        "IntoIteratorItem", "IoBufReader", "IrTyKind", "Item",
                        "Iterator", "IteratorItem", "IteratorMap", "Layout",
                        "Lifetime", "LintPass", "LocalKey", "MutToConstPointer",
                        "Mutex", "MutexGuard", "Named", "NonZero", "None", "Normal",
                        "Ok", "Option", "Ord", "Ordering", "Other", "Output",
                        "ParamSet", "PartialEq", "PartialOrd", "Pending",
                        "PinDerefMutHelper", "PinMacroHelper", "Pointer",
                        "PointerCoercion", "PointerExposeProvenance",
                        "PointerWithExposedProvenance", "Poll", "PtrToPtr", "Range",
                        "RangeCopy", "RangeFrom", "RangeFromCopy", "RangeFull",
                        "RangeInclusive", "RangeInclusiveCopy", "RangeMax",
                        "RangeMin", "RangeSub", "RangeTo", "RangeToInclusive",
                        "RangeToInclusiveCopy", "Rc", "RcWeak", "Ready", "Reborrow",
                        "RefCell", "Reference", "ReifyFnPointer", "Relaxed",
                        "Release", "Result", "ResumeTy", "Reverse", "Rust",
                        "RustEmbed", "RustaceansAreAwesome", "RwLock",
                        "RwLockReadGuard", "RwLockWriteGuard", "Safe", "Safety",
                        "SelfTy", "Send", "SeqCst", "ShouldPanic", "Sized", "Slice",
                        "SliceIndex", "Some", "Source", "StdinLock", "Str",
                        "String", "Struct", "StructuralPartialEq", "Subtype",
                        "SymbolIntern", "Sync", "SyncUnsafeCell", "Target",
                        "TestType", "This", "TokenStream", "Transmute",
                        "TrivialClone", "Try", "TryCaptureGeneric",
                        "TryCapturePrintable", "TryFrom", "TryInto", "Tuple", "Ty",
                        "TyCtxt", "TyKind", "Type", "TypeVisitable", "Union",
                        "Unsafe", "UnsafeFnPointer", "Unsize", "UnsizePointee",
                        "Vec", "Wrapper", "_DECLS", "__H", "__S", "__awaitee",
                        "__ensures_checker", "__ret", "__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_swift", "abi_sysv64",
                        "abi_thiscall", "abi_unadjusted", "abi_vectorcall",
                        "abi_x86_interrupt", "abort", "abort_immediate", "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_internals", "allow",
                        "allow_fail", "allow_internal_unsafe",
                        "allow_internal_unstable", "altivec", "alu32", "always",
                        "ambiguity", "amdgpu", "amdgpu_dispatch_ptr", "analysis",
                        "and", "and_then", "anon", "anon_assoc",
                        "anonymous_lifetime_in_impl_trait", "any",
                        "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", "asm", "asm_cfg",
                        "asm_const", "asm_const_ptr", "asm_experimental_arch",
                        "asm_experimental_reg", "asm_goto", "asm_goto_with_outputs",
                        "asm_sym", "asm_unwind", "assert", "assert_eq",
                        "assert_eq_macro", "assert_fields_are_eq",
                        "assert_inhabited", "assert_macro",
                        "assert_mem_uninitialized_valid", "assert_ne_macro",
                        "assert_receiver_is_total_eq", "assert_zero_valid",
                        "asserting", "associated_const_equality",
                        "associated_consts", "associated_type_bounds",
                        "associated_type_defaults", "associated_types", "assume",
                        "assume_init", "*", "async_await", "async_call",
                        "async_call_mut", "async_call_once", "async_closure",
                        "async_drop", "async_drop_in_place", "async_fn",
                        "async_fn_in_dyn_trait", "async_fn_in_trait",
                        "async_fn_kind_helper", "async_fn_kind_upvars",
                        "async_fn_mut", "async_fn_once", "async_fn_once_output",
                        "async_fn_track_caller", "async_fn_traits",
                        "async_for_loop", "async_gen_internals", "async_iterator",
                        "async_iterator_poll_next", "async_trait_bounds", "atomic",
                        "atomic_and", "atomic_cxchg", "atomic_cxchgweak",
                        "atomic_fence", "atomic_load", "atomic_max", "atomic_min",
                        "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", "backchain", "backend_repr",
                        "begin_panic", "bench", "bevy_ecs", "bikeshed",
                        "bikeshed_guaranteed_no_drop", "bin",
                        "bind_by_move_pattern_guards", "bindings_after_at",
                        "bitand", "bitand_assign", "bitor", "bitor_assign",
                        "bitreverse", "bits", "bitxor", "bitxor_assign",
                        "bivariant", "black_box", "block", "blocking", "bool",
                        "borrowck_graphviz_format", "borrowck_graphviz_postflow",
                        "box_new", "box_patterns", "box_syntax", "boxed_slice",
                        "bpf", "bpf_target_feature", "braced_empty_structs",
                        "branch", "breakpoint", "breg", "bridge", "bswap", "built",
                        "bundle", "c_dash_variadic", "c_str_literals", "c_unwind",
                        "c_variadic", "c_variadic_experimental_arch",
                        "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", "ceil", "cfg", "cfg_accessible",
                        "cfg_attr", "cfg_attr_multi", "cfg_boolean_literals",
                        "cfg_contract_checks", "cfg_doctest", "cfg_eval",
                        "cfg_overflow_checks", "cfg_panic", "cfg_relocation_model",
                        "cfg_sanitize", "cfg_sanitizer_cfi", "cfg_select",
                        "cfg_target_abi", "cfg_target_compact",
                        "cfg_target_feature", "cfg_target_has_atomic",
                        "cfg_target_has_atomic_equal_alignment",
                        "cfg_target_has_reliable_f16_f128",
                        "cfg_target_has_reliable_f16b", "cfg_target_has_threads",
                        "cfg_target_object_format", "cfg_target_thread_local",
                        "cfg_target_vendor", "cfg_ub_checks", "cfg_version", "cfi",
                        "cfi_encoding", "char", "checked_type_aliases",
                        "clflushopt_target_feature", "client", "clippy",
                        "clobber_abi", "clone", "clone_closures", "clone_fn",
                        "clone_from", "clone_from_fn", "close_fn", "closure",
                        "closure_lifetime_binder", "closure_to_fn_coercion",
                        "closure_track_caller", "cmp", "cmp_ord_max", "cmp_ord_min",
                        "cmp_partialeq_eq", "cmp_partialeq_ne",
                        "cmp_partialord_cmp", "cmp_partialord_ge",
                        "cmp_partialord_gt", "cmp_partialord_le",
                        "cmp_partialord_lt", "cmpxchg16b_target_feature",
                        "cmse_nonsecure_entry", "code", "codeview_annotation",
                        "coerce_pointee_validated", "coerce_shared",
                        "coerce_shared_target", "coerce_unsized", "coff", "cold",
                        "cold_path", "collapse_debuginfo", "color", "column",
                        "compare_bytes", "compare_exchange",
                        "compare_exchange_weak", "compile_error", "compiler",
                        "compiler_builtins", "compiler_copy", "compiler_fence",
                        "compiler_move", "complex", "concat", "concat_bytes",
                        "concat_str", "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_param_ty_unchecked", "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",
                        "contravariant", "convert", "coprocessor", "copy",
                        "copy_closures", "copy_nonoverlapping", "copysignf16",
                        "copysignf32", "copysignf64", "copysignf128", "core",
                        "core_panic", "core_panic_2015_macro", "core_panic_macro",
                        "coroutine", "coroutine_clone", "coroutine_resume",
                        "coroutine_return", "coroutine_state", "coroutine_yield",
                        "coroutines", "cos", "count", "covariant",
                        "covariant_unsafe_cell", "coverage", "coverage_attribute",
                        "cr", "crate_in_paths", "crate_local", "crate_name",
                        "crate_type", "crate_visibility_modifier", "crt-static",
                        "csky", "csky_target_feature", "cstr_type", "cstring_type",
                        "ctlz", "ctlz_nonzero", "ctpop", "ctr", "cttz",
                        "cttz_nonzero", "custom_attribute",
                        "custom_code_classes_in_docs", "custom_derive",
                        "custom_inner_attributes", "custom_mir",
                        "custom_test_frameworks", "d32", "dead_code",
                        "dead_code_pub_in_binary", "dealloc", "debug",
                        "debug_assert_eq_macro", "debug_assert_macro",
                        "debug_assert_ne_macro", "debug_assertions",
                        "debug_c_like_enum_write_str", "debug_struct_fields_finish",
                        "debugger_visualizer", "decl_macro", "declare_lint_pass",
                        "decorated", "default_alloc_error_handler",
                        "default_field_values", "default_fn",
                        "default_lib_allocator", "default_trait1", "default_trait2",
                        "default_trait3", "default_trait4",
                        "default_type_parameter_fallback", "default_type_params",
                        "define_opaque", "deny", "deprecated", "deprecated_safe",
                        "deprecated_suggestion", "deref_method", "deref_mut",
                        "deref_patterns", "deref_pure", "deref_target", "derive",
                        "derive_const", "derive_default_enum", "derive_from",
                        "derive_smart_pointer", "destruct",
                        "destructuring_assignment", "diagnostic",
                        "diagnostic_namespace", "diagnostic_on_const",
                        "diagnostic_on_move", "diagnostic_on_type_error",
                        "diagnostic_on_unknown", "diagnostic_on_unmatch_args",
                        "diagnostic_on_unmatched_args", "diagnostic_opaque",
                        "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", "dret", "drop", "drop_glue",
                        "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", "edition_panic",
                        "effective_target_features", "effects", "eh_personality",
                        "eii", "eii_declaration", "eii_internals",
                        "eii_shared_macro", "element_ty", "elf", "", "{}", "[]",
                        "()", "enable", "end", "entry_nops", "env", "eprint_macro",
                        "eprintln_macro", "eq", "ergonomic_clones",
                        "ermsb_target_feature", "exact_div", "except", "exception",
                        "exception-handling", "exclusive_range_pattern",
                        "exhaustive_integer_patterns", "exhaustive_patterns",
                        "existential_type", "exists", "exp", "exp2", "expand1",
                        "expand2", "expect", "expected", "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", "extendedl32r",
                        "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", "f16", "f16_nan",
                        "f16b", "f16c_target_feature", "f32", "f32_nan", "f64",
                        "f64_nan", "f128", "f128_nan", "fabs", "fadd_algebraic",
                        "fadd_fast", "fake_variadic", "fallback", "fdiv_algebraic",
                        "fdiv_fast", "feature", "fence", "🦀", "fetch_update",
                        "ffi_const", "ffi_pure", "ffi_returns_twice", "ffr",
                        "field", "field_base", "field_init_shorthand",
                        "field_offset", "field_projections",
                        "field_representing_type",
                        "field_representing_type_actual_type_id",
                        "field_representing_type_name",
                        "field_representing_type_offset",
                        "field_representing_type_raw", "field_type", "fields",
                        "file", "final_associated_functions",
                        "float_mul_add_relaxed", "float_to_int_unchecked", "floor",
                        "fma", "fma4_target_feature", "fmt", "fmt_debug",
                        "fmul_algebraic", "fmul_fast", "fmuladd", "fn_align",
                        "fn_body", "fn_delegation", "fn_must_use", "fn_mut",
                        "fn_once", "fn_once_output", "fn_ptr_as_ptr",
                        "fn_ptr_from_ptr", "fn_ptr_trait", "fn_static", "forall",
                        "forbid", "force_target_feature", "forced_keywords",
                        "forget", "forget_trait", "format_args",
                        "format_args_capture", "format_args_macro",
                        "format_args_nl", "format_argument", "format_arguments",
                        "format_macro", "format_placeholder", "format_unsafe_arg",
                        "found", "fp", "fpregs", "framework", "freeze",
                        "freeze_impls", "freg", "frem_algebraic", "frem_fast",
                        "from", "from_desugaring", "from_iter", "from_output",
                        "from_residual", "from_size_align_unchecked",
                        "from_size_alignment_unchecked", "from_str",
                        "from_str_nonconst", "from_usize", "from_yeet",
                        "frontmatter", "fsub_algebraic", "fsub_fast", "full",
                        "function_arg_const_generics", "fundamental",
                        "fused_iterator", "future_output", "future_trait", "fxsr",
                        "gca", "gca_adts", "gca_const_items", "gca_macroless_args",
                        "gca_macroless_items", "gca_min_const_items",
                        "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_args",
                        "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", "gpu-kernel",
                        "gpu_launch_sized_workgroup_mem", "gt", "guard",
                        "guard_patterns", "half_open_range_patterns",
                        "half_open_range_patterns_in_slices", "hash", "hexagon",
                        "hexagon_target_feature", "hidden", "hide",
                        "highpriinterrupts", "hint", "homogeneous_aggregate",
                        "html_favicon_url", "html_logo_url", "html_no_source",
                        "html_playground_url", "html_root_url", "hvx",
                        "hvx-length64b", "hvx-length128b", "hwaddress", "i8", "i16",
                        "i32", "i64", "i128", "i128_type", "ident",
                        "ident_from_str_and_span", "if_let", "if_let_guard",
                        "if_let_rescope", "if_while_or_patterns", "ignore",
                        "immediate-abort", "impl_header_lifetime_elision",
                        "impl_lint_pass", "impl_restriction",
                        "impl_trait_in_assoc_type", "impl_trait_in_bindings",
                        "impl_trait_in_fn_trait_return", "impl_trait_projections",
                        "implied_by", "import", "import_name_type",
                        "import_shadowing", "import_trait_associated_functions",
                        "imported_main", "in_band_lifetimes", "include",
                        "include_bytes", "include_str", "inclusive_range_syntax",
                        "incomplete_features", "index", "index_mut",
                        "infer_outlives_requirements",
                        "infer_static_outlives_requirements",
                        "inherent_associated_types", "initial", "inlateout",
                        "inline", "inline_const", "inline_const_pat", "inout",
                        "inputs", "instruction_set", "instrument_fn", "integer",
                        "integer_max", "integer_min", "integral",
                        "internal_eq_trait_method_impls", "internal_features",
                        "internal_syntax", "interrupt", "into_async_iter_into_iter",
                        "into_future", "into_iter", "into_try_type",
                        "intra_doc_pointers", "intrinsic_fallback_is_spec",
                        "intrinsics", "invariant", "irrefutable_let_patterns", "is",
                        "is_auto", "is_splatted", "is_unsafe",
                        "is_val_statically_known", "isa_attribute", "isize",
                        "issue", "issue_5723_bootstrap", "issue_tracker_base_url",
                        "item", "item_context", "item_like_imports", "iter",
                        "iter_mut", "iterator", "iterator_collect_fn", "kcfi",
                        "kernel_address", "kernel_hwaddress", "keylocker_x86",
                        "keyword", "kind", "kreg", "kreg0", "label",
                        "label_break_value", "lahfsahf_target_feature", "lang",
                        "lang_items", "large_assignments", "largest_niche", "last",
                        "lasx", "late_bound_turbofishing", "lateout",
                        "lazy_normalization_consts", "lazy_type_alias", "le",
                        "legacy_receiver", "len", "let_chains", "let_else", "lhs",
                        "lib", "libc", "lifetime", "lifetime_capture_rules_2024",
                        "lifetimes", "line", "link", "link_arg_attribute",
                        "link_args", "link_cfg", "link-arg",
                        "link_enzyme_intrinsics", "link_llvm_intrinsics",
                        "link_name", "link_ordinal", "link_section", "linkage",
                        "linker", "linker_info", "linker_messages", "linkonce",
                        "linkonce_odr", "lint", "lint_reasons", "literal", "little",
                        "big", "load", "loaded_from_disk", "local",
                        "local_inner_macros", "log", "log2", "log10", "log_syntax",
                        "loongarch32", "loongarch64", "loongarch_target_feature",
                        "loop_break_value", "loop_hints", "loop_match", "lr", "lsx",
                        "lt", "m68k", "m68k_target_feature", "mac16", "mach-o",
                        "macro_at_most_once_rep", "macro_attr",
                        "macro_attributes_in_derive_output", "macro_derive",
                        "macro_escape", "macro_export", "macro_guard_matcher",
                        "macro_lifetime_matcher", "macro_literal_matcher",
                        "macro_metavar_expr", "macro_metavar_expr_concat",
                        "macro_reexport", "macro_use", "macro_vis_matcher",
                        "macroless_const_item_generic_const_args",
                        "macroless_generic_const_args", "macros_in_extern", "main",
                        "managed_boxes", "manually_drop", "map", "map_err",
                        "marked_unchecked_type_aliases", "marker",
                        "marker_trait_attr", "masked", "match_beginning_vert",
                        "match_default_bindings", "maximum_number_nsz_f16",
                        "maximum_number_nsz_f32", "maximum_number_nsz_f64",
                        "maximum_number_nsz_f128", "maximumf16", "maximumf32",
                        "maximumf64", "maximumf128", "may_dangle", "may_unwind",
                        "maybe_dangling", "maybe_uninit", "maybe_uninit_uninit",
                        "maybe_uninit_zeroed", "mem", "mem_align_const",
                        "mem_discriminant", "mem_drop", "mem_forget",
                        "mem_size_const", "mem_swap", "mem_uninitialized",
                        "mem_variant_count", "mem_zeroed", "member_constraints",
                        "memory", "memtag", "message", "meta", "meta_sized",
                        "metadata_type", "min_adt_const_params", "min_const_fn",
                        "min_const_generics", "min_const_unsafe_fn",
                        "min_exhaustive_patterns", "min_generic_const_args",
                        "min_specialization", "min_type_alias_impl_trait",
                        "minimum_number_nsz_f16", "minimum_number_nsz_f32",
                        "minimum_number_nsz_f64", "minimum_number_nsz_f128",
                        "minimumf16", "minimumf32", "minimumf64", "minimumf128",
                        "mips", "mips32r6", "mips64", "mips64r6",
                        "mips_target_feature", "mir_assume", "mir_basic_block",
                        "mir_call", "mir_cast", "mir_cast_fn_ptr_safety",
                        "mir_cast_kind", "mir_cast_ptr_coercion",
                        "mir_cast_ptr_to_ptr", "mir_cast_transmute",
                        "mir_cast_unsize", "mir_checked", "mir_debuginfo",
                        "mir_discriminant", "mir_drop", "mir_field", "mir_goto",
                        "mir_make_place", "mir_move", "mir_offset",
                        "mir_ptr_metadata", "mir_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", "misc",
                        "miscsr", "mmx_reg", "modifiers", "module", "module_path",
                        "more_maybe_bounds", "more_qualified_paths",
                        "more_struct_aliases", "movbe_target_feature",
                        "movdir64b_target_feature", "movdiri_target_feature",
                        "move_expr", "move_ref_pattern", "move_size_limit",
                        "movrs_target_feature", "msa", "msp430", "mul",
                        "mul_assign", "mul_with_overflow",
                        "multiple_supertrait_upcastable", "must_not_suspend",
                        "must_use", "mut_preserve_binding_mode_2024", "mut_ref",
                        "mut_restriction", "mutable", "naked", "naked_asm",
                        "naked_functions", "naked_functions_rustic_abi",
                        "naked_functions_target_feature", "name",
                        "named_fn_trait_parameters", "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_returns_null_ptr", "never_type",
                        "never_type_fallback", "new", "new_binary", "new_debug",
                        "new_debug_noop", "new_display", "new_lower_exp",
                        "new_lower_hex", "new_octal", "new_pointer", "new_range",
                        "new_unchecked", "new_upper_exp", "new_upper_hex", "next",
                        "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", "non_null",
                        "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", "offload_get_num_devices",
                        "offload_kernel", "offload_region", "offset",
                        "offset_of_enum", "offset_of_nested", "offset_of_slice",
                        "ok_or_else", "old_name", "omit_gdb_pretty_printer_section",
                        "on", "on_const", "on_move", "on_type_error",
                        "on_unimplemented", "on_unknown", "on_unmatched_args",
                        "opaque", "<opaque>", "ops", "opt_out_copy", "optimize",
                        "optimize_attribute", "optimized", "optin_builtin_traits",
                        "option", "option_env", "options", "or", "or_patterns",
                        "ord_cmp_method", "other", "out", "output",
                        "overflow_checks", "overlapping_marker_traits", "owned_box",
                        "packed", "packed_bundled_libs", "panic", "panic_2015",
                        "panic_2021", "panic_abort", "panic_bounds_check",
                        "panic_cannot_unwind", "panic_const_add_overflow",
                        "panic_const_async_fn_resumed",
                        "panic_const_async_fn_resumed_drop",
                        "panic_const_async_fn_resumed_panic",
                        "panic_const_async_gen_fn_resumed",
                        "panic_const_async_gen_fn_resumed_drop",
                        "panic_const_async_gen_fn_resumed_panic",
                        "panic_const_coroutine_resumed",
                        "panic_const_coroutine_resumed_drop",
                        "panic_const_coroutine_resumed_panic",
                        "panic_const_div_by_zero", "panic_const_div_overflow",
                        "panic_const_gen_fn_none", "panic_const_gen_fn_none_drop",
                        "panic_const_gen_fn_none_panic", "panic_const_mul_overflow",
                        "panic_const_neg_overflow", "panic_const_rem_by_zero",
                        "panic_const_rem_overflow", "panic_const_shl_overflow",
                        "panic_const_shr_overflow", "panic_const_sub_overflow",
                        "panic_display", "panic_fmt", "panic_handler", "panic_impl",
                        "panic_implementation", "panic_in_cleanup", "panic_info",
                        "panic_invalid_enum_construction", "panic_location",
                        "panic_misaligned_pointer_dereference", "panic_nounwind",
                        "panic_null_pointer_dereference",
                        "panic_null_reference_constructed", "panic_runtime",
                        "panic_str_2015", "panic_unwind", "panicking",
                        "param_attrs", "parent_label", "partial_cmp", "partial_ord",
                        "passes", "pat", "pat_param", "patchable_function_entry",
                        "path", "pattern_complexity_limit", "pattern_parentheses",
                        "pattern_type", "pattern_type_range_trait", "pattern_types",
                        "phantom_data", "phase", "pic", "pie", "pin_drop",
                        "pin_ergonomics", "pin_v2", "platform_intrinsics", "plugin",
                        "plugin_registrar", "plugins", "pointee", "pointee_sized",
                        "pointee_trait", "pointer", "poll", "post-cleanup",
                        "post-lto", "postfix_match", "powerpc", "powerpc64",
                        "powerpc_target_feature", "powf", "powi", "ppcf128",
                        "pre-lto", "precise_capturing",
                        "precise_capturing_in_traits",
                        "precise_pointer_size_matching", "predicates",
                        "pref_align_of", "prefetch_read_data",
                        "prefetch_read_instruction", "prefetch_write_data",
                        "prefetch_write_instruction", "prefix_nops", "preg",
                        "prelude", "prelude_import", "preserves_flags",
                        "prfchw_target_feature", "prid", "primitive", "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",
                        "profiler_runtime", "ptr", "ptr_cast", "ptr_cast_const",
                        "ptr_cast_mut", "ptr_const_is_null", "ptr_copy",
                        "ptr_copy_nonoverlapping", "ptr_drop_in_place",
                        "ptr_drop_in_place_self", "ptr_from_ref",
                        "ptr_guaranteed_cmp", "ptr_is_null", "ptr_mask",
                        "ptr_metadata", "ptr_null", "ptr_null_mut",
                        "ptr_offset_from", "ptr_offset_from_unsigned", "ptr_read",
                        "ptr_read_unaligned", "ptr_replace", "ptr_swap",
                        "ptr_swap_nonoverlapping", "ptr_write", "ptr_write_bytes",
                        "ptr_write_unaligned", "ptr_write_volatile",
                        "pub_macro_rules", "pub_restricted", "public", "pure",
                        "pushpop_unsafe", "qreg", "qreg_low4", "qreg_low8",
                        "quad_precision_float", "question_mark", "quote",
                        "range_inclusive_new", "raw-dylib", "raw_dylib",
                        "raw_dylib_elf", "raw_eq", "raw_identifiers", "raw_ref_op",
                        "re_rebalance_coherence", "read_via_copy", "readonly",
                        "realloc", "realtime", "reason", "reborrow", "receiver",
                        "receiver_target", "recursion_limit",
                        "reexport_test_harness_main", "ref_pat_eat_one_layer_2024",
                        "ref_pat_eat_one_layer_2024_structural",
                        "ref_pat_everywhere", "ref_unwind_safe_trait", "reference",
                        "reflect", "reg", "reg16", "reg32", "reg64", "reg_abcd",
                        "reg_addr", "reg_byte", "reg_data", "reg_iw", "reg_nonzero",
                        "reg_pair", "reg_ptr", "reg_upper", "register_attr",
                        "register_attribute_tool", "register_lint_tool",
                        "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", "resumable_breakpoint",
                        "return_address", "return_position_impl_trait_in_trait",
                        "return_type_notation", "->", "riscv32", "riscv64",
                        "riscv_target_feature", "rlib", "ropi", "ropi-rwpi",
                        "rotate_left", "rotate_right", "round", "round_ties_even",
                        "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-call", "rust_eh_personality", "rust_future",
                        "rust_logo", "rust_out", "rust_preserve_none_cc",
                        "rust_tail_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_allow_lifetime_dependent_specialization",
                        "rustc_allowed_through_unstable_modules",
                        "rustc_always_gca", "rustc_assert_variance", "rustc_attrs",
                        "rustc_autodiff", "rustc_builtin_macro",
                        "rustc_canonical_symbol", "rustc_capture_analysis",
                        "rustc_clean", "rustc_coherence_is_core",
                        "rustc_coinductive", "rustc_comptime", "rustc_confusables",
                        "rustc_const_stable", "rustc_const_stable_indirect",
                        "rustc_const_unstable", "rustc_conversion_suggestion",
                        "rustc_deallocator", "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_diagnostic_opaque", "rustc_do_not_const_check",
                        "rustc_doc_primitive", "rustc_driver", "rustc_dummy",
                        "rustc_dump_clauses", "rustc_dump_def_parents",
                        "rustc_dump_def_path", "rustc_dump_generics",
                        "rustc_dump_hidden_type_of_opaques",
                        "rustc_dump_inferred_outlives", "rustc_dump_item_bounds",
                        "rustc_dump_layout", "rustc_dump_object_lifetime_defaults",
                        "rustc_dump_symbol_name", "rustc_dump_user_args",
                        "rustc_dump_variances", "rustc_dump_variances_of_opaques",
                        "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_if_this_changed", "rustc_inherit_overflow_checks",
                        "rustc_insignificant_dtor", "rustc_intrinsic",
                        "rustc_intrinsic_const_stable_indirect",
                        "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_must_match_exhaustively",
                        "rustc_no_implicit_autorefs", "rustc_no_implicit_bounds",
                        "rustc_no_mir_inline", "rustc_no_writable",
                        "rustc_non_const_trait_method",
                        "rustc_nonnull_optimization_guaranteed", "rustc_nounwind",
                        "rustc_objc_class", "rustc_objc_selector",
                        "rustc_offload_kernel", "rustc_on_unimplemented",
                        "rustc_panics_when_zero", "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_pretty_live_locals", "rustc_pretty_precise_liveness",
                        "rustc_pretty_transitive_live_locals", "rustc_private",
                        "rustc_proc_macro_decls", "rustc_promotable",
                        "rustc_pub_transparent", "rustc_reallocator",
                        "rustc_regions", "rustc_scalable_vector",
                        "rustc_should_not_be_called_on_const_items",
                        "rustc_show_spans", "rustc_simd_monomorphize_lane_limit",
                        "rustc_skip_during_method_dispatch",
                        "rustc_specialization_trait", "rustc_splat",
                        "rustc_std_internal_symbol", "rustc_strict_coherence",
                        "rustc_test_marker", "rustc_then_this_would_need",
                        "rustc_trivial_field_reads", "rustc_unchecked_type_alias",
                        "rustc_unroll", "rustdoc", "rustdoc_internals",
                        "rustdoc_missing_doc_code_examples", "rustdoc_skip_body",
                        "rustfmt", "rvalue_static_promotion", "rvector", "rwpi",
                        "s32c1i", "s390x", "s390x_target_feature",
                        "s390x_target_feature_vector", "safestack", "safety",
                        "sanitize", "sanitizer_cfi_generalize_pointers",
                        "sanitizer_cfi_normalize_integers", "sanitizer_runtime",
                        "saturating_add", "saturating_sub", "sdylib",
                        "search_unbox", "section", "select_unpredictable",
                        "self_in_typedefs", "self_struct_ctor", "semiopaque",
                        "sgpr32", "sgpr64", "sgpr96", "sgpr128", "sgpr256",
                        "sgpr512", "sha2", "sha3", "sha512_sm_x86",
                        "shadow_call_stack", "shallow", "shl", "shl_assign",
                        "shorter_tail_lifetimes",
                        "should_not_be_called_on_const_items", "should_panic",
                        "show", "shr", "shr_assign", "signed", "simd", "simd_add",
                        "simd_and", "simd_arith_offset", "simd_as", "simd_bitmask",
                        "simd_bitreverse", "simd_bswap", "simd_carryless_mul",
                        "simd_cast", "simd_cast_ptr", "simd_ceil", "simd_ctlz",
                        "simd_ctpop", "simd_cttz", "simd_div", "simd_eq",
                        "simd_expose_provenance", "simd_extract",
                        "simd_extract_dyn", "simd_fabs", "simd_fcos", "simd_fexp",
                        "simd_fexp2", "simd_ffi", "simd_flog", "simd_flog2",
                        "simd_flog10", "simd_floor", "simd_fma", "simd_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_maximum_number_nsz",
                        "simd_minimum_number_nsz", "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", "sin", "since", "size", "size_of",
                        "size_of_type_id", "size_of_val", "sized",
                        "sized_hierarchy", "slice", "slice_from_raw_parts",
                        "slice_from_raw_parts_mut", "slice_get_unchecked",
                        "slice_len_fn", "slice_patterns", "slicing_syntax",
                        "soft-float", "sparc", "sparc64", "sparc_target_feature",
                        "spe_acc", "specialization", "speed", "spirv", "splat",
                        "splatted_index", "spotlight", "sqrt", "sreg", "sreg_low16",
                        "sse", "sse2", "sse4a_target_feature", "stable",
                        "staged_api", "start", "state", "static_align",
                        "static_in_const", "static_nobundle", "static_recursion",
                        "staticlib", "std", "std_lib_injection", "std_panic",
                        "std_panic_2015_macro", "std_panic_macro", "stmt",
                        "stmt_expr_attributes", "stop_after_dataflow", "store",
                        "str", "str_from_utf8", "str_from_utf8_mut",
                        "str_from_utf8_unchecked", "str_from_utf8_unchecked_mut",
                        "str_inherent_from_utf8", "str_inherent_from_utf8_mut",
                        "str_inherent_from_utf8_unchecked",
                        "str_inherent_from_utf8_unchecked_mut",
                        "strict_provenance_lints", "string_deref_patterns",
                        "stringify", "struct_field_attributes", "struct_inherit",
                        "struct_variant", "structural_match", "structural_peq",
                        "sub", "sub_assign", "sub_with_overflow", "suggestion",
                        "super_let", "supertrait_item_shadowing", "sve", "sve_cast",
                        "sve_tuple_create2", "sve_tuple_create3",
                        "sve_tuple_create4", "sve_tuple_get", "sve_tuple_set",
                        "sym", "sync", "synthetic", "t32", "target", "target_abi",
                        "target_arch", "target_endian", "target_env",
                        "target_family", "target_feature", "target_feature_11",
                        "target_feature_inline_always", "target_has_atomic",
                        "target_has_atomic_load_store",
                        "target_has_atomic_primitive_alignment",
                        "target_has_reliable_f16", "target_has_reliable_f16_math",
                        "target_has_reliable_f16b", "target_has_reliable_f128",
                        "target_has_reliable_f128_math", "target_has_threads",
                        "target_object_format", "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_binder_constraints",
                        "test_case", "test_incomplete_feature",
                        "test_removed_feature", "test_runner", "test_unstable_lint",
                        "this", "thread", "thread_local", "threadptr",
                        "three_way_compare", "thumb2", "thumb-mode", "time",
                        "tmm_reg", "to_owned_method", "to_string", "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", "trunc", "try_as_dyn",
                        "try_blocks", "try_blocks_heterogeneous", "try_capture",
                        "try_from", "try_into", "try_trait_v2",
                        "try_trait_v2_residual", "try_update", "tt", "tuple",
                        "tuple_indexing", "tuple_trait", "two_phase", "ty",
                        "type_alias_enum_variants", "type_alias_impl_trait",
                        "type_ascription", "type_changing_struct_update", "type_id",
                        "type_id_array_len", "type_id_element_ty", "type_id_eq",
                        "type_id_field_representing_type", "type_id_fields",
                        "type_id_function_ptr", "type_id_generics",
                        "type_id_is_signed", "type_id_non_exhaustive",
                        "type_id_points_mutably", "type_id_points_to",
                        "type_id_size_of", "type_id_type_of",
                        "type_id_variant_name", "type_id_variant_non_exhaustive",
                        "type_id_variants", "type_id_vtable", "type_info",
                        "type_info_generic", "type_ir", "type_ir_infer_ctxt_like",
                        "type_ir_inherent", "type_ir_interner", "type_length_limit",
                        "type_macros", "type_name", "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",
                        "unimplemented_macro", "unit", "universal_impl_trait",
                        "unix", "unlikely", "unmarked_api", "unnamed_enum_variants",
                        "unnamed_fields", "unpin", "unqualified_local_imports",
                        "unreachable", "unreachable_2015", "unreachable_2015_macro",
                        "unreachable_2021", "unreachable_code",
                        "unreachable_display", "unreachable_macro", "unresolved",
                        "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?",
                        "unstable_removed", "untagged_unions", "unused_imports",
                        "unwind", "unwind_attributes", "unwind_safe_trait",
                        "unwrap", "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", "v9", "va_arg", "va_arg_safe", "va_copy",
                        "va_end", "va_list", "val", "validity", "value", "values",
                        "var", "variadic", "variant_count", "vec", "vector",
                        "verbatim", "version", "vfp2", "vgpr16", "vgpr32", "vgpr64",
                        "vgpr96", "vgpr128", "vgpr160", "vgpr192", "vgpr224",
                        "vgpr256", "vgpr288", "vgpr320", "vgpr352", "vgpr384",
                        "vgpr512", "vgpr1024", "view_type", "view_types", "vis",
                        "visible_private_types", "volatile", "volatile_copy_memory",
                        "volatile_copy_nonoverlapping_memory", "volatile_load",
                        "volatile_set_memory", "volatile_store", "vreg",
                        "vreg_low16", "vreg_pair", "vsreg", "vsx", "vtable_align",
                        "vtable_size", "warn", "warnings", "wasip2", "wasm",
                        "wasm32", "wasm64", "wasm_abi", "wasm_import_module",
                        "wasm_target_feature", "weak", "weak_odr",
                        "where_clause_attrs", "while_let", "whole-archive", "width",
                        "windowed", "windows", "windows_subsystem",
                        "with_negative_coherence", "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", "xcoff", "xer", "xloop",
                        "xmm_reg", "xop_target_feature", "xreg", "xtensa",
                        "xtensa_target_feature", "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", "A", "B", "C", "D", "E", "F", "G",
                        "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S",
                        "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e",
                        "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q",
                        "r", "s", "t", "u", "v", "w", "x", "y", "z",
                        "1.102.0-nightly"], extra_symbols)
    }
}symbols! {
24    // This list includes things that are definitely keywords (e.g. `if`), a
25    // few things that are definitely not keywords (e.g. `{{root}}`) and things
26    // where there is disagreement between people and/or documents (such as the
27    // Rust Reference) about whether it is a keyword (e.g. `_`).
28    //
29    // If you modify this list, adjust any relevant `Symbol::{is,can_be}_*`
30    // predicates and `used_keywords`. Also consider adding new keywords to the
31    // `ui/parser/raw/raw-idents.rs` test.
32    Keywords {
33        // Special reserved identifiers used internally for unnamed method
34        // parameters, crate root module, etc.
35        // Matching predicates: `is_special`/`is_reserved`
36        //
37        // tidy-alphabetical-start
38        DollarCrate:        "$crate",
39        PathRoot:           "{{root}}",
40        Underscore:         "_",
41        // tidy-alphabetical-end
42
43        // Keywords that are used in stable Rust.
44        // Matching predicates: `is_used_keyword_always`/`is_reserved`
45        // tidy-alphabetical-start
46        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        // tidy-alphabetical-end
82
83        // Keywords that are used in unstable Rust or reserved for future use.
84        // Matching predicates: `is_unused_keyword_always`/`is_reserved`
85        // tidy-alphabetical-start
86        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        // tidy-alphabetical-end
99
100        // Edition-specific keywords that are used in stable Rust.
101        // Matching predicates: `is_used_keyword_conditional`/`is_reserved` (if
102        // the edition suffices)
103        // tidy-alphabetical-start
104        Async:              "async", // >= 2018 Edition only
105        Await:              "await", // >= 2018 Edition only
106        Dyn:                "dyn", // >= 2018 Edition only
107        // tidy-alphabetical-end
108
109        // Edition-specific keywords that are used in unstable Rust or reserved for future use.
110        // Matching predicates: `is_unused_keyword_conditional`/`is_reserved` (if
111        // the edition suffices)
112        // tidy-alphabetical-start
113        Gen:                "gen", // >= 2024 Edition only
114        Try:                "try", // >= 2018 Edition only
115        // tidy-alphabetical-end
116
117        // "Lifetime keywords": regular keywords with a leading `'`.
118        // Matching predicates: none
119        // tidy-alphabetical-start
120        StaticLifetime:     "'static",
121        UnderscoreLifetime: "'_",
122        // tidy-alphabetical-end
123
124        // Weak keywords, have special meaning only in specific contexts.
125        // Matching predicates: `is_weak`
126        // tidy-alphabetical-start
127        Auto:               "auto",
128        Catch:              "catch",
129        ContractEnsures:    "contract_ensures",
130        ContractRequires:   "contract_requires",
131        Default:            "default",
132        Deref:              "deref",
133        FieldOf:            "field_of",
134        MacroRules:         "macro_rules",
135        OffsetOf:           "offset_of",
136        Pin:                "pin",
137        Raw:                "raw",
138        Reuse:              "reuse",
139        Safe:               "safe",
140        TypeAscribe:        "type_ascribe",
141        Union:              "union",
142        UnwrapBinder:       "unwrap_binder",
143        WrapBinder:         "wrap_binder",
144        Yeet:               "yeet",
145        // tidy-alphabetical-end
146    }
147
148    // Pre-interned symbols that can be referred to with `rustc_span::sym::*`.
149    //
150    // The symbol is the stringified identifier unless otherwise specified, in
151    // which case the name should mention the non-identifier punctuation.
152    // E.g. `sym::proc_dash_macro` represents "proc-macro", and it shouldn't be
153    // called `sym::proc_macro` because then it's easy to mistakenly think it
154    // represents "proc_macro".
155    //
156    // As well as the symbols listed, there are symbols for the strings
157    // "0", "1", ..., "9", which are accessible via `sym::integer`.
158    //
159    // There is currently no checking that all symbols are used; that would be
160    // nice to have.
161    Symbols {
162        // tidy-alphabetical-start
163        Abi,
164        AcqRel,
165        Acquire,
166        Active,
167        ActiveOnly,
168        Alignment,
169        Arc,
170        ArcWeak,
171        Array,
172        ArrayToPointer,
173        AsMut,
174        AsRef,
175        AssertParamIsClone,
176        AssertParamIsCopy,
177        AssertParamIsEq,
178        AsyncGenFinished,
179        AsyncGenPending,
180        AsyncGenReady,
181        Atomic,
182        BTreeMap,
183        Bool,
184        Borrow,
185        BorrowMut,
186        BoxDerefTransmute,
187        Break,
188        BuildHasher,
189        CStr,
190        CallOnceFuture,
191        CallRefFuture,
192        Capture,
193        Cell,
194        Char,
195        Cleanup,
196        Client,
197        Clone,
198        ClosureFnPointer,
199        CoercePointee,
200        CoercePointeeValidated,
201        CoerceShared,
202        CoerceUnsized,
203        Const,
204        ConstParamTy,
205        ConstParamTy_,
206        Context,
207        Continue,
208        ControlFlow,
209        Copy,
210        Cow,
211        Debug,
212        Default,
213        Deref,
214        DispatchFromDyn,
215        Display,
216        DropGuard,
217        Dual,
218        DualOnly,
219        Dualv,
220        DualvOnly,
221        Duplicated,
222        DuplicatedOnly,
223        DynTrait,
224        Enum,
225        Eq,
226        Equal,
227        Err,
228        ExitCode,
229        ExternC,
230        ExternRust,
231        Float,
232        FloatToFloat,
233        FloatToInt,
234        FmtArgumentsNew,
235        Fn,
236        FnMut,
237        FnOnce,
238        FnPtr,
239        FnPtrToPtr,
240        Formatter,
241        Forward,
242        From,
243        FromIterator,
244        FromResidual,
245        GenericTypeVisitable,
246        GlobalAlloc,
247        Hash,
248        HashMap,
249        HashSet,
250        Hasher,
251        InCleanup,
252        IndexOutput,
253        Input,
254        Int,
255        IntToFloat,
256        IntToInt,
257        Into,
258        IntoAsyncIterator,
259        IntoFuture,
260        IntoIterator,
261        IntoIteratorItem,
262        IoBufReader,
263        IrTyKind,
264        Item,
265        Iterator,
266        IteratorItem,
267        IteratorMap,
268        Layout,
269        Lifetime,
270        LintPass,
271        LocalKey,
272        MutToConstPointer,
273        Mutex,
274        MutexGuard,
275        Named,
276        NonZero,
277        None,
278        Normal,
279        Ok,
280        Option,
281        Ord,
282        Ordering,
283        Other,
284        Output,
285        ParamSet,
286        PartialEq,
287        PartialOrd,
288        Pending,
289        PinDerefMutHelper,
290        PinMacroHelper,
291        Pointer,
292        PointerCoercion,
293        PointerExposeProvenance,
294        PointerWithExposedProvenance,
295        Poll,
296        PtrToPtr,
297        Range,
298        RangeCopy,
299        RangeFrom,
300        RangeFromCopy,
301        RangeFull,
302        RangeInclusive,
303        RangeInclusiveCopy,
304        RangeMax,
305        RangeMin,
306        RangeSub,
307        RangeTo,
308        RangeToInclusive,
309        RangeToInclusiveCopy,
310        Rc,
311        RcWeak,
312        Ready,
313        Reborrow,
314        RefCell,
315        Reference,
316        ReifyFnPointer,
317        Relaxed,
318        Release,
319        Result,
320        ResumeTy,
321        Reverse,
322        Rust,
323        // Temporary name for the rust_embed hack introduced in #145108
324        RustEmbed,
325        RustaceansAreAwesome,
326        RwLock,
327        RwLockReadGuard,
328        RwLockWriteGuard,
329        Safe,
330        Safety,
331        SelfTy,
332        Send,
333        SeqCst,
334        ShouldPanic,
335        Sized,
336        Slice,
337        SliceIndex,
338        Some,
339        Source,
340        StdinLock,
341        Str,
342        String,
343        Struct,
344        StructuralPartialEq,
345        Subtype,
346        SymbolIntern,
347        Sync,
348        SyncUnsafeCell,
349        Target,
350        TestType,
351        This,
352        TokenStream,
353        Transmute,
354        TrivialClone,
355        Try,
356        TryCaptureGeneric,
357        TryCapturePrintable,
358        TryFrom,
359        TryInto,
360        Tuple,
361        Ty,
362        TyCtxt,
363        TyKind,
364        Type,
365        TypeVisitable,
366        Union,
367        Unsafe,
368        UnsafeFnPointer,
369        Unsize,
370        UnsizePointee,
371        Vec,
372        Wrapper,
373        _DECLS,
374        __H,
375        __S,
376        __awaitee,
377        __ensures_checker,
378        __ret,
379        __try_var,
380        _t,
381        _task_context,
382        a32,
383        aarch64,
384        aarch64_target_feature,
385        aarch64_unstable_target_feature,
386        aarch64_ver_target_feature,
387        abi,
388        abi_amdgpu_kernel,
389        abi_avr_interrupt,
390        abi_c_cmse_nonsecure_call,
391        abi_cmse_nonsecure_call,
392        abi_custom,
393        abi_efiapi,
394        abi_gpu_kernel,
395        abi_msp430_interrupt,
396        abi_ptx,
397        abi_riscv_interrupt,
398        abi_swift,
399        abi_sysv64,
400        abi_thiscall,
401        abi_unadjusted,
402        abi_vectorcall,
403        abi_x86_interrupt,
404        abort,
405        abort_immediate,
406        add,
407        add_assign,
408        add_with_overflow,
409        address,
410        adt_const_params,
411        advanced_slice_patterns,
412        adx_target_feature,
413        aes,
414        aggregate_raw_ptr,
415        alias,
416        align,
417        align_of,
418        align_of_val,
419        alignment,
420        all,
421        alloc,
422        alloc_error_handler,
423        alloc_layout,
424        alloc_zeroed,
425        allocator,
426        allocator_internals,
427        allow,
428        allow_fail,
429        allow_internal_unsafe,
430        allow_internal_unstable,
431        altivec,
432        alu32,
433        always,
434        ambiguity,
435        amdgpu,
436        amdgpu_dispatch_ptr,
437        analysis,
438        and,
439        and_then,
440        anon,
441        anon_assoc,
442        anonymous_lifetime_in_impl_trait,
443        any,
444        apx_target_feature,
445        arbitrary_enum_discriminant,
446        arbitrary_self_types,
447        arbitrary_self_types_pointers,
448        areg,
449        args,
450        arith_offset,
451        arm,
452        arm64ec,
453        arm_a32: "arm::a32",
454        arm_t32: "arm::t32",
455        arm_target_feature,
456        array,
457        as_dash_needed: "as-needed",
458        as_ptr,
459        as_ref,
460        asm,
461        asm_cfg,
462        asm_const,
463        asm_const_ptr,
464        asm_experimental_arch,
465        asm_experimental_reg,
466        asm_goto,
467        asm_goto_with_outputs,
468        asm_sym,
469        asm_unwind,
470        assert,
471        assert_eq,
472        assert_eq_macro,
473        assert_fields_are_eq,
474        assert_inhabited,
475        assert_macro,
476        assert_mem_uninitialized_valid,
477        assert_ne_macro,
478        assert_receiver_is_total_eq,
479        assert_zero_valid,
480        asserting,
481        associated_const_equality,
482        associated_consts,
483        associated_type_bounds,
484        associated_type_defaults,
485        associated_types,
486        assume,
487        assume_init,
488        asterisk: "*",
489        async_await,
490        async_call,
491        async_call_mut,
492        async_call_once,
493        async_closure,
494        async_drop,
495        async_drop_in_place,
496        async_fn,
497        async_fn_in_dyn_trait,
498        async_fn_in_trait,
499        async_fn_kind_helper,
500        async_fn_kind_upvars,
501        async_fn_mut,
502        async_fn_once,
503        async_fn_once_output,
504        async_fn_track_caller,
505        async_fn_traits,
506        async_for_loop,
507        async_gen_internals,
508        async_iterator,
509        async_iterator_poll_next,
510        async_trait_bounds,
511        atomic,
512        atomic_and,
513        atomic_cxchg,
514        atomic_cxchgweak,
515        atomic_fence,
516        atomic_load,
517        atomic_max,
518        atomic_min,
519        atomic_nand,
520        atomic_or,
521        atomic_singlethreadfence,
522        atomic_store,
523        atomic_umax,
524        atomic_umin,
525        atomic_xadd,
526        atomic_xchg,
527        atomic_xor,
528        atomic_xsub,
529        atomics,
530        att_syntax,
531        attr,
532        attr_literals,
533        attribute,
534        attributes,
535        audit_that,
536        augmented_assignments,
537        auto_cfg,
538        auto_traits,
539        autodiff,
540        autodiff_forward,
541        autodiff_reverse,
542        automatically_derived,
543        available_externally,
544        avr,
545        avr_target_feature,
546        avx,
547        avx10_target_feature,
548        avx512_target_feature,
549        avx512bw,
550        avx512f,
551        await_macro,
552        backchain,
553        backend_repr,
554        begin_panic,
555        bench,
556        bevy_ecs,
557        bikeshed,
558        bikeshed_guaranteed_no_drop,
559        bin,
560        bind_by_move_pattern_guards,
561        bindings_after_at,
562        bitand,
563        bitand_assign,
564        bitor,
565        bitor_assign,
566        bitreverse,
567        bits,
568        bitxor,
569        bitxor_assign,
570        bivariant,
571        black_box,
572        block,
573        blocking,
574        bool,
575        borrowck_graphviz_format,
576        borrowck_graphviz_postflow,
577        box_new,
578        box_patterns,
579        box_syntax,
580        boxed_slice,
581        bpf,
582        bpf_target_feature,
583        braced_empty_structs,
584        branch,
585        breakpoint,
586        breg,
587        bridge,
588        bswap,
589        built,
590        bundle,
591        c_dash_variadic,
592        c_str_literals,
593        c_unwind,
594        c_variadic,
595        c_variadic_experimental_arch,
596        c_variadic_naked_functions,
597        c_void,
598        call,
599        call_mut,
600        call_once,
601        call_once_future,
602        call_ref_future,
603        caller,
604        caller_location,
605        capture_disjoint_fields,
606        carrying_mul_add,
607        carryless_mul,
608        catch_unwind,
609        cause,
610        cdylib,
611        ceil,
612        cfg,
613        cfg_accessible,
614        cfg_attr,
615        cfg_attr_multi,
616        cfg_boolean_literals,
617        cfg_contract_checks,
618        cfg_doctest,
619        cfg_eval,
620        cfg_overflow_checks,
621        cfg_panic,
622        cfg_relocation_model,
623        cfg_sanitize,
624        cfg_sanitizer_cfi,
625        cfg_select,
626        cfg_target_abi,
627        cfg_target_compact,
628        cfg_target_feature,
629        cfg_target_has_atomic,
630        cfg_target_has_atomic_equal_alignment,
631        cfg_target_has_reliable_f16_f128,
632        cfg_target_has_reliable_f16b,
633        cfg_target_has_threads,
634        cfg_target_object_format,
635        cfg_target_thread_local,
636        cfg_target_vendor,
637        cfg_ub_checks,
638        cfg_version,
639        cfi,
640        cfi_encoding,
641        char,
642        checked_type_aliases,
643        clflushopt_target_feature,
644        client,
645        clippy,
646        clobber_abi,
647        clone,
648        clone_closures,
649        clone_fn,
650        clone_from,
651        clone_from_fn,
652        close_fn,
653        closure,
654        closure_lifetime_binder,
655        closure_to_fn_coercion,
656        closure_track_caller,
657        cmp,
658        cmp_ord_max,
659        cmp_ord_min,
660        cmp_partialeq_eq,
661        cmp_partialeq_ne,
662        cmp_partialord_cmp,
663        cmp_partialord_ge,
664        cmp_partialord_gt,
665        cmp_partialord_le,
666        cmp_partialord_lt,
667        cmpxchg16b_target_feature,
668        cmse_nonsecure_entry,
669        code,
670        codeview_annotation,
671        coerce_pointee_validated,
672        coerce_shared,
673        coerce_shared_target,
674        coerce_unsized,
675        coff,
676        cold,
677        cold_path,
678        collapse_debuginfo,
679        color,
680        column,
681        compare_bytes,
682        compare_exchange,
683        compare_exchange_weak,
684        compile_error,
685        compiler,
686        compiler_builtins,
687        compiler_copy,
688        compiler_fence,
689        compiler_move,
690        complex,
691        concat,
692        concat_bytes,
693        concat_str,
694        conservative_impl_trait,
695        console,
696        const_allocate,
697        const_async_blocks,
698        const_block_items,
699        const_c_variadic,
700        const_closures,
701        const_compare_raw_pointers,
702        const_constructor,
703        const_continue,
704        const_deallocate,
705        const_destruct,
706        const_eval_limit,
707        const_eval_select,
708        const_evaluatable_checked,
709        const_extern_fn,
710        const_fn,
711        const_fn_floating_point_arithmetic,
712        const_fn_fn_ptr_basics,
713        const_fn_trait_bound,
714        const_fn_transmute,
715        const_fn_union,
716        const_fn_unsize,
717        const_for,
718        const_format_args,
719        const_generics,
720        const_generics_defaults,
721        const_if_match,
722        const_impl_trait,
723        const_in_array_repeat_expressions,
724        const_indexing,
725        const_let,
726        const_loop,
727        const_make_global,
728        const_mut_refs,
729        const_panic,
730        const_panic_fmt,
731        const_param_ty,
732        const_param_ty_unchecked,
733        const_precise_live_drops,
734        const_ptr_cast,
735        const_raw_ptr_deref,
736        const_raw_ptr_to_usize_cast,
737        const_refs_to_cell,
738        const_refs_to_static,
739        const_trait_bound_opt_out,
740        const_trait_impl,
741        const_try,
742        const_ty_placeholder: "<const_ty>",
743        constant,
744        constructor,
745        contract_build_check_ensures,
746        contract_check_ensures,
747        contract_check_requires,
748        contract_checks,
749        contracts,
750        contracts_ensures,
751        contracts_internals,
752        contracts_requires,
753        contravariant,
754        convert,
755        coprocessor,
756        copy,
757        copy_closures,
758        copy_nonoverlapping,
759        copysignf16,
760        copysignf32,
761        copysignf64,
762        copysignf128,
763        core,
764        core_panic,
765        core_panic_2015_macro,
766        core_panic_macro,
767        coroutine,
768        coroutine_clone,
769        coroutine_resume,
770        coroutine_return,
771        coroutine_state,
772        coroutine_yield,
773        coroutines,
774        cos,
775        count,
776        covariant,
777        covariant_unsafe_cell,
778        coverage,
779        coverage_attribute,
780        cr,
781        crate_in_paths,
782        crate_local,
783        crate_name,
784        crate_type,
785        crate_visibility_modifier,
786        crt_dash_static: "crt-static",
787        csky,
788        csky_target_feature,
789        cstr_type,
790        cstring_type,
791        ctlz,
792        ctlz_nonzero,
793        ctpop,
794        ctr,
795        cttz,
796        cttz_nonzero,
797        custom_attribute,
798        custom_code_classes_in_docs,
799        custom_derive,
800        custom_inner_attributes,
801        custom_mir,
802        custom_test_frameworks,
803        d32,
804        dead_code,
805        dead_code_pub_in_binary,
806        dealloc,
807        debug,
808        debug_assert_eq_macro,
809        debug_assert_macro,
810        debug_assert_ne_macro,
811        debug_assertions,
812        debug_c_like_enum_write_str,
813        debug_struct_fields_finish,
814        debugger_visualizer,
815        decl_macro,
816        declare_lint_pass,
817        decorated,
818        default_alloc_error_handler,
819        default_field_values,
820        default_fn,
821        default_lib_allocator,
822        // --------------------------
823        // Lang items which are used only for experiments with auto traits with default bounds.
824        // These lang items are not actually defined in core/std. Experiment is a part of
825        // `MCP: Low level components for async drop`(https://github.com/rust-lang/compiler-team/issues/727)
826        default_trait1,
827        default_trait2,
828        default_trait3,
829        default_trait4,
830        // --------------------------
831        default_type_parameter_fallback,
832        default_type_params,
833        define_opaque,
834        deny,
835        deprecated,
836        deprecated_safe,
837        deprecated_suggestion,
838        deref_method,
839        deref_mut,
840        deref_patterns,
841        deref_pure,
842        deref_target,
843        derive,
844        derive_const,
845        derive_default_enum,
846        derive_from,
847        derive_smart_pointer,
848        destruct,
849        destructuring_assignment,
850        diagnostic,
851        diagnostic_namespace,
852        diagnostic_on_const,
853        diagnostic_on_move,
854        diagnostic_on_type_error,
855        diagnostic_on_unknown,
856        diagnostic_on_unmatch_args,
857        diagnostic_on_unmatched_args,
858        diagnostic_opaque,
859        dialect,
860        direct,
861        discriminant_kind,
862        discriminant_type,
863        discriminant_value,
864        disjoint_bitor,
865        dispatch_from_dyn,
866        div,
867        div_assign,
868        diverging_block_default,
869        dl,
870        do_not_recommend,
871        doc,
872        doc_alias,
873        doc_auto_cfg,
874        doc_cfg,
875        doc_cfg_hide,
876        doc_keyword,
877        doc_masked,
878        doc_notable_trait,
879        doc_primitive,
880        doc_spotlight,
881        doctest,
882        dotdot_in_tuple_patterns,
883        dotdoteq_in_patterns,
884        dreg,
885        dreg_low8,
886        dreg_low16,
887        dret,
888        drop,
889        drop_glue,
890        drop_in_place,
891        drop_types_in_const,
892        dropck_eyepatch,
893        dropck_parametricity,
894        dummy: "<!dummy!>", // use this instead of `sym::empty` for symbols that won't be used
895        dummy_cgu_name,
896        dylib,
897        dyn_compatible_for_dispatch,
898        dyn_metadata,
899        dyn_star,
900        dyn_trait,
901        dynamic_no_pic: "dynamic-no-pic",
902        edition_panic,
903        effective_target_features,
904        effects,
905        eh_personality,
906        eii,
907        eii_declaration,
908        eii_internals,
909        eii_shared_macro,
910        element_ty,
911        elf,
912        // Notes about `sym::empty`:
913        // - It should only be used when it genuinely means "empty symbol". Use
914        //   `Option<Symbol>` when "no symbol" is a possibility.
915        // - For dummy symbols that are never used and absolutely must be
916        //   present, it's better to use `sym::dummy` than `sym::empty`, because
917        //   it's clearer that it's intended as a dummy value, and more likely
918        //   to be detected if it accidentally does get used.
919        empty: "",
920        empty_braces: "{}",
921        empty_brackets: "[]",
922        empty_parens: "()",
923        enable,
924        end,
925        entry_nops,
926        env,
927        env_CFG_RELEASE: env!("CFG_RELEASE"),
928        eprint_macro,
929        eprintln_macro,
930        eq,
931        ergonomic_clones,
932        ermsb_target_feature,
933        exact_div,
934        except,
935        exception,
936        exception_handling: "exception-handling",
937        exclusive_range_pattern,
938        exhaustive_integer_patterns,
939        exhaustive_patterns,
940        existential_type,
941        exists,
942        exp,
943        exp2,
944        expand1,
945        expand2,
946        expect,
947        expected,
948        explicit_extern_abis,
949        explicit_generic_args_with_impl_trait,
950        explicit_tail_calls,
951        export_name,
952        export_stable,
953        export_symbols: "export-symbols",
954        expr,
955        expr_2021,
956        expr_fragment_specifier_2024,
957        extended_key_value_attributes,
958        extended_varargs_abi_support,
959        extendedl32r,
960        extern_absolute_paths,
961        extern_crate_item_prelude,
962        extern_crate_self,
963        extern_in_paths,
964        extern_item_impls,
965        extern_prelude,
966        extern_system_varargs,
967        extern_types,
968        extern_weak,
969        external,
970        external_doc,
971        f16,
972        f16_nan,
973        f16b,
974        f16c_target_feature,
975        f32,
976        f32_nan,
977        f64,
978        f64_nan,
979        f128,
980        f128_nan,
981        fabs,
982        fadd_algebraic,
983        fadd_fast,
984        fake_variadic,
985        fallback,
986        fdiv_algebraic,
987        fdiv_fast,
988        feature,
989        fence,
990        ferris: "🦀",
991        fetch_update,
992        ffi_const,
993        ffi_pure,
994        ffi_returns_twice,
995        ffr,
996        field,
997        field_base,
998        field_init_shorthand,
999        field_offset,
1000        field_projections,
1001        field_representing_type,
1002        field_representing_type_actual_type_id,
1003        field_representing_type_name,
1004        field_representing_type_offset,
1005        field_representing_type_raw,
1006        field_type,
1007        fields,
1008        file,
1009        final_associated_functions,
1010        float_mul_add_relaxed,
1011        float_to_int_unchecked,
1012        floor,
1013        fma,
1014        fma4_target_feature,
1015        fmt,
1016        fmt_debug,
1017        fmul_algebraic,
1018        fmul_fast,
1019        fmuladd,
1020        fn_align,
1021        fn_body,
1022        fn_delegation,
1023        fn_must_use,
1024        fn_mut,
1025        fn_once,
1026        fn_once_output,
1027        fn_ptr_as_ptr,
1028        fn_ptr_from_ptr,
1029        fn_ptr_trait,
1030        fn_static,
1031        forall,
1032        forbid,
1033        force_target_feature,
1034        forced_keywords,
1035        forget,
1036        forget_trait,
1037        format_args,
1038        format_args_capture,
1039        format_args_macro,
1040        format_args_nl,
1041        format_argument,
1042        format_arguments,
1043        format_macro,
1044        format_placeholder,
1045        format_unsafe_arg,
1046        found,
1047        fp,
1048        fpregs,
1049        framework,
1050        freeze,
1051        freeze_impls,
1052        freg,
1053        frem_algebraic,
1054        frem_fast,
1055        from,
1056        from_desugaring,
1057        from_iter,
1058        from_output,
1059        from_residual,
1060        from_size_align_unchecked,
1061        from_size_alignment_unchecked,
1062        from_str,
1063        from_str_nonconst,
1064        from_usize,
1065        from_yeet,
1066        frontmatter,
1067        fsub_algebraic,
1068        fsub_fast,
1069        full,
1070        function_arg_const_generics,
1071        fundamental,
1072        fused_iterator,
1073        future_output,
1074        future_trait,
1075        fxsr,
1076        gca,
1077        gca_adts,
1078        gca_const_items,
1079        gca_macroless_args,
1080        gca_macroless_items,
1081        gca_min_const_items,
1082        gdb_script_file,
1083        ge,
1084        gen_blocks,
1085        gen_future,
1086        generator_clone,
1087        generators,
1088        generic_arg_infer,
1089        generic_assert,
1090        generic_associated_types,
1091        generic_associated_types_extended,
1092        generic_const_args,
1093        generic_const_exprs,
1094        generic_const_items,
1095        generic_const_parameter_types,
1096        generic_param_attrs,
1097        generic_pattern_types,
1098        generics,
1099        get_context,
1100        global_alloc_ty,
1101        global_allocator,
1102        global_asm,
1103        global_registration,
1104        globs,
1105        gpu_kernel: "gpu-kernel",
1106        gpu_launch_sized_workgroup_mem,
1107        gt,
1108        guard,
1109        guard_patterns,
1110        half_open_range_patterns,
1111        half_open_range_patterns_in_slices,
1112        hash,
1113        hexagon,
1114        hexagon_target_feature,
1115        hidden,
1116        hide,
1117        highpriinterrupts,
1118        hint,
1119        homogeneous_aggregate,
1120        html_favicon_url,
1121        html_logo_url,
1122        html_no_source,
1123        html_playground_url,
1124        html_root_url,
1125        hvx,
1126        hvx_length64b: "hvx-length64b",
1127        hvx_length128b: "hvx-length128b",
1128        hwaddress,
1129        i8,
1130        i16,
1131        i32,
1132        i64,
1133        i128,
1134        i128_type,
1135        ident,
1136        ident_from_str_and_span,
1137        if_let,
1138        if_let_guard,
1139        if_let_rescope,
1140        if_while_or_patterns,
1141        ignore,
1142        immediate_abort: "immediate-abort",
1143        impl_header_lifetime_elision,
1144        impl_lint_pass,
1145        impl_restriction,
1146        impl_trait_in_assoc_type,
1147        impl_trait_in_bindings,
1148        impl_trait_in_fn_trait_return,
1149        impl_trait_projections,
1150        implied_by,
1151        import,
1152        import_name_type,
1153        import_shadowing,
1154        import_trait_associated_functions,
1155        imported_main,
1156        in_band_lifetimes,
1157        include,
1158        include_bytes,
1159        include_str,
1160        inclusive_range_syntax,
1161        incomplete_features,
1162        index,
1163        index_mut,
1164        infer_outlives_requirements,
1165        infer_static_outlives_requirements,
1166        inherent_associated_types,
1167        initial,
1168        inlateout,
1169        inline,
1170        inline_const,
1171        inline_const_pat,
1172        inout,
1173        inputs,
1174        instruction_set,
1175        instrument_fn,
1176        integer_: "integer", // underscore to avoid clashing with the function `sym::integer` below
1177        integer_max,
1178        integer_min,
1179        integral,
1180        internal_eq_trait_method_impls,
1181        internal_features,
1182        internal_syntax,
1183        interrupt,
1184        into_async_iter_into_iter,
1185        into_future,
1186        into_iter,
1187        into_try_type,
1188        intra_doc_pointers,
1189        intrinsic_fallback_is_spec,
1190        intrinsics,
1191        invariant,
1192        irrefutable_let_patterns,
1193        is,
1194        is_auto,
1195        is_splatted,
1196        is_unsafe,
1197        is_val_statically_known,
1198        isa_attribute,
1199        isize,
1200        issue,
1201        issue_5723_bootstrap,
1202        issue_tracker_base_url,
1203        item,
1204        item_context,
1205        item_like_imports,
1206        iter,
1207        iter_mut,
1208        iterator,
1209        iterator_collect_fn,
1210        kcfi,
1211        kernel_address,
1212        kernel_hwaddress,
1213        keylocker_x86,
1214        keyword,
1215        kind,
1216        kreg,
1217        kreg0,
1218        label,
1219        label_break_value,
1220        lahfsahf_target_feature,
1221        lang,
1222        lang_items,
1223        large_assignments,
1224        largest_niche,
1225        last,
1226        lasx,
1227        late_bound_turbofishing,
1228        lateout,
1229        lazy_normalization_consts,
1230        lazy_type_alias,
1231        le,
1232        legacy_receiver,
1233        len,
1234        let_chains,
1235        let_else,
1236        lhs,
1237        lib,
1238        libc,
1239        lifetime,
1240        lifetime_capture_rules_2024,
1241        lifetimes,
1242        line,
1243        link,
1244        link_arg_attribute,
1245        link_args,
1246        link_cfg,
1247        link_dash_arg: "link-arg",
1248        link_enzyme_intrinsics,
1249        link_llvm_intrinsics,
1250        link_name,
1251        link_ordinal,
1252        link_section,
1253        linkage,
1254        linker,
1255        linker_info,
1256        linker_messages,
1257        linkonce,
1258        linkonce_odr,
1259        lint,
1260        lint_reasons,
1261        literal,
1262        little, big,
1263        load,
1264        loaded_from_disk,
1265        local,
1266        local_inner_macros,
1267        log,
1268        log2,
1269        log10,
1270        log_syntax,
1271        loongarch32,
1272        loongarch64,
1273        loongarch_target_feature,
1274        loop_break_value,
1275        loop_hints,
1276        loop_match,
1277        lr,
1278        lsx,
1279        lt,
1280        m68k,
1281        m68k_target_feature,
1282        mac16,
1283        macho: "mach-o",
1284        macro_at_most_once_rep,
1285        macro_attr,
1286        macro_attributes_in_derive_output,
1287        macro_derive,
1288        macro_escape,
1289        macro_export,
1290        macro_guard_matcher,
1291        macro_lifetime_matcher,
1292        macro_literal_matcher,
1293        macro_metavar_expr,
1294        macro_metavar_expr_concat,
1295        macro_reexport,
1296        macro_use,
1297        macro_vis_matcher,
1298        macroless_const_item_generic_const_args,
1299        macroless_generic_const_args,
1300        macros_in_extern,
1301        main,
1302        managed_boxes,
1303        manually_drop,
1304        map,
1305        map_err,
1306        marked_unchecked_type_aliases,
1307        marker,
1308        marker_trait_attr,
1309        masked,
1310        match_beginning_vert,
1311        match_default_bindings,
1312        maximum_number_nsz_f16,
1313        maximum_number_nsz_f32,
1314        maximum_number_nsz_f64,
1315        maximum_number_nsz_f128,
1316        maximumf16,
1317        maximumf32,
1318        maximumf64,
1319        maximumf128,
1320        may_dangle,
1321        may_unwind,
1322        maybe_dangling,
1323        maybe_uninit,
1324        maybe_uninit_uninit,
1325        maybe_uninit_zeroed,
1326        mem,
1327        mem_align_const,
1328        mem_discriminant,
1329        mem_drop,
1330        mem_forget,
1331        mem_size_const,
1332        mem_swap,
1333        mem_uninitialized,
1334        mem_variant_count,
1335        mem_zeroed,
1336        member_constraints,
1337        memory,
1338        memtag,
1339        message,
1340        meta,
1341        meta_sized,
1342        metadata_type,
1343        min_adt_const_params,
1344        min_const_fn,
1345        min_const_generics,
1346        min_const_unsafe_fn,
1347        min_exhaustive_patterns,
1348        min_generic_const_args,
1349        min_specialization,
1350        min_type_alias_impl_trait,
1351        minimum_number_nsz_f16,
1352        minimum_number_nsz_f32,
1353        minimum_number_nsz_f64,
1354        minimum_number_nsz_f128,
1355        minimumf16,
1356        minimumf32,
1357        minimumf64,
1358        minimumf128,
1359        mips,
1360        mips32r6,
1361        mips64,
1362        mips64r6,
1363        mips_target_feature,
1364        mir_assume,
1365        mir_basic_block,
1366        mir_call,
1367        mir_cast,
1368        mir_cast_fn_ptr_safety,
1369        mir_cast_kind,
1370        mir_cast_ptr_coercion,
1371        mir_cast_ptr_to_ptr,
1372        mir_cast_transmute,
1373        mir_cast_unsize,
1374        mir_checked,
1375        mir_debuginfo,
1376        mir_discriminant,
1377        mir_drop,
1378        mir_field,
1379        mir_goto,
1380        mir_make_place,
1381        mir_move,
1382        mir_offset,
1383        mir_ptr_metadata,
1384        mir_return,
1385        mir_return_to,
1386        mir_set_discriminant,
1387        mir_static,
1388        mir_static_mut,
1389        mir_storage_dead,
1390        mir_storage_live,
1391        mir_tail_call,
1392        mir_unreachable,
1393        mir_unwind_cleanup,
1394        mir_unwind_continue,
1395        mir_unwind_resume,
1396        mir_unwind_terminate,
1397        mir_unwind_terminate_reason,
1398        mir_unwind_unreachable,
1399        mir_variant,
1400        miri,
1401        misc,
1402        miscsr,
1403        mmx_reg,
1404        modifiers,
1405        module,
1406        module_path,
1407        more_maybe_bounds,
1408        more_qualified_paths,
1409        more_struct_aliases,
1410        movbe_target_feature,
1411        movdir64b_target_feature,
1412        movdiri_target_feature,
1413        move_expr,
1414        move_ref_pattern,
1415        move_size_limit,
1416        movrs_target_feature,
1417        msa,
1418        msp430,
1419        mul,
1420        mul_assign,
1421        mul_with_overflow,
1422        multiple_supertrait_upcastable,
1423        must_not_suspend,
1424        must_use,
1425        mut_preserve_binding_mode_2024,
1426        mut_ref,
1427        mut_restriction,
1428        mutable,
1429        naked,
1430        naked_asm,
1431        naked_functions,
1432        naked_functions_rustic_abi,
1433        naked_functions_target_feature,
1434        name,
1435        named_fn_trait_parameters,
1436        names,
1437        native_link_modifiers,
1438        native_link_modifiers_as_needed,
1439        native_link_modifiers_bundle,
1440        native_link_modifiers_verbatim,
1441        native_link_modifiers_whole_archive,
1442        natvis_file,
1443        ne,
1444        needs_allocator,
1445        needs_drop,
1446        needs_panic_runtime,
1447        neg,
1448        negate_unsigned,
1449        negative_bounds,
1450        negative_impls,
1451        neon,
1452        nested,
1453        never,
1454        never_patterns,
1455        never_returns_null_ptr,
1456        never_type,
1457        never_type_fallback,
1458        new,
1459        new_binary,
1460        new_debug,
1461        new_debug_noop,
1462        new_display,
1463        new_lower_exp,
1464        new_lower_hex,
1465        new_octal,
1466        new_pointer,
1467        new_range,
1468        new_unchecked,
1469        new_upper_exp,
1470        new_upper_hex,
1471        next,
1472        niko,
1473        nll,
1474        no,
1475        no_builtins,
1476        no_core,
1477        no_coverage,
1478        no_crate_inject,
1479        no_debug,
1480        no_default_passes,
1481        no_implicit_prelude,
1482        no_inline,
1483        no_link,
1484        no_main,
1485        no_mangle,
1486        no_sanitize,
1487        no_stack_check,
1488        no_std,
1489        nomem,
1490        non_ascii_idents,
1491        non_exhaustive,
1492        non_exhaustive_omitted_patterns_lint,
1493        non_lifetime_binders,
1494        non_modrs_mods,
1495        non_null,
1496        nonblocking,
1497        none,
1498        nontemporal_store,
1499        noop_method_borrow,
1500        noop_method_clone,
1501        noop_method_deref,
1502        noprefix,
1503        noreturn,
1504        nostack,
1505        not,
1506        notable_trait,
1507        note,
1508        null,
1509        nvptx64,
1510        nvptx_target_feature,
1511        object_safe_for_dispatch,
1512        of,
1513        off,
1514        offload,
1515        offload_get_num_devices,
1516        offload_kernel,
1517        offload_region,
1518        offset,
1519        offset_of_enum,
1520        offset_of_nested,
1521        offset_of_slice,
1522        ok_or_else,
1523        old_name,
1524        omit_gdb_pretty_printer_section,
1525        on,
1526        on_const,
1527        on_move,
1528        on_type_error,
1529        on_unimplemented,
1530        on_unknown,
1531        on_unmatched_args,
1532        opaque,
1533        opaque_module_name_placeholder: "<opaque>",
1534        ops,
1535        opt_out_copy,
1536        optimize,
1537        optimize_attribute,
1538        optimized,
1539        optin_builtin_traits,
1540        option,
1541        option_env,
1542        options,
1543        or,
1544        or_patterns,
1545        ord_cmp_method,
1546        other,
1547        out,
1548        output,
1549        overflow_checks,
1550        overlapping_marker_traits,
1551        owned_box,
1552        packed,
1553        packed_bundled_libs,
1554        panic,
1555        panic_2015,
1556        panic_2021,
1557        panic_abort,
1558        panic_bounds_check,
1559        panic_cannot_unwind,
1560        panic_const_add_overflow,
1561        panic_const_async_fn_resumed,
1562        panic_const_async_fn_resumed_drop,
1563        panic_const_async_fn_resumed_panic,
1564        panic_const_async_gen_fn_resumed,
1565        panic_const_async_gen_fn_resumed_drop,
1566        panic_const_async_gen_fn_resumed_panic,
1567        panic_const_coroutine_resumed,
1568        panic_const_coroutine_resumed_drop,
1569        panic_const_coroutine_resumed_panic,
1570        panic_const_div_by_zero,
1571        panic_const_div_overflow,
1572        panic_const_gen_fn_none,
1573        panic_const_gen_fn_none_drop,
1574        panic_const_gen_fn_none_panic,
1575        panic_const_mul_overflow,
1576        panic_const_neg_overflow,
1577        panic_const_rem_by_zero,
1578        panic_const_rem_overflow,
1579        panic_const_shl_overflow,
1580        panic_const_shr_overflow,
1581        panic_const_sub_overflow,
1582        panic_display,
1583        panic_fmt,
1584        panic_handler,
1585        panic_impl,
1586        panic_implementation,
1587        panic_in_cleanup,
1588        panic_info,
1589        panic_invalid_enum_construction,
1590        panic_location,
1591        panic_misaligned_pointer_dereference,
1592        panic_nounwind,
1593        panic_null_pointer_dereference,
1594        panic_null_reference_constructed,
1595        panic_runtime,
1596        panic_str_2015,
1597        panic_unwind,
1598        panicking,
1599        param_attrs,
1600        parent_label,
1601        partial_cmp,
1602        partial_ord,
1603        passes,
1604        pat,
1605        pat_param,
1606        patchable_function_entry,
1607        path,
1608        pattern_complexity_limit,
1609        pattern_parentheses,
1610        pattern_type,
1611        pattern_type_range_trait,
1612        pattern_types,
1613        phantom_data,
1614        phase,
1615        pic,
1616        pie,
1617        pin_drop,
1618        pin_ergonomics,
1619        pin_v2,
1620        platform_intrinsics,
1621        plugin,
1622        plugin_registrar,
1623        plugins,
1624        pointee,
1625        pointee_sized,
1626        pointee_trait,
1627        pointer,
1628        poll,
1629        post_cleanup: "post-cleanup",
1630        post_dash_lto: "post-lto",
1631        postfix_match,
1632        powerpc,
1633        powerpc64,
1634        powerpc_target_feature,
1635        powf,
1636        powi,
1637        ppcf128,
1638        pre_dash_lto: "pre-lto",
1639        precise_capturing,
1640        precise_capturing_in_traits,
1641        precise_pointer_size_matching,
1642        predicates,
1643        pref_align_of,
1644        prefetch_read_data,
1645        prefetch_read_instruction,
1646        prefetch_write_data,
1647        prefetch_write_instruction,
1648        prefix_nops,
1649        preg,
1650        prelude,
1651        prelude_import,
1652        preserves_flags,
1653        prfchw_target_feature,
1654        prid,
1655        primitive,
1656        print_macro,
1657        println_macro,
1658        proc_dash_macro: "proc-macro",
1659        proc_macro,
1660        proc_macro_attribute,
1661        proc_macro_derive,
1662        proc_macro_expr,
1663        proc_macro_gen,
1664        proc_macro_hygiene,
1665        proc_macro_internals,
1666        proc_macro_mod,
1667        proc_macro_non_items,
1668        proc_macro_path_invoc,
1669        profiler_runtime,
1670        ptr,
1671        ptr_cast,
1672        ptr_cast_const,
1673        ptr_cast_mut,
1674        ptr_const_is_null,
1675        ptr_copy,
1676        ptr_copy_nonoverlapping,
1677        ptr_drop_in_place,
1678        ptr_drop_in_place_self,
1679        ptr_from_ref,
1680        ptr_guaranteed_cmp,
1681        ptr_is_null,
1682        ptr_mask,
1683        ptr_metadata,
1684        ptr_null,
1685        ptr_null_mut,
1686        ptr_offset_from,
1687        ptr_offset_from_unsigned,
1688        ptr_read,
1689        ptr_read_unaligned,
1690        ptr_replace,
1691        ptr_swap,
1692        ptr_swap_nonoverlapping,
1693        ptr_write,
1694        ptr_write_bytes,
1695        ptr_write_unaligned,
1696        ptr_write_volatile,
1697        pub_macro_rules,
1698        pub_restricted,
1699        public,
1700        pure,
1701        pushpop_unsafe,
1702        qreg,
1703        qreg_low4,
1704        qreg_low8,
1705        quad_precision_float,
1706        question_mark,
1707        quote,
1708        range_inclusive_new,
1709        raw_dash_dylib: "raw-dylib",
1710        raw_dylib,
1711        raw_dylib_elf,
1712        raw_eq,
1713        raw_identifiers,
1714        raw_ref_op,
1715        re_rebalance_coherence,
1716        read_via_copy,
1717        readonly,
1718        realloc,
1719        realtime,
1720        reason,
1721        reborrow,
1722        receiver,
1723        receiver_target,
1724        recursion_limit,
1725        reexport_test_harness_main,
1726        ref_pat_eat_one_layer_2024,
1727        ref_pat_eat_one_layer_2024_structural,
1728        ref_pat_everywhere,
1729        ref_unwind_safe_trait,
1730        reference,
1731        reflect,
1732        reg,
1733        reg16,
1734        reg32,
1735        reg64,
1736        reg_abcd,
1737        reg_addr,
1738        reg_byte,
1739        reg_data,
1740        reg_iw,
1741        reg_nonzero,
1742        reg_pair,
1743        reg_ptr,
1744        reg_upper,
1745        register_attr,
1746        register_attribute_tool,
1747        register_lint_tool,
1748        register_tool,
1749        relaxed_adts,
1750        relaxed_struct_unsize,
1751        relocation_model,
1752        rem,
1753        rem_assign,
1754        repr,
1755        repr128,
1756        repr_align,
1757        repr_align_enum,
1758        repr_packed,
1759        repr_simd,
1760        repr_transparent,
1761        require,
1762        reserve_x18: "reserve-x18",
1763        residual,
1764        result,
1765        result_ffi_guarantees,
1766        resumable_breakpoint,
1767        return_address,
1768        return_position_impl_trait_in_trait,
1769        return_type_notation,
1770        right_arrow: "->",
1771        riscv32,
1772        riscv64,
1773        riscv_target_feature,
1774        rlib,
1775        ropi,
1776        ropi_rwpi: "ropi-rwpi",
1777        rotate_left,
1778        rotate_right,
1779        round,
1780        round_ties_even,
1781        rtm_target_feature,
1782        runtime,
1783        rust,
1784        rust_2015,
1785        rust_2018,
1786        rust_2018_preview,
1787        rust_2021,
1788        rust_2024,
1789        rust_analyzer,
1790        rust_begin_unwind,
1791        rust_cold_cc,
1792        rust_dash_call: "rust-call",
1793        rust_eh_personality,
1794        rust_future,
1795        rust_logo,
1796        rust_out,
1797        rust_preserve_none_cc,
1798        rust_tail_cc,
1799        rustc,
1800        rustc_abi,
1801        // FIXME(#82232, #143834): temporary name to mitigate `#[align]` nameres ambiguity
1802        rustc_align,
1803        rustc_align_static,
1804        rustc_allocator,
1805        rustc_allocator_zeroed,
1806        rustc_allocator_zeroed_variant,
1807        rustc_allow_const_fn_unstable,
1808        rustc_allow_incoherent_impl,
1809        rustc_allow_lifetime_dependent_specialization,
1810        rustc_allowed_through_unstable_modules,
1811        rustc_always_gca,
1812        rustc_assert_variance,
1813        rustc_attrs,
1814        rustc_autodiff,
1815        rustc_builtin_macro,
1816        rustc_canonical_symbol,
1817        rustc_capture_analysis,
1818        rustc_clean,
1819        rustc_coherence_is_core,
1820        rustc_coinductive,
1821        rustc_comptime,
1822        rustc_confusables,
1823        rustc_const_stable,
1824        rustc_const_stable_indirect,
1825        rustc_const_unstable,
1826        rustc_conversion_suggestion,
1827        rustc_deallocator,
1828        rustc_default_body_unstable,
1829        rustc_delayed_bug_from_inside_query,
1830        rustc_deny_explicit_impl,
1831        rustc_deprecated_safe_2024,
1832        rustc_diagnostic_item,
1833        rustc_diagnostic_macros,
1834        rustc_diagnostic_opaque,
1835        rustc_do_not_const_check,
1836        rustc_doc_primitive,
1837        rustc_driver,
1838        rustc_dummy,
1839        rustc_dump_clauses,
1840        rustc_dump_def_parents,
1841        rustc_dump_def_path,
1842        rustc_dump_generics,
1843        rustc_dump_hidden_type_of_opaques,
1844        rustc_dump_inferred_outlives,
1845        rustc_dump_item_bounds,
1846        rustc_dump_layout,
1847        rustc_dump_object_lifetime_defaults,
1848        rustc_dump_symbol_name,
1849        rustc_dump_user_args,
1850        rustc_dump_variances,
1851        rustc_dump_variances_of_opaques,
1852        rustc_dump_vtable,
1853        rustc_dyn_incompatible_trait,
1854        rustc_effective_visibility,
1855        rustc_eii_foreign_item,
1856        rustc_evaluate_where_clauses,
1857        rustc_expected_cgu_reuse,
1858        rustc_force_inline,
1859        rustc_has_incoherent_inherent_impls,
1860        rustc_if_this_changed,
1861        rustc_inherit_overflow_checks,
1862        rustc_insignificant_dtor,
1863        rustc_intrinsic,
1864        rustc_intrinsic_const_stable_indirect,
1865        rustc_legacy_const_generics,
1866        rustc_lint_opt_deny_field_access,
1867        rustc_lint_opt_ty,
1868        rustc_lint_query_instability,
1869        rustc_lint_untracked_query_information,
1870        rustc_macro_transparency,
1871        rustc_main,
1872        rustc_mir,
1873        rustc_must_implement_one_of,
1874        rustc_must_match_exhaustively,
1875        rustc_no_implicit_autorefs,
1876        rustc_no_implicit_bounds,
1877        rustc_no_mir_inline,
1878        rustc_no_writable,
1879        rustc_non_const_trait_method,
1880        rustc_nonnull_optimization_guaranteed,
1881        rustc_nounwind,
1882        rustc_objc_class,
1883        rustc_objc_selector,
1884        rustc_offload_kernel,
1885        rustc_on_unimplemented,
1886        rustc_panics_when_zero,
1887        rustc_paren_sugar,
1888        rustc_partition_codegened,
1889        rustc_partition_reused,
1890        rustc_pass_by_value,
1891        rustc_pass_indirectly_in_non_rustic_abis,
1892        rustc_peek,
1893        rustc_peek_liveness,
1894        rustc_peek_maybe_init,
1895        rustc_peek_maybe_uninit,
1896        rustc_preserve_ub_checks,
1897        rustc_pretty_live_locals,
1898        rustc_pretty_precise_liveness,
1899        rustc_pretty_transitive_live_locals,
1900        rustc_private,
1901        rustc_proc_macro_decls,
1902        rustc_promotable,
1903        rustc_pub_transparent,
1904        rustc_reallocator,
1905        rustc_regions,
1906        rustc_scalable_vector,
1907        rustc_should_not_be_called_on_const_items,
1908        rustc_show_spans,
1909        rustc_simd_monomorphize_lane_limit,
1910        rustc_skip_during_method_dispatch,
1911        rustc_specialization_trait,
1912        rustc_splat,
1913        rustc_std_internal_symbol,
1914        rustc_strict_coherence,
1915        rustc_test_marker,
1916        rustc_then_this_would_need,
1917        rustc_trivial_field_reads,
1918        rustc_unchecked_type_alias,
1919        // FIXME(#159429): temporary rename to avoid `#[unroll]` nameres ambiguity
1920        rustc_unroll,
1921        rustdoc,
1922        rustdoc_internals,
1923        rustdoc_missing_doc_code_examples,
1924        rustdoc_skip_body,
1925        rustfmt,
1926        rvalue_static_promotion,
1927        rvector,
1928        rwpi,
1929        s32c1i,
1930        s390x,
1931        s390x_target_feature,
1932        s390x_target_feature_vector,
1933        safestack,
1934        safety,
1935        sanitize,
1936        sanitizer_cfi_generalize_pointers,
1937        sanitizer_cfi_normalize_integers,
1938        sanitizer_runtime,
1939        saturating_add,
1940        saturating_sub,
1941        sdylib,
1942        search_unbox,
1943        section,
1944        select_unpredictable,
1945        self_in_typedefs,
1946        self_struct_ctor,
1947        semiopaque,
1948        sgpr32,
1949        sgpr64,
1950        sgpr96,
1951        sgpr128,
1952        sgpr256,
1953        sgpr512,
1954        sha2,
1955        sha3,
1956        sha512_sm_x86,
1957        shadow_call_stack,
1958        shallow,
1959        shl,
1960        shl_assign,
1961        shorter_tail_lifetimes,
1962        should_not_be_called_on_const_items,
1963        should_panic,
1964        show,
1965        shr,
1966        shr_assign,
1967        signed,
1968        simd,
1969        simd_add,
1970        simd_and,
1971        simd_arith_offset,
1972        simd_as,
1973        simd_bitmask,
1974        simd_bitreverse,
1975        simd_bswap,
1976        simd_carryless_mul,
1977        simd_cast,
1978        simd_cast_ptr,
1979        simd_ceil,
1980        simd_ctlz,
1981        simd_ctpop,
1982        simd_cttz,
1983        simd_div,
1984        simd_eq,
1985        simd_expose_provenance,
1986        simd_extract,
1987        simd_extract_dyn,
1988        simd_fabs,
1989        simd_fcos,
1990        simd_fexp,
1991        simd_fexp2,
1992        simd_ffi,
1993        simd_flog,
1994        simd_flog2,
1995        simd_flog10,
1996        simd_floor,
1997        simd_fma,
1998        simd_fsin,
1999        simd_fsqrt,
2000        simd_funnel_shl,
2001        simd_funnel_shr,
2002        simd_gather,
2003        simd_ge,
2004        simd_gt,
2005        simd_insert,
2006        simd_insert_dyn,
2007        simd_le,
2008        simd_lt,
2009        simd_masked_load,
2010        simd_masked_store,
2011        simd_maximum_number_nsz,
2012        simd_minimum_number_nsz,
2013        simd_mul,
2014        simd_ne,
2015        simd_neg,
2016        simd_or,
2017        simd_reduce_add_ordered,
2018        simd_reduce_add_unordered,
2019        simd_reduce_all,
2020        simd_reduce_and,
2021        simd_reduce_any,
2022        simd_reduce_max,
2023        simd_reduce_min,
2024        simd_reduce_mul_ordered,
2025        simd_reduce_mul_unordered,
2026        simd_reduce_or,
2027        simd_reduce_xor,
2028        simd_relaxed_fma,
2029        simd_rem,
2030        simd_round,
2031        simd_round_ties_even,
2032        simd_saturating_add,
2033        simd_saturating_sub,
2034        simd_scatter,
2035        simd_select,
2036        simd_select_bitmask,
2037        simd_shl,
2038        simd_shr,
2039        simd_shuffle,
2040        simd_shuffle_const_generic,
2041        simd_splat,
2042        simd_sub,
2043        simd_trunc,
2044        simd_with_exposed_provenance,
2045        simd_xor,
2046        sin,
2047        since,
2048        size,
2049        size_of,
2050        size_of_type_id,
2051        size_of_val,
2052        sized,
2053        sized_hierarchy,
2054        slice,
2055        slice_from_raw_parts,
2056        slice_from_raw_parts_mut,
2057        slice_get_unchecked,
2058        slice_len_fn,
2059        slice_patterns,
2060        slicing_syntax,
2061        soft_float: "soft-float",
2062        sparc,
2063        sparc64,
2064        sparc_target_feature,
2065        spe_acc,
2066        specialization,
2067        speed,
2068        spirv,
2069        splat,
2070        splatted_index,
2071        spotlight,
2072        sqrt,
2073        sreg,
2074        sreg_low16,
2075        sse,
2076        sse2,
2077        sse4a_target_feature,
2078        stable,
2079        staged_api,
2080        start,
2081        state,
2082        static_align,
2083        static_in_const,
2084        static_nobundle,
2085        static_recursion,
2086        staticlib,
2087        std,
2088        std_lib_injection,
2089        std_panic,
2090        std_panic_2015_macro,
2091        std_panic_macro,
2092        stmt,
2093        stmt_expr_attributes,
2094        stop_after_dataflow,
2095        store,
2096        str,
2097        str_from_utf8,
2098        str_from_utf8_mut,
2099        str_from_utf8_unchecked,
2100        str_from_utf8_unchecked_mut,
2101        str_inherent_from_utf8,
2102        str_inherent_from_utf8_mut,
2103        str_inherent_from_utf8_unchecked,
2104        str_inherent_from_utf8_unchecked_mut,
2105        strict_provenance_lints,
2106        string_deref_patterns,
2107        stringify,
2108        struct_field_attributes,
2109        struct_inherit,
2110        struct_variant,
2111        structural_match,
2112        structural_peq,
2113        sub,
2114        sub_assign,
2115        sub_with_overflow,
2116        suggestion,
2117        super_let,
2118        supertrait_item_shadowing,
2119        sve,
2120        sve_cast,
2121        sve_tuple_create2,
2122        sve_tuple_create3,
2123        sve_tuple_create4,
2124        sve_tuple_get,
2125        sve_tuple_set,
2126        sym,
2127        sync,
2128        synthetic,
2129        t32,
2130        target,
2131        target_abi,
2132        target_arch,
2133        target_endian,
2134        target_env,
2135        target_family,
2136        target_feature,
2137        target_feature_11,
2138        target_feature_inline_always,
2139        target_has_atomic,
2140        target_has_atomic_load_store,
2141        target_has_atomic_primitive_alignment,
2142        target_has_reliable_f16,
2143        target_has_reliable_f16_math,
2144        target_has_reliable_f16b,
2145        target_has_reliable_f128,
2146        target_has_reliable_f128_math,
2147        target_has_threads,
2148        target_object_format,
2149        target_os,
2150        target_pointer_width,
2151        target_thread_local,
2152        target_vendor,
2153        tbm_target_feature,
2154        termination,
2155        termination_trait,
2156        termination_trait_test,
2157        test,
2158        test_2018_feature,
2159        test_accepted_feature,
2160        test_binder_constraints,
2161        test_case,
2162        test_incomplete_feature,
2163        test_removed_feature,
2164        test_runner,
2165        test_unstable_lint,
2166        this,
2167        thread,
2168        thread_local,
2169        threadptr,
2170        three_way_compare,
2171        thumb2,
2172        thumb_mode: "thumb-mode",
2173        time,
2174        tmm_reg,
2175        to_owned_method,
2176        to_string,
2177        to_vec,
2178        todo_macro,
2179        tool_attributes,
2180        tool_lints,
2181        trace_macros,
2182        track_caller,
2183        trait_alias,
2184        trait_ty,
2185        trait_upcasting,
2186        transmute,
2187        transmute_generic_consts,
2188        transmute_opts,
2189        transmute_trait,
2190        transmute_unchecked,
2191        transparent,
2192        transparent_enums,
2193        transparent_unions,
2194        trivial_bounds,
2195        trivial_clone,
2196        trunc,
2197        try_as_dyn,
2198        try_blocks,
2199        try_blocks_heterogeneous,
2200        try_capture,
2201        try_from,
2202        try_into,
2203        try_trait_v2,
2204        try_trait_v2_residual,
2205        try_update,
2206        tt,
2207        tuple,
2208        tuple_indexing,
2209        tuple_trait,
2210        two_phase,
2211        ty,
2212        type_alias_enum_variants,
2213        type_alias_impl_trait,
2214        type_ascription,
2215        type_changing_struct_update,
2216        type_id,
2217        type_id_array_len,
2218        type_id_element_ty,
2219        type_id_eq,
2220        type_id_field_representing_type,
2221        type_id_fields,
2222        type_id_function_ptr,
2223        type_id_generics,
2224        type_id_is_signed,
2225        type_id_non_exhaustive,
2226        type_id_points_mutably,
2227        type_id_points_to,
2228        type_id_size_of,
2229        type_id_type_of,
2230        type_id_variant_name,
2231        type_id_variant_non_exhaustive,
2232        type_id_variants,
2233        type_id_vtable,
2234        type_info,
2235        type_info_generic,
2236        type_ir,
2237        type_ir_infer_ctxt_like,
2238        type_ir_inherent,
2239        type_ir_interner,
2240        type_length_limit,
2241        type_macros,
2242        type_name,
2243        type_privacy_lints,
2244        typed_swap_nonoverlapping,
2245        u8,
2246        u8_legacy_const_max,
2247        u8_legacy_const_min,
2248        u8_legacy_fn_max_value,
2249        u8_legacy_fn_min_value,
2250        u8_legacy_mod,
2251        u16,
2252        u16_legacy_const_max,
2253        u16_legacy_const_min,
2254        u16_legacy_fn_max_value,
2255        u16_legacy_fn_min_value,
2256        u16_legacy_mod,
2257        u32,
2258        u32_legacy_const_max,
2259        u32_legacy_const_min,
2260        u32_legacy_fn_max_value,
2261        u32_legacy_fn_min_value,
2262        u32_legacy_mod,
2263        u64,
2264        u64_legacy_const_max,
2265        u64_legacy_const_min,
2266        u64_legacy_fn_max_value,
2267        u64_legacy_fn_min_value,
2268        u64_legacy_mod,
2269        u128,
2270        u128_legacy_const_max,
2271        u128_legacy_const_min,
2272        u128_legacy_fn_max_value,
2273        u128_legacy_fn_min_value,
2274        u128_legacy_mod,
2275        ub_checks,
2276        unaligned_volatile_load,
2277        unaligned_volatile_store,
2278        unboxed_closures,
2279        unchecked_add,
2280        unchecked_div,
2281        unchecked_funnel_shl,
2282        unchecked_funnel_shr,
2283        unchecked_mul,
2284        unchecked_rem,
2285        unchecked_shl,
2286        unchecked_shr,
2287        unchecked_sub,
2288        undecorated,
2289        underscore_const_names,
2290        underscore_imports,
2291        underscore_lifetimes,
2292        uniform_paths,
2293        unimplemented,
2294        unimplemented_macro,
2295        unit,
2296        universal_impl_trait,
2297        unix,
2298        unlikely,
2299        unmarked_api,
2300        unnamed_enum_variants,
2301        unnamed_fields,
2302        unpin,
2303        unqualified_local_imports,
2304        unreachable,
2305        unreachable_2015,
2306        unreachable_2015_macro,
2307        unreachable_2021,
2308        unreachable_code,
2309        unreachable_display,
2310        unreachable_macro,
2311        unresolved,
2312        unrestricted_attribute_tokens,
2313        unsafe_attributes,
2314        unsafe_binders,
2315        unsafe_block_in_unsafe_fn,
2316        unsafe_cell,
2317        unsafe_cell_raw_get,
2318        unsafe_eii,
2319        unsafe_extern_blocks,
2320        unsafe_fields,
2321        unsafe_no_drop_flag,
2322        unsafe_pinned,
2323        unsafe_unpin,
2324        unsize,
2325        unsized_const_param_ty,
2326        unsized_const_params,
2327        unsized_fn_params,
2328        unsized_locals,
2329        unsized_tuple_coercion,
2330        unstable,
2331        unstable_feature_bound,
2332        unstable_location_reason_default: "this crate is being loaded from the sysroot, an \
2333                          unstable location; did you mean to load this crate \
2334                          from crates.io via `Cargo.toml` instead?",
2335        unstable_removed,
2336        untagged_unions,
2337        unused_imports,
2338        unwind,
2339        unwind_attributes,
2340        unwind_safe_trait,
2341        unwrap,
2342        unwrap_or,
2343        update,
2344        use_cloned,
2345        use_extern_macros,
2346        use_nested_groups,
2347        used,
2348        used_with_arg,
2349        using,
2350        usize,
2351        usize_legacy_const_max,
2352        usize_legacy_const_min,
2353        usize_legacy_fn_max_value,
2354        usize_legacy_fn_min_value,
2355        usize_legacy_mod,
2356        v1,
2357        v8plus,
2358        v9,
2359        va_arg,
2360        va_arg_safe,
2361        va_copy,
2362        va_end,
2363        va_list,
2364        val,
2365        validity,
2366        value,
2367        values,
2368        var,
2369        variadic,
2370        variant_count,
2371        vec,
2372        vector,
2373        verbatim,
2374        version,
2375        vfp2,
2376        vgpr16,
2377        vgpr32,
2378        vgpr64,
2379        vgpr96,
2380        vgpr128,
2381        vgpr160,
2382        vgpr192,
2383        vgpr224,
2384        vgpr256,
2385        vgpr288,
2386        vgpr320,
2387        vgpr352,
2388        vgpr384,
2389        vgpr512,
2390        vgpr1024,
2391        view_type,
2392        view_types,
2393        vis,
2394        visible_private_types,
2395        volatile,
2396        volatile_copy_memory,
2397        volatile_copy_nonoverlapping_memory,
2398        volatile_load,
2399        volatile_set_memory,
2400        volatile_store,
2401        vreg,
2402        vreg_low16,
2403        vreg_pair,
2404        vsreg,
2405        vsx,
2406        vtable_align,
2407        vtable_size,
2408        warn,
2409        warnings,
2410        wasip2,
2411        wasm,
2412        wasm32,
2413        wasm64,
2414        wasm_abi,
2415        wasm_import_module,
2416        wasm_target_feature,
2417        weak,
2418        weak_odr,
2419        where_clause_attrs,
2420        while_let,
2421        whole_dash_archive: "whole-archive",
2422        width,
2423        windowed,
2424        windows,
2425        windows_subsystem,
2426        with_negative_coherence,
2427        wrapping_add,
2428        wrapping_div,
2429        wrapping_mul,
2430        wrapping_rem,
2431        wrapping_rem_euclid,
2432        wrapping_sub,
2433        wreg,
2434        write_box_via_move,
2435        write_bytes,
2436        write_fmt,
2437        write_macro,
2438        write_str,
2439        write_via_move,
2440        writeln_macro,
2441        x86,
2442        x86_64,
2443        x86_amx_intrinsics,
2444        x87_reg,
2445        x87_target_feature,
2446        xcoff,
2447        xer,
2448        xloop,
2449        xmm_reg,
2450        xop_target_feature,
2451        xreg,
2452        xtensa,
2453        xtensa_target_feature,
2454        yeet_desugar_details,
2455        yeet_expr,
2456        yes,
2457        yield_expr,
2458        ymm_reg,
2459        yreg,
2460        zca,
2461        zfh,
2462        zfhmin,
2463        zmm_reg,
2464        ztso,
2465        // tidy-alphabetical-end
2466    }
2467}
2468
2469/// Symbols for crates that are part of the stable standard library: `std`, `core`, `alloc`, and
2470/// `proc_macro`.
2471pub const STDLIB_STABLE_CRATES: &[Symbol] = &[sym::std, sym::core, sym::alloc, sym::proc_macro];
2472
2473#[derive(#[automatically_derived]impl ::core::marker::Copy for Ident { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
    for Ident {
}
#[automatically_derived]impl ::core::clone::Clone for Ident {
    #[inline]
    fn clone(&self) -> Self {
        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_fields_are_eq(&self) {
        let _: ::core::cmp::AssertParamIsEq<Symbol>;
        let _: ::core::cmp::AssertParamIsEq<Span>;
    }
}Eq, const _: () =
    {
        impl ::rustc_data_structures::stable_hash::StableHash for Ident {
            #[inline]
            fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
                __hcx: &mut __Hcx,
                __hasher:
                    &mut ::rustc_data_structures::stable_hash::StableHasher) {
                match *self {
                    Ident { name: ref __binding_0, span: ref __binding_1 } => {
                        { __binding_0.stable_hash(__hcx, __hasher); }
                        { __binding_1.stable_hash(__hcx, __hasher); }
                    }
                }
            }
        }
    };StableHash, const _: () =
    {
        impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
            for Ident {
            fn encode(&self, __encoder: &mut __E) {
                let Ident { name: ref __binding_0, span: ref __binding_1 } =
                    *self;
                ::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)]
2474pub struct Ident {
2475    /// `name` should never be the empty symbol. If you are considering that,
2476    /// you are probably conflating "empty identifier with "no identifier" and
2477    /// you should use `Option<Ident>` instead.
2478    /// Trying to construct an `Ident` with an empty name will trigger debug assertions.
2479    pub name: Symbol,
2480    pub span: Span,
2481}
2482
2483impl Ident {
2484    #[inline]
2485    #[track_caller]
2486    /// Constructs a new identifier from a symbol and a span.
2487    pub fn new(name: Symbol, span: Span) -> Ident {
2488        if truecfg!(debug_assertions) && name == sym::empty {
2489            crate::macros::bug_impl(Some(span),
    format_args!("called `Ident::new` with empty symbol"),
    Location::caller());crate::span_bug!(span, "called `Ident::new` with empty symbol");
2490        }
2491        Ident { name, span }
2492    }
2493
2494    /// Constructs a new identifier with a dummy span.
2495    #[inline]
2496    pub fn with_dummy_span(name: Symbol) -> Ident {
2497        Ident::new(name, DUMMY_SP)
2498    }
2499
2500    // For dummy identifiers that are never used and absolutely must be
2501    // present. Note that this does *not* use the empty symbol; `sym::dummy`
2502    // makes it clear that it's intended as a dummy value, and is more likely
2503    // to be detected if it accidentally does get used.
2504    #[inline]
2505    pub fn dummy() -> Ident {
2506        Ident::with_dummy_span(sym::dummy)
2507    }
2508
2509    /// Maps a string to an identifier with a dummy span.
2510    pub fn from_str(string: &str) -> Ident {
2511        Ident::with_dummy_span(Symbol::intern(string))
2512    }
2513
2514    /// Maps a string and a span to an identifier.
2515    #[rustc_diagnostic_item = "ident_from_str_and_span"]
2516    pub fn from_str_and_span(string: &str, span: Span) -> Ident {
2517        Ident::new(Symbol::intern(string), span)
2518    }
2519
2520    /// Replaces `lo` and `hi` with those from `span`, but keep hygiene context.
2521    pub fn with_span_pos(self, span: Span) -> Ident {
2522        Ident::new(self.name, span.with_ctxt(self.span.ctxt()))
2523    }
2524
2525    /// Creates a new ident with the same span and name with leading quote removed, if any.
2526    /// Calling it on a `'` ident will return an empty ident, which triggers debug assertions.
2527    pub fn without_first_quote(self) -> Ident {
2528        self.as_str()
2529            .strip_prefix('\'')
2530            .map_or(self, |name| Ident::new(Symbol::intern(name), self.span))
2531    }
2532
2533    /// "Normalize" ident for use in comparisons using "item hygiene".
2534    /// Identifiers with same string value become same if they came from the same macro 2.0 macro
2535    /// (e.g., `macro` item, but not `macro_rules` item) and stay different if they came from
2536    /// different macro 2.0 macros.
2537    /// Technically, this operation strips all non-opaque marks from ident's syntactic context.
2538    pub fn normalize_to_macros_2_0(self) -> Ident {
2539        Ident::new(self.name, self.span.normalize_to_macros_2_0())
2540    }
2541
2542    /// "Normalize" ident for use in comparisons using "local variable hygiene".
2543    /// Identifiers with same string value become same if they came from the same non-transparent
2544    /// macro (e.g., `macro` or `macro_rules!` items) and stay different if they came from different
2545    /// non-transparent macros.
2546    /// Technically, this operation strips all transparent marks from ident's syntactic context.
2547    #[inline]
2548    pub fn normalize_to_macro_rules(self) -> Ident {
2549        Ident::new(self.name, self.span.normalize_to_macro_rules())
2550    }
2551
2552    /// Access the underlying string. This is a slowish operation because it
2553    /// requires locking the symbol interner.
2554    ///
2555    /// Note that the lifetime of the return value is a lie. See
2556    /// `Symbol::as_str()` for details.
2557    pub fn as_str(&self) -> &str {
2558        self.name.as_str()
2559    }
2560}
2561
2562impl PartialEq for Ident {
2563    #[inline]
2564    fn eq(&self, rhs: &Self) -> bool {
2565        self.name == rhs.name && self.span.ctxt() == rhs.span.ctxt()
2566    }
2567}
2568
2569impl Hash for Ident {
2570    fn hash<H: Hasher>(&self, state: &mut H) {
2571        self.name.hash(state);
2572        self.span.ctxt().hash(state);
2573    }
2574}
2575
2576impl fmt::Debug for Ident {
2577    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2578        fmt::Display::fmt(self, f)?;
2579        fmt::Debug::fmt(&self.span.ctxt(), f)
2580    }
2581}
2582
2583/// This implementation is supposed to be used in error messages, so it's expected to be identical
2584/// to printing the original identifier token written in source code (`token_to_string`),
2585/// except that AST identifiers don't keep the rawness flag, so we have to guess it.
2586impl fmt::Display for Ident {
2587    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2588        fmt::Display::fmt(&IdentPrinter::new(self.name, self.guess_print_mode(), None), f)
2589    }
2590}
2591
2592pub enum IdentPrintMode {
2593    Normal,
2594    RawIdent,
2595    ForcedKeywordIdent,
2596    RawLifetime,
2597}
2598
2599/// The most general type to print identifiers.
2600///
2601/// AST pretty-printer is used as a fallback for turning AST structures into token streams for
2602/// proc macros. Additionally, proc macros may stringify their input and expect it survive the
2603/// stringification (especially true for proc macro derives written between Rust 1.15 and 1.30).
2604/// So we need to somehow pretty-print `$crate` in a way preserving at least some of its
2605/// hygiene data, most importantly name of the crate it refers to.
2606/// As a result we print `$crate` as `crate` if it refers to the local crate
2607/// and as `::other_crate_name` if it refers to some other crate.
2608/// Note, that this is only done if the ident token is printed from inside of AST pretty-printing,
2609/// but not otherwise. Pretty-printing is the only way for proc macros to discover token contents,
2610/// so we should not perform this lossy conversion if the top level call to the pretty-printer was
2611/// done for a token stream or a single token.
2612pub struct IdentPrinter {
2613    symbol: Symbol,
2614    mode: IdentPrintMode,
2615    /// Span used for retrieving the crate name to which `$crate` refers to,
2616    /// if this field is `None` then the `$crate` conversion doesn't happen.
2617    convert_dollar_crate: Option<Span>,
2618}
2619
2620impl IdentPrinter {
2621    /// The most general `IdentPrinter` constructor. Do not use this.
2622    pub fn new(
2623        symbol: Symbol,
2624        mode: IdentPrintMode,
2625        convert_dollar_crate: Option<Span>,
2626    ) -> IdentPrinter {
2627        IdentPrinter { symbol, mode, convert_dollar_crate }
2628    }
2629
2630    /// This implementation is supposed to be used when printing identifiers
2631    /// as a part of pretty-printing for larger AST pieces.
2632    /// Do not use this either.
2633    pub fn for_ast_ident(ident: Ident, mode: IdentPrintMode) -> IdentPrinter {
2634        IdentPrinter::new(ident.name, mode, Some(ident.span))
2635    }
2636}
2637
2638impl fmt::Display for IdentPrinter {
2639    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2640        let s = match self.mode {
2641            IdentPrintMode::Normal
2642                if self.symbol == kw::DollarCrate
2643                    && let Some(span) = self.convert_dollar_crate =>
2644            {
2645                let converted = span.ctxt().dollar_crate_name();
2646                if !converted.is_path_segment_keyword() {
2647                    f.write_str("::")?;
2648                }
2649                converted
2650            }
2651            IdentPrintMode::Normal => self.symbol,
2652            IdentPrintMode::RawIdent => {
2653                f.write_str("r#")?;
2654                self.symbol
2655            }
2656            IdentPrintMode::ForcedKeywordIdent => {
2657                f.write_str("k#")?;
2658                self.symbol
2659            }
2660            IdentPrintMode::RawLifetime => {
2661                f.write_str("'r#")?;
2662                let s = self
2663                    .symbol
2664                    .as_str()
2665                    .strip_prefix("'")
2666                    .expect("only lifetime idents should be passed with RawLifetime mode");
2667                Symbol::intern(s)
2668            }
2669        };
2670        s.fmt(f)
2671    }
2672}
2673
2674/// A newtype around `Ident` that calls [Ident::normalize_to_macro_rules] on
2675/// construction for "local variable hygiene" comparisons.
2676///
2677/// Use this type when you need to compare identifiers according to macro_rules hygiene.
2678/// This ensures compile-time safety and avoids manual normalization calls.
2679#[derive(#[automatically_derived]impl ::core::marker::Copy for
    MacroRulesNormalizedIdent {
}Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
    for MacroRulesNormalizedIdent {
}
#[automatically_derived]impl ::core::clone::Clone for
    MacroRulesNormalizedIdent {
    #[inline]
    fn clone(&self) -> Self {
        let _: ::core::clone::AssertParamIsClone<Ident>;
        *self
    }
}Clone, #[automatically_derived]impl ::core::cmp::Eq for MacroRulesNormalizedIdent {
    #[inline]
    #[doc(hidden)]
    #[coverage(off)]
    fn assert_fields_are_eq(&self) {
        let _: ::core::cmp::AssertParamIsEq<Ident>;
    }
}Eq, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
    MacroRulesNormalizedIdent {
}
#[automatically_derived]impl ::core::cmp::PartialEq for
    MacroRulesNormalizedIdent {
    #[inline]
    fn eq(&self, other: &Self) -> 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)]
2680pub struct MacroRulesNormalizedIdent(Ident);
2681
2682impl MacroRulesNormalizedIdent {
2683    #[inline]
2684    pub fn new(ident: Ident) -> Self {
2685        MacroRulesNormalizedIdent(ident.normalize_to_macro_rules())
2686    }
2687
2688    pub fn symbol(&self) -> Symbol {
2689        self.0.name
2690    }
2691
2692    pub fn ident(&self) -> Ident {
2693        self.0
2694    }
2695}
2696
2697impl fmt::Debug for MacroRulesNormalizedIdent {
2698    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2699        fmt::Debug::fmt(&self.0, f)
2700    }
2701}
2702
2703impl fmt::Display for MacroRulesNormalizedIdent {
2704    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2705        fmt::Display::fmt(&self.0, f)
2706    }
2707}
2708
2709/// An interned UTF-8 string.
2710///
2711/// Internally, a `Symbol` is implemented as an index, and all operations
2712/// (including hashing, equality, and ordering) operate on that index. The use
2713/// of `rustc_index::newtype_index!` means that `Option<Symbol>` only takes up 4 bytes,
2714/// because `rustc_index::newtype_index!` reserves the last 256 values for tagging purposes.
2715///
2716/// Note that `Symbol` cannot directly be a `rustc_index::newtype_index!` because it
2717/// implements `fmt::Debug`, `Encodable`, and `Decodable` in special ways.
2718#[derive(#[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
    for Symbol {
}
#[automatically_derived]impl ::core::clone::Clone for Symbol {
    #[inline]
    fn clone(&self) -> Self {
        let _: ::core::clone::AssertParamIsClone<SymbolIndex>;
        *self
    }
}Clone, #[automatically_derived]impl ::core::marker::Copy for Symbol { }Copy, #[automatically_derived]impl ::core::marker::StructuralPartialEq for Symbol {
}
#[automatically_derived]impl ::core::cmp::PartialEq for Symbol {
    #[inline]
    fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for Symbol {
    #[inline]
    #[doc(hidden)]
    #[coverage(off)]
    fn assert_fields_are_eq(&self) {
        let _: ::core::cmp::AssertParamIsEq<SymbolIndex>;
    }
}Eq, #[automatically_derived]impl ::core::cmp::PartialOrd for Symbol {
    #[inline]
    fn partial_cmp(&self, other: &Self)
        -> ::core::option::Option<::core::cmp::Ordering> {
        ::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
    }
}PartialOrd, #[automatically_derived]impl ::core::cmp::Ord for Symbol {
    #[inline]
    fn cmp(&self, other: &Self) -> ::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)]
2719pub struct Symbol(SymbolIndex);
2720
2721impl<E> ContextOrd<E> for Symbol {
2722    fn stable_cmp_with_context(_context: E) -> impl FnMut(&Self, &Self) -> std::cmp::Ordering {
2723        StableCompare::stable_cmp
2724    }
2725}
2726
2727// Used within both `Symbol` and `ByteSymbol`.
2728#[automatically_derived]impl ::core::marker::Copy for SymbolIndex { }
impl SymbolIndex {
    #[doc = r" Maximum value the index can take, as a `u32`."]
    const MAX_AS_U32: u32 = 0xFFFF_FF00;
    #[doc = r" Maximum value the index can take."]
    const MAX: Self = Self::from_u32(0xFFFF_FF00);
    #[doc = r" Zero value of the index."]
    const ZERO: Self = Self::from_u32(0);
    #[doc = r" Creates a new index from a given `usize`."]
    #[doc = r""]
    #[doc = r" # Panics"]
    #[doc = r""]
    #[doc = r" Will panic if `value` exceeds `MAX`."]
    #[inline]
    const fn from_usize(value: usize) -> Self {
        if !(value <= (0xFFFF_FF00 as usize)) {
            ::core::panicking::panic("assertion failed: value <= (0xFFFF_FF00 as usize)")
        };
        unsafe { Self::from_u32_unchecked(value as u32) }
    }
    #[doc = r" Creates a new index from a given `u32`."]
    #[doc = r""]
    #[doc = r" # Panics"]
    #[doc = r""]
    #[doc = r" Will panic if `value` exceeds `MAX`."]
    #[inline]
    const fn from_u32(value: u32) -> Self {
        if !(value <= 0xFFFF_FF00) {
            ::core::panicking::panic("assertion failed: value <= 0xFFFF_FF00")
        };
        unsafe { Self::from_u32_unchecked(value) }
    }
    #[doc = r" Creates a new index from a given `u16`."]
    #[doc = r""]
    #[doc = r" # Panics"]
    #[doc = r""]
    #[doc = r" Will panic if `value` exceeds `MAX`."]
    #[inline]
    const fn from_u16(value: u16) -> Self {
        let value = value as u32;
        if !(value <= 0xFFFF_FF00) {
            ::core::panicking::panic("assertion failed: value <= 0xFFFF_FF00")
        };
        unsafe { Self::from_u32_unchecked(value) }
    }
    #[doc = r" Creates a new index from a given `u32`."]
    #[doc = r""]
    #[doc = r" # Safety"]
    #[doc = r""]
    #[doc =
    r" The provided value must be less than or equal to the maximum value for the newtype."]
    #[doc =
    r" Providing a value outside this range is undefined due to layout restrictions."]
    #[doc = r""]
    #[doc = r" Prefer using `from_u32`."]
    #[inline]
    const unsafe fn from_u32_unchecked(value: u32) -> Self {
        Self {
            private_use_as_methods_instead: unsafe {
                std::mem::transmute(value)
            },
        }
    }
    #[doc = r" Extracts the value of this index as a `usize`."]
    #[inline]
    const fn index(self) -> usize { self.as_usize() }
    #[doc = r" Extracts the value of this index as a `u32`."]
    #[inline]
    const fn as_u32(self) -> u32 {
        unsafe { std::mem::transmute(self.private_use_as_methods_instead) }
    }
    #[doc = r" Extracts the value of this index as a `usize`."]
    #[inline]
    const fn as_usize(self) -> usize { self.as_u32() as usize }
}
impl std::ops::Add<usize> for SymbolIndex {
    type Output = Self;
    #[inline]
    fn add(self, other: usize) -> Self {
        Self::from_usize(self.index() + other)
    }
}
impl std::ops::AddAssign<usize> for SymbolIndex {
    #[inline]
    fn add_assign(&mut self, other: usize) { *self = *self + other; }
}
impl rustc_index::Idx for SymbolIndex {
    #[inline]
    fn new(value: usize) -> Self { Self::from_usize(value) }
    #[inline]
    fn index(self) -> usize { self.as_usize() }
}
impl ::std::iter::Step for SymbolIndex {
    #[inline]
    fn steps_between(start: &Self, end: &Self) -> (usize, Option<usize>) {
        <usize as
                ::std::iter::Step>::steps_between(&Self::index(*start),
            &Self::index(*end))
    }
    #[inline]
    fn forward_checked(start: Self, u: usize) -> Option<Self> {
        Self::index(start).checked_add(u).map(Self::from_usize)
    }
    #[inline]
    fn backward_checked(start: Self, u: usize) -> Option<Self> {
        Self::index(start).checked_sub(u).map(Self::from_usize)
    }
    #[inline]
    fn forward_overflowing(start: Self, u: usize) -> (Self, bool) {
        let (s, o) = Self::index(start).overflowing_add(u);
        (Self::from_usize(s), o)
    }
    #[inline]
    fn backward_overflowing(start: Self, u: usize) -> (Self, bool) {
        let (s, o) = Self::index(start).overflowing_sub(u);
        (Self::from_usize(s), o)
    }
}
impl ::std::cmp::Ord for SymbolIndex {
    #[inline]
    fn cmp(&self, other: &Self) -> std::cmp::Ordering {
        self.as_u32().cmp(&other.as_u32())
    }
}
impl ::std::cmp::PartialOrd for SymbolIndex {
    #[inline]
    fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
        Some(self.cmp(other))
    }
}
impl From<SymbolIndex> for u32 {
    #[inline]
    fn from(v: SymbolIndex) -> u32 { v.as_u32() }
}
impl From<SymbolIndex> for usize {
    #[inline]
    fn from(v: SymbolIndex) -> usize { v.as_usize() }
}
impl From<usize> for SymbolIndex {
    #[inline]
    fn from(value: usize) -> Self { Self::from_usize(value) }
}
impl From<u32> for SymbolIndex {
    #[inline]
    fn from(value: u32) -> Self { Self::from_u32(value) }
}
impl ::std::cmp::Eq for SymbolIndex {}
impl ::std::cmp::PartialEq for SymbolIndex {
    fn eq(&self, other: &Self) -> bool { self.as_u32().eq(&other.as_u32()) }
}
impl ::std::marker::StructuralPartialEq for SymbolIndex {}
impl ::std::hash::Hash for SymbolIndex {
    fn hash<H: ::std::hash::Hasher>(&self, state: &mut H) {
        self.as_u32().hash(state)
    }
}
impl ::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! {
2729    #[orderable]
2730    struct SymbolIndex {}
2731}
2732
2733impl Symbol {
2734    /// Avoid this except for things like deserialization of previously
2735    /// serialized symbols, and testing. Use `intern` instead.
2736    pub const fn new(n: u32) -> Self {
2737        Symbol(SymbolIndex::from_u32(n))
2738    }
2739
2740    /// Maps a string to its interned representation.
2741    #[rustc_diagnostic_item = "SymbolIntern"]
2742    #[inline]
2743    pub fn intern(str: &str) -> Self {
2744        with_session_globals(|session_globals| session_globals.symbol_interner.intern_str(str))
2745    }
2746
2747    /// Access the underlying string. This is a slowish operation because it
2748    /// requires locking the symbol interner.
2749    ///
2750    /// Note that the lifetime of the return value is a lie. It's not the same
2751    /// as `&self`, but actually tied to the lifetime of the underlying
2752    /// interner. Interners are long-lived, and there are very few of them, and
2753    /// this function is typically used for short-lived things, so in practice
2754    /// it works out ok.
2755    #[inline]
2756    pub fn as_str(&self) -> &str {
2757        with_session_globals(|session_globals| unsafe {
2758            std::mem::transmute::<&str, &str>(session_globals.symbol_interner.get_str(*self))
2759        })
2760    }
2761
2762    pub fn as_u32(self) -> u32 {
2763        self.0.as_u32()
2764    }
2765
2766    pub fn is_empty(self) -> bool {
2767        self == sym::empty
2768    }
2769
2770    /// This method is supposed to be used in error messages, so it's expected to be
2771    /// identical to printing the original identifier token written in source code
2772    /// (`token_to_string`, `Ident::to_string`), except that symbols don't keep the rawness flag
2773    /// or edition, so we have to guess the rawness using the global edition.
2774    pub fn to_ident_string(self) -> String {
2775        // Avoid creating an empty identifier, because that asserts in debug builds.
2776        if self == sym::empty { String::new() } else { Ident::with_dummy_span(self).to_string() }
2777    }
2778
2779    /// Checks if `self` is similar to any symbol in `candidates`.
2780    ///
2781    /// The returned boolean represents whether the candidate is the same symbol with a different
2782    /// casing.
2783    ///
2784    /// All the candidates are assumed to be lowercase.
2785    pub fn find_similar(
2786        self,
2787        candidates: &[Symbol],
2788    ) -> Option<(Symbol, /* is incorrect case */ bool)> {
2789        let lowercase = self.as_str().to_lowercase();
2790        let lowercase_sym = Symbol::intern(&lowercase);
2791        if candidates.contains(&lowercase_sym) {
2792            Some((lowercase_sym, true))
2793        } else if let Some(similar_sym) = find_best_match_for_name(candidates, self, None) {
2794            Some((similar_sym, false))
2795        } else {
2796            None
2797        }
2798    }
2799}
2800
2801impl fmt::Debug for Symbol {
2802    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2803        fmt::Debug::fmt(self.as_str(), f)
2804    }
2805}
2806
2807impl fmt::Display for Symbol {
2808    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2809        fmt::Display::fmt(self.as_str(), f)
2810    }
2811}
2812
2813impl StableHash for Symbol {
2814    #[inline]
2815    fn stable_hash<Hcx: StableHashCtxt>(&self, hcx: &mut Hcx, hasher: &mut StableHasher) {
2816        self.as_str().stable_hash(hcx, hasher);
2817    }
2818}
2819
2820impl StableCompare for Symbol {
2821    const CAN_USE_UNSTABLE_SORT: bool = true;
2822
2823    fn stable_cmp(&self, other: &Self) -> std::cmp::Ordering {
2824        self.as_str().cmp(other.as_str())
2825    }
2826}
2827
2828/// Like `Symbol`, but for byte strings. `ByteSymbol` is used less widely, so
2829/// it has fewer operations defined than `Symbol`.
2830#[derive(#[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
    for ByteSymbol {
}
#[automatically_derived]impl ::core::clone::Clone for ByteSymbol {
    #[inline]
    fn clone(&self) -> Self {
        let _: ::core::clone::AssertParamIsClone<SymbolIndex>;
        *self
    }
}Clone, #[automatically_derived]impl ::core::marker::Copy for ByteSymbol { }Copy, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
    ByteSymbol {
}
#[automatically_derived]impl ::core::cmp::PartialEq for ByteSymbol {
    #[inline]
    fn eq(&self, other: &Self) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for ByteSymbol {
    #[inline]
    #[doc(hidden)]
    #[coverage(off)]
    fn assert_fields_are_eq(&self) {
        let _: ::core::cmp::AssertParamIsEq<SymbolIndex>;
    }
}Eq, #[automatically_derived]impl ::core::cmp::PartialOrd for ByteSymbol {
    #[inline]
    fn partial_cmp(&self, other: &Self)
        -> ::core::option::Option<::core::cmp::Ordering> {
        ::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
    }
}PartialOrd, #[automatically_derived]impl ::core::cmp::Ord for ByteSymbol {
    #[inline]
    fn cmp(&self, other: &Self) -> ::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)]
2831pub struct ByteSymbol(SymbolIndex);
2832
2833impl ByteSymbol {
2834    /// Avoid this except for things like deserialization of previously
2835    /// serialized symbols, and testing. Use `intern` instead.
2836    pub const fn new(n: u32) -> Self {
2837        ByteSymbol(SymbolIndex::from_u32(n))
2838    }
2839
2840    /// Maps a string to its interned representation.
2841    pub fn intern(byte_str: &[u8]) -> Self {
2842        with_session_globals(|session_globals| {
2843            session_globals.symbol_interner.intern_byte_str(byte_str)
2844        })
2845    }
2846
2847    /// Like `Symbol::as_str`.
2848    pub fn as_byte_str(&self) -> &[u8] {
2849        with_session_globals(|session_globals| unsafe {
2850            std::mem::transmute::<&[u8], &[u8]>(session_globals.symbol_interner.get_byte_str(*self))
2851        })
2852    }
2853
2854    pub fn as_u32(self) -> u32 {
2855        self.0.as_u32()
2856    }
2857}
2858
2859impl fmt::Debug for ByteSymbol {
2860    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2861        fmt::Debug::fmt(self.as_byte_str(), f)
2862    }
2863}
2864
2865impl StableHash for ByteSymbol {
2866    #[inline]
2867    fn stable_hash<Hcx: StableHashCtxt>(&self, hcx: &mut Hcx, hasher: &mut StableHasher) {
2868        self.as_byte_str().stable_hash(hcx, hasher);
2869    }
2870}
2871
2872// Interner used for both `Symbol`s and `ByteSymbol`s. If a string and a byte
2873// string with identical contents (e.g. "foo" and b"foo") are both interned,
2874// only one copy will be stored and the resulting `Symbol` and `ByteSymbol`
2875// will have the same index.
2876pub(crate) struct Interner(Lock<InternerInner>);
2877
2878// The `&'static [u8]`s in this type actually point into the arena.
2879//
2880// This type is private to prevent accidentally constructing more than one
2881// `Interner` on the same thread, which makes it easy to mix up `Symbol`s
2882// between `Interner`s.
2883struct InternerInner {
2884    arena: DroplessArena,
2885    indices: HashTable<(&'static [u8], u32)>,
2886    byte_strs: Vec<&'static [u8]>,
2887}
2888
2889impl Interner {
2890    // These arguments are `&str`, but because of the sharing, we are
2891    // effectively pre-interning all these strings for both `Symbol` and
2892    // `ByteSymbol`.
2893    fn prefill(init: &[&'static str], extra: &[&'static str]) -> Self {
2894        let values = init.iter().copied().chain(extra.iter().copied()).map(|str| str.as_bytes());
2895        // At the time of writing, `helloworld` Check benchmark interns ~1k additional symbols.
2896        // Some of the noisy ones (`include-blob`, `tt-muncher`, `externs`, `large-workspace`, etc.)
2897        // are between 1k and 2k. Lowest number among non-artificial benchmarks is ~5k for `ucd`.
2898        // This was chosen to make small, artificial benchmarks more stable, and to
2899        // reduce resizing for normal code without regresing memory use for smaller crates.
2900        // FIXME(panstromek): we could do better if we take into account whether this is
2901        //  Debug/Opt build. Those builds intern at least 6k more symbols than Check ones.
2902        let additional_capacity = 2400;
2903        let size_hint = values.size_hint().0 + additional_capacity;
2904        let mut conflicting_values: Vec<&[u8]> = Vec::new();
2905
2906        let mut indices: HashTable<(&'static [u8], u32)> = HashTable::with_capacity(size_hint);
2907        let hasher = FxBuildHasher::default();
2908
2909        let mut byte_strs: Vec<&'static [u8]> = Vec::with_capacity(size_hint);
2910
2911        for v in values {
2912            match indices.entry(hasher.hash_one(&v), |&(s, _)| s == v, |&(s, _)| hasher.hash_one(s))
2913            {
2914                Entry::Occupied(v) => conflicting_values.push(v.get().0),
2915                Entry::Vacant(view) => {
2916                    view.insert((v, byte_strs.len() as u32));
2917                    byte_strs.push(v);
2918                }
2919            }
2920        }
2921
2922        if conflicting_values.len() != 0 {
2923            {
    ::core::panicking::panic_fmt(format_args!("duplicate symbols in the rustc symbol list and the extra symbols added by the driver: {0:?}",
            conflicting_values));
}panic!(
2924                "duplicate symbols in the rustc symbol list and the extra symbols added by the driver: {:?}",
2925                conflicting_values
2926            )
2927        }
2928
2929        Interner(Lock::new(InternerInner { arena: Default::default(), indices, byte_strs }))
2930    }
2931
2932    fn intern_str(&self, str: &str) -> Symbol {
2933        Symbol::new(self.intern_inner(str.as_bytes()))
2934    }
2935
2936    fn intern_byte_str(&self, byte_str: &[u8]) -> ByteSymbol {
2937        ByteSymbol::new(self.intern_inner(byte_str))
2938    }
2939
2940    #[inline]
2941    fn intern_inner(&self, byte_str: &[u8]) -> u32 {
2942        let hasher = FxBuildHasher::default();
2943        let hash_of_byte_str = hasher.hash_one(byte_str);
2944
2945        self.0.with_lock(|inner| {
2946            match inner.indices.entry(
2947                hash_of_byte_str,
2948                |&(s, _)| s == byte_str,
2949                |&(s, _)| hasher.hash_one(s),
2950            ) {
2951                Entry::Occupied(v) => v.get().1,
2952                Entry::Vacant(view) => {
2953                    let byte_str: &[u8] = inner.arena.alloc_slice(byte_str);
2954
2955                    // SAFETY: we can extend the arena allocation to `'static` because we
2956                    // only access these while the arena is still alive.
2957                    let byte_str: &'static [u8] = unsafe { &*(byte_str as *const [u8]) };
2958                    let idx = inner.byte_strs.len() as u32;
2959                    view.insert((byte_str, idx));
2960                    inner.byte_strs.push(byte_str);
2961                    idx
2962                }
2963            }
2964        })
2965    }
2966
2967    /// Get the symbol as a string.
2968    ///
2969    /// [`Symbol::as_str()`] should be used in preference to this function.
2970    fn get_str(&self, symbol: Symbol) -> &str {
2971        let byte_str = self.get_inner(symbol.0.as_usize());
2972        // SAFETY: known to be a UTF8 string because it's a `Symbol`.
2973        unsafe { str::from_utf8_unchecked(byte_str) }
2974    }
2975
2976    /// Get the symbol as a string.
2977    ///
2978    /// [`ByteSymbol::as_byte_str()`] should be used in preference to this function.
2979    fn get_byte_str(&self, symbol: ByteSymbol) -> &[u8] {
2980        self.get_inner(symbol.0.as_usize())
2981    }
2982
2983    fn get_inner(&self, index: usize) -> &[u8] {
2984        self.0.with_lock(|inner| inner.byte_strs[index])
2985    }
2986}
2987
2988// This module has a very short name because it's used a lot.
2989/// This module contains all the defined keyword `Symbol`s.
2990///
2991/// Given that `kw` is imported, use them like `kw::keyword_name`.
2992/// For example `kw::Loop` or `kw::Break`.
2993pub mod kw {
2994    pub use super::kw_generated::*;
2995}
2996
2997// This module has a very short name because it's used a lot.
2998/// This module contains all the defined non-keyword `Symbol`s.
2999///
3000/// Given that `sym` is imported, use them like `sym::symbol_name`.
3001/// For example `sym::rustfmt` or `sym::u8`.
3002#[cfg_attr(
3003    bootstrap,
3004    diagnostic::on_unknown(
3005        label = "`{Unresolved}` is not a pre-interned symbol",
3006        note = "consider adding `{Unresolved}` to the `symbols!` invocation in compiler/rustc_span/src/symbol.rs"
3007    )
3008)]
3009#[cfg_attr(
3010    not(bootstrap),
3011    diagnostic::on_unknown(
3012        label = "`{unresolved}` is not a pre-interned symbol",
3013        note = "consider adding `{unresolved}` to the `symbols!` invocation in compiler/rustc_span/src/symbol.rs"
3014    )
3015)]
3016pub mod sym {
3017    use super::Symbol;
3018    // Used from a macro in `librustc_feature/accepted.rs`
3019    pub use super::kw::MacroRules as macro_rules;
3020    #[doc(inline)]
3021    pub use super::sym_generated::*;
3022
3023    // Used quite often in relation to C ABI.
3024    pub const C: Symbol = ascii_letter_digit('C').unwrap();
3025
3026    // RISC-V stuff
3027    #[expect(non_upper_case_globals)]
3028    pub const f: Symbol = ascii_letter_digit('f').unwrap();
3029    #[expect(non_upper_case_globals)]
3030    pub const d: Symbol = ascii_letter_digit('d').unwrap();
3031
3032    /// Get the symbol for an integer.
3033    ///
3034    /// The first few non-negative integers each have a static symbol and therefore
3035    /// are fast.
3036    pub fn integer<N: TryInto<usize> + Copy + itoa::Integer>(n: N) -> Symbol {
3037        if let Result::Ok(idx) = n.try_into() {
3038            if idx < 10 {
3039                return Symbol::new(super::SYMBOL_DIGITS_BASE + idx as u32);
3040            }
3041        }
3042        let mut buffer = itoa::Buffer::new();
3043        let printed = buffer.format(n);
3044        Symbol::intern(printed)
3045    }
3046
3047    pub const fn ascii_letter_digit(c: char) -> Option<Symbol> {
3048        let i = c as u32;
3049        Option::Some(Symbol::new(match c {
3050            '0'..='9' => super::SYMBOL_DIGITS_BASE + (i - '0' as u32),
3051            'A'..='Z' => super::SYMBOL_UPPERCASE_LETTERS_BASE + (i - 'A' as u32),
3052            'a'..='z' => super::SYMBOL_LOWERCASE_LETTERS_BASE + (i - 'a' as u32),
3053            _ => return Option::None,
3054        }))
3055    }
3056
3057    pub fn character(c: char) -> Symbol {
3058        ascii_letter_digit(c).unwrap_or_else(|| {
3059            let mut buf: [u8; char::MAX_LEN_UTF8] = Default::default();
3060            Symbol::intern(c.encode_utf8(&mut buf))
3061        })
3062    }
3063}
3064
3065impl Symbol {
3066    fn is_special(self) -> bool {
3067        self <= kw::Underscore
3068    }
3069
3070    fn is_used_keyword_always(self) -> bool {
3071        self >= kw::As && self <= kw::While
3072    }
3073
3074    fn is_unused_keyword_always(self) -> bool {
3075        self >= kw::Abstract && self <= kw::Yield
3076    }
3077
3078    fn is_used_keyword_conditional(self, edition: impl FnOnce() -> Edition) -> bool {
3079        (self >= kw::Async && self <= kw::Dyn) && edition() >= Edition::Edition2018
3080    }
3081
3082    fn is_unused_keyword_conditional(self, edition: impl Copy + FnOnce() -> Edition) -> bool {
3083        self == kw::Gen && edition().at_least_rust_2024()
3084            || self == kw::Try && edition().at_least_rust_2018()
3085    }
3086
3087    pub fn is_reserved(self, edition: impl Copy + FnOnce() -> Edition) -> bool {
3088        self.is_special()
3089            || self.is_used_keyword_always()
3090            || self.is_unused_keyword_always()
3091            || self.is_used_keyword_conditional(edition)
3092            || self.is_unused_keyword_conditional(edition)
3093    }
3094
3095    pub fn is_weak(self) -> bool {
3096        self >= kw::Auto && self <= kw::Yeet
3097    }
3098
3099    /// A keyword or reserved identifier that can be used as a path segment.
3100    pub fn is_path_segment_keyword(self) -> bool {
3101        self == kw::Super
3102            || self == kw::SelfLower
3103            || self == kw::SelfUpper
3104            || self == kw::Crate
3105            || self == kw::PathRoot
3106            || self == kw::DollarCrate
3107    }
3108
3109    /// Returns `true` if the symbol is `true` or `false`.
3110    pub fn is_bool_lit(self) -> bool {
3111        self == kw::True || self == kw::False
3112    }
3113
3114    /// Returns `true` if this symbol can be a raw identifier.
3115    pub fn can_be_raw(self) -> bool {
3116        self != sym::empty && self != kw::Underscore && !self.is_path_segment_keyword()
3117    }
3118
3119    /// Was this symbol index predefined in the compiler's `symbols!` macro?
3120    /// Note: this applies to both `Symbol`s and `ByteSymbol`s, which is why it
3121    /// takes a `u32` argument instead of a `&self` argument. Use with care.
3122    pub fn is_predefined(index: u32) -> bool {
3123        index < PREDEFINED_SYMBOLS_COUNT
3124    }
3125}
3126
3127impl Ident {
3128    /// Returns `true` for reserved identifiers used internally for elided lifetimes,
3129    /// unnamed method parameters, crate root module, error recovery etc.
3130    pub fn is_special(self) -> bool {
3131        self.name.is_special()
3132    }
3133
3134    /// Returns `true` if the token is a keyword used in the language.
3135    pub fn is_used_keyword(self) -> bool {
3136        // Note: `span.edition()` is relatively expensive, don't call it unless necessary.
3137        self.name.is_used_keyword_always()
3138            || self.name.is_used_keyword_conditional(|| self.span.edition())
3139    }
3140
3141    /// Returns `true` if the token is a keyword reserved for possible future use.
3142    pub fn is_unused_keyword(self) -> bool {
3143        // Note: `span.edition()` is relatively expensive, don't call it unless necessary.
3144        self.name.is_unused_keyword_always()
3145            || self.name.is_unused_keyword_conditional(|| self.span.edition())
3146    }
3147
3148    /// Returns `true` if the token is either a special identifier or a keyword.
3149    pub fn is_reserved(self) -> bool {
3150        // Note: `span.edition()` is relatively expensive, don't call it unless necessary.
3151        self.name.is_reserved(|| self.span.edition())
3152    }
3153
3154    /// A keyword or reserved identifier that can be used as a path segment.
3155    pub fn is_path_segment_keyword(self) -> bool {
3156        self.name.is_path_segment_keyword()
3157    }
3158
3159    /// We see this identifier in a normal identifier position, like variable name or a type.
3160    /// How was it written originally? Did it use the raw form? Let's try to guess.
3161    pub fn is_raw_guess(self) -> bool {
3162        self.name.can_be_raw() && self.is_reserved()
3163    }
3164
3165    /// Given the name of a lifetime without the first quote (`'`),
3166    /// returns whether the lifetime name is reserved (therefore invalid)
3167    pub fn is_reserved_lifetime(self) -> bool {
3168        self.is_reserved() && ![kw::Underscore, kw::Static].contains(&self.name)
3169    }
3170
3171    pub fn is_raw_lifetime_guess(self) -> bool {
3172        // Check that the name isn't just a single quote.
3173        // `self.without_first_quote()` would return empty ident, which triggers debug assert.
3174        if self.name.as_str() == "'" {
3175            return false;
3176        }
3177        let ident_without_apostrophe = self.without_first_quote();
3178        ident_without_apostrophe.name != self.name
3179            && ident_without_apostrophe.name.can_be_raw()
3180            && ident_without_apostrophe.is_reserved_lifetime()
3181    }
3182
3183    pub fn guess_print_mode(self) -> IdentPrintMode {
3184        if self.is_raw_lifetime_guess() {
3185            IdentPrintMode::RawLifetime
3186        } else if self.is_raw_guess() {
3187            IdentPrintMode::RawIdent
3188        } else {
3189            IdentPrintMode::Normal
3190        }
3191    }
3192
3193    /// Whether this would be the identifier for a tuple field like `self.0`, as
3194    /// opposed to a named field like `self.thing`.
3195    pub fn is_numeric(self) -> bool {
3196        self.as_str().bytes().all(|b| b.is_ascii_digit())
3197    }
3198}
3199
3200/// Collect all the keywords in a given edition into a vector.
3201///
3202/// *Note:* Please update this if a new keyword is added beyond the current
3203/// range.
3204pub fn used_keywords(edition: impl Copy + FnOnce() -> Edition) -> Vec<Symbol> {
3205    (kw::DollarCrate.as_u32()..kw::Yeet.as_u32())
3206        .filter_map(|kw| {
3207            let kw = Symbol::new(kw);
3208            if kw.is_used_keyword_always() || kw.is_used_keyword_conditional(edition) {
3209                Some(kw)
3210            } else {
3211                None
3212            }
3213        })
3214        .collect()
3215}