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