1use rustc_data_structures::fx::FxIndexMap;
11use rustc_data_structures::stable_hash::{StableHash, StableHashCtxt, StableHasher};
12use rustc_macros::{BlobDecodable, Encodable, PrintAttribute, StableHash};
13use rustc_span::def_id::DefId;
14use rustc_span::{Symbol, kw, sym};
15
16use crate::PrintAttribute;
17use crate::target::{AssocCtxt, MethodKind, Target};
18
19#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
LanguageItems {
#[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 {
LanguageItems {
items: ref __binding_0,
reverse_items: ref __binding_1,
missing: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, #[automatically_derived]impl ::core::fmt::Debug for LanguageItems {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"LanguageItems items reverse_items missing", &self.items,
&self.reverse_items, &&self.missing)
}
}Debug)]
22pub struct LanguageItems {
23 items: [Option<DefId>; std::mem::variant_count::<LangItem>()],
26 reverse_items: FxIndexMap<DefId, LangItem>,
27 pub missing: Vec<LangItem>,
29}
30
31impl LanguageItems {
32 pub fn new() -> Self {
34 Self {
35 items: [None; std::mem::variant_count::<LangItem>()],
36 reverse_items: FxIndexMap::default(),
37 missing: Vec::new(),
38 }
39 }
40
41 pub fn get(&self, item: LangItem) -> Option<DefId> {
42 self.items[item as usize]
43 }
44
45 pub fn set(&mut self, item: LangItem, def_id: DefId) {
46 self.items[item as usize] = Some(def_id);
47 let preexisting = self.reverse_items.insert(def_id, item);
48
49 if let Some(preexisting) = preexisting {
51 {
::core::panicking::panic_fmt(format_args!("For the bijection of LangItem <=> DefId to work,one item DefId may only be assigned one LangItem. Separate the LangItem definitions for {0:?} and {1:?}.",
item, preexisting));
};panic!(
52 "For the bijection of LangItem <=> DefId to work,\
53 one item DefId may only be assigned one LangItem. \
54 Separate the LangItem definitions for {item:?} and {preexisting:?}."
55 );
56 }
57 }
58
59 pub fn from_def_id(&self, def_id: DefId) -> Option<LangItem> {
60 self.reverse_items.get(&def_id).copied()
61 }
62
63 pub fn iter(&self) -> impl Iterator<Item = (LangItem, DefId)> {
64 self.items
65 .iter()
66 .enumerate()
67 .filter_map(|(i, id)| id.map(|id| (LangItem::from_u32(i as u32).unwrap(), id)))
68 }
69
70 pub fn trim_missing(&mut self) {
72 self.missing.retain(|&item| self.items[item as usize].is_none());
73 }
74}
75
76macro_rules! language_item_table {
79 (
80 $( $(#[$attr:meta])* $variant:ident, $module:ident :: $name:ident, $method:ident, $target:expr, $generics:expr; )*
81 ) => {
82 #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Encodable, BlobDecodable, PrintAttribute)]
84 pub enum LangItem {
85 $(
86 #[doc = concat!("The `", stringify!($name), "` lang item.")]
87 $(#[$attr])*
88 $variant,
89 )*
90 }
91
92 impl LangItem {
93 fn from_u32(u: u32) -> Option<LangItem> {
94 $(if u == LangItem::$variant as u32 {
98 return Some(LangItem::$variant)
99 })*
100 None
101 }
102
103 pub fn name(self) -> Symbol {
107 match self {
108 $( LangItem::$variant => $module::$name, )*
109 }
110 }
111
112 pub fn from_name(name: Symbol) -> Option<Self> {
114 match name {
115 $( $module::$name => Some(LangItem::$variant), )*
116 _ => None,
117 }
118 }
119
120 pub fn variant_name(self) -> &'static str {
123 match self {
124 $( LangItem::$variant => stringify!($variant), )*
125 }
126 }
127
128 pub fn target(self) -> Target {
129 match self {
130 $( LangItem::$variant => $target, )*
131 }
132 }
133
134 pub fn required_generics(&self) -> GenericRequirement {
135 match self {
136 $( LangItem::$variant => $generics, )*
137 }
138 }
139 }
140
141 impl LanguageItems {
142 $(
143 #[doc = concat!("Returns the [`DefId`] of the `", stringify!($name), "` lang item if it is defined.")]
144 pub fn $method(&self) -> Option<DefId> {
145 self.items[LangItem::$variant as usize]
146 }
147 )*
148 }
149 }
150}
151
152impl StableHash for LangItem {
153 fn stable_hash<Hcx: StableHashCtxt>(&self, _: &mut Hcx, hasher: &mut StableHasher) {
154 ::std::hash::Hash::hash(self, hasher);
155 }
156}
157
158pub enum LangItem {
#[doc = "The `sized` lang item."]
Sized,
#[doc = "The `meta_sized` lang item."]
MetaSized,
#[doc = "The `pointee_sized` lang item."]
PointeeSized,
#[doc = "The `unsize` lang item."]
Unsize,
#[doc = "The `mem_align_const` lang item."]
AlignOf,
#[doc = "The `mem_size_const` lang item."]
SizeOf,
#[doc = "The `offset_of` lang item."]
OffsetOf,
#[doc = "The `structural_peq` lang item."]
#[doc =
r#" Trait injected by `#[derive(PartialEq)]`, (i.e. "Partial EQ")."#]
StructuralPeq,
#[doc = "The `copy` lang item."]
Copy,
#[doc = "The `clone` lang item."]
Clone,
#[doc = "The `clone_fn` lang item."]
CloneFn,
#[doc = "The `use_cloned` lang item."]
UseCloned,
#[doc = "The `trivial_clone` lang item."]
TrivialClone,
#[doc = "The `sync` lang item."]
Sync,
#[doc = "The `discriminant_kind` lang item."]
DiscriminantKind,
#[doc = "The `discriminant_type` lang item."]
#[doc = r" The associated item of the `DiscriminantKind` trait."]
Discriminant,
#[doc = "The `pointee_trait` lang item."]
PointeeTrait,
#[doc = "The `metadata_type` lang item."]
Metadata,
#[doc = "The `dyn_metadata` lang item."]
DynMetadata,
#[doc = "The `non_null` lang item."]
NonNull,
#[doc = "The `freeze` lang item."]
Freeze,
#[doc = "The `unsafe_unpin` lang item."]
UnsafeUnpin,
#[doc = "The `fn_ptr_trait` lang item."]
FnPtrTrait,
#[doc = "The `fn_ptr_as_ptr` lang item."]
FnPtrAsPtr,
#[doc = "The `fn_ptr_from_ptr` lang item."]
FnPtrFromPtr,
#[doc = "The `code` lang item."]
Code,
#[doc = "The `drop` lang item."]
Drop,
#[doc = "The `destruct` lang item."]
Destruct,
#[doc = "The `async_drop` lang item."]
AsyncDrop,
#[doc = "The `async_drop_in_place` lang item."]
AsyncDropInPlace,
#[doc = "The `coerce_unsized` lang item."]
CoerceUnsized,
#[doc = "The `dispatch_from_dyn` lang item."]
DispatchFromDyn,
#[doc = "The `try_as_dyn` lang item."]
TryAsDyn,
#[doc = "The `transmute_opts` lang item."]
TransmuteOpts,
#[doc = "The `transmute_trait` lang item."]
TransmuteTrait,
#[doc = "The `add` lang item."]
Add,
#[doc = "The `sub` lang item."]
Sub,
#[doc = "The `mul` lang item."]
Mul,
#[doc = "The `div` lang item."]
Div,
#[doc = "The `rem` lang item."]
Rem,
#[doc = "The `neg` lang item."]
Neg,
#[doc = "The `not` lang item."]
Not,
#[doc = "The `bitxor` lang item."]
BitXor,
#[doc = "The `bitand` lang item."]
BitAnd,
#[doc = "The `bitor` lang item."]
BitOr,
#[doc = "The `shl` lang item."]
Shl,
#[doc = "The `shr` lang item."]
Shr,
#[doc = "The `add_assign` lang item."]
AddAssign,
#[doc = "The `sub_assign` lang item."]
SubAssign,
#[doc = "The `mul_assign` lang item."]
MulAssign,
#[doc = "The `div_assign` lang item."]
DivAssign,
#[doc = "The `rem_assign` lang item."]
RemAssign,
#[doc = "The `bitxor_assign` lang item."]
BitXorAssign,
#[doc = "The `bitand_assign` lang item."]
BitAndAssign,
#[doc = "The `bitor_assign` lang item."]
BitOrAssign,
#[doc = "The `shl_assign` lang item."]
ShlAssign,
#[doc = "The `shr_assign` lang item."]
ShrAssign,
#[doc = "The `index` lang item."]
Index,
#[doc = "The `index_mut` lang item."]
IndexMut,
#[doc = "The `unsafe_cell` lang item."]
UnsafeCell,
#[doc = "The `covariant_unsafe_cell` lang item."]
CovariantUnsafeCell,
#[doc = "The `unsafe_pinned` lang item."]
UnsafePinned,
#[doc = "The `va_arg_safe` lang item."]
VaArgSafe,
#[doc = "The `va_list` lang item."]
VaList,
#[doc = "The `complex` lang item."]
Complex,
#[doc = "The `ppcf128` lang item."]
PpcF128,
#[doc = "The `deref` lang item."]
Deref,
#[doc = "The `deref_mut` lang item."]
DerefMut,
#[doc = "The `deref_pure` lang item."]
DerefPure,
#[doc = "The `deref_target` lang item."]
DerefTarget,
#[doc = "The `receiver` lang item."]
Receiver,
#[doc = "The `receiver_target` lang item."]
ReceiverTarget,
#[doc = "The `legacy_receiver` lang item."]
LegacyReceiver,
#[doc = "The `Fn` lang item."]
Fn,
#[doc = "The `fn_mut` lang item."]
FnMut,
#[doc = "The `fn_once` lang item."]
FnOnce,
#[doc = "The `fn_static` lang item."]
FnStatic,
#[doc = "The `async_fn` lang item."]
AsyncFn,
#[doc = "The `async_fn_mut` lang item."]
AsyncFnMut,
#[doc = "The `async_fn_once` lang item."]
AsyncFnOnce,
#[doc = "The `async_fn_once_output` lang item."]
AsyncFnOnceOutput,
#[doc = "The `call_once_future` lang item."]
CallOnceFuture,
#[doc = "The `call_ref_future` lang item."]
CallRefFuture,
#[doc = "The `async_fn_kind_helper` lang item."]
AsyncFnKindHelper,
#[doc = "The `async_fn_kind_upvars` lang item."]
AsyncFnKindUpvars,
#[doc = "The `fn_once_output` lang item."]
FnOnceOutput,
#[doc = "The `iterator` lang item."]
Iterator,
#[doc = "The `fused_iterator` lang item."]
FusedIterator,
#[doc = "The `future_trait` lang item."]
Future,
#[doc = "The `future_output` lang item."]
FutureOutput,
#[doc = "The `async_iterator` lang item."]
AsyncIterator,
#[doc = "The `coroutine_state` lang item."]
CoroutineState,
#[doc = "The `coroutine` lang item."]
Coroutine,
#[doc = "The `coroutine_return` lang item."]
CoroutineReturn,
#[doc = "The `coroutine_yield` lang item."]
CoroutineYield,
#[doc = "The `coroutine_resume` lang item."]
CoroutineResume,
#[doc = "The `unpin` lang item."]
Unpin,
#[doc = "The `Pin` lang item."]
Pin,
#[doc = "The `Ordering` lang item."]
OrderingEnum,
#[doc = "The `eq` lang item."]
PartialEq,
#[doc = "The `partial_ord` lang item."]
PartialOrd,
#[doc = "The `c_void` lang item."]
CVoid,
#[doc = "The `f16b` lang item."]
F16B,
#[doc = "The `type_info` lang item."]
Type,
#[doc = "The `type_info_generic` lang item."]
TypeGeneric,
#[doc = "The `type_id` lang item."]
TypeId,
#[doc = "The `panic` lang item."]
Panic,
#[doc = "The `panic_nounwind` lang item."]
PanicNounwind,
#[doc = "The `panic_fmt` lang item."]
PanicFmt,
#[doc = "The `panic_display` lang item."]
PanicDisplay,
#[doc = "The `const_panic_fmt` lang item."]
ConstPanicFmt,
#[doc = "The `panic_bounds_check` lang item."]
PanicBoundsCheck,
#[doc = "The `panic_misaligned_pointer_dereference` lang item."]
PanicMisalignedPointerDereference,
#[doc = "The `panic_info` lang item."]
PanicInfo,
#[doc = "The `panic_location` lang item."]
PanicLocation,
#[doc = "The `panic_impl` lang item."]
PanicImpl,
#[doc = "The `panic_cannot_unwind` lang item."]
PanicCannotUnwind,
#[doc = "The `panic_in_cleanup` lang item."]
PanicInCleanup,
#[doc = "The `panic_const_add_overflow` lang item."]
#[doc = r" Constant panic messages, used for codegen of MIR asserts."]
PanicAddOverflow,
#[doc = "The `panic_const_sub_overflow` lang item."]
PanicSubOverflow,
#[doc = "The `panic_const_mul_overflow` lang item."]
PanicMulOverflow,
#[doc = "The `panic_const_div_overflow` lang item."]
PanicDivOverflow,
#[doc = "The `panic_const_rem_overflow` lang item."]
PanicRemOverflow,
#[doc = "The `panic_const_neg_overflow` lang item."]
PanicNegOverflow,
#[doc = "The `panic_const_shr_overflow` lang item."]
PanicShrOverflow,
#[doc = "The `panic_const_shl_overflow` lang item."]
PanicShlOverflow,
#[doc = "The `panic_const_div_by_zero` lang item."]
PanicDivZero,
#[doc = "The `panic_const_rem_by_zero` lang item."]
PanicRemZero,
#[doc = "The `panic_const_coroutine_resumed` lang item."]
PanicCoroutineResumed,
#[doc = "The `panic_const_async_fn_resumed` lang item."]
PanicAsyncFnResumed,
#[doc = "The `panic_const_async_gen_fn_resumed` lang item."]
PanicAsyncGenFnResumed,
#[doc = "The `panic_const_gen_fn_none` lang item."]
PanicGenFnNone,
#[doc = "The `panic_const_coroutine_resumed_panic` lang item."]
PanicCoroutineResumedPanic,
#[doc = "The `panic_const_async_fn_resumed_panic` lang item."]
PanicAsyncFnResumedPanic,
#[doc = "The `panic_const_async_gen_fn_resumed_panic` lang item."]
PanicAsyncGenFnResumedPanic,
#[doc = "The `panic_const_gen_fn_none_panic` lang item."]
PanicGenFnNonePanic,
#[doc = "The `panic_null_pointer_dereference` lang item."]
PanicNullPointerDereference,
#[doc = "The `panic_null_reference_constructed` lang item."]
PanicNullReferenceConstructed,
#[doc = "The `panic_invalid_enum_construction` lang item."]
PanicInvalidEnumConstruction,
#[doc = "The `panic_const_coroutine_resumed_drop` lang item."]
PanicCoroutineResumedDrop,
#[doc = "The `panic_const_async_fn_resumed_drop` lang item."]
PanicAsyncFnResumedDrop,
#[doc = "The `panic_const_async_gen_fn_resumed_drop` lang item."]
PanicAsyncGenFnResumedDrop,
#[doc = "The `panic_const_gen_fn_none_drop` lang item."]
PanicGenFnNoneDrop,
#[doc = "The `begin_panic` lang item."]
#[doc =
r" libstd panic entry point. Necessary for const eval to be able to catch it"]
BeginPanic,
#[doc = "The `format_argument` lang item."]
FormatArgument,
#[doc = "The `format_arguments` lang item."]
FormatArguments,
#[doc = "The `drop_glue` lang item."]
DropGlue,
#[doc = "The `alloc_layout` lang item."]
AllocLayout,
#[doc = "The `start` lang item."]
#[doc =
r#" For all binary crates without `#![no_main]`, Rust will generate a "main" function."#]
#[doc =
r#" The exact name and signature are target-dependent. The "main" function will invoke"#]
#[doc =
r" this lang item, passing it the `argc` and `argv` (or null, if those don't exist"]
#[doc =
r" on the current target) as well as the user-defined `fn main` from the binary crate."]
Start,
#[doc = "The `eh_personality` lang item."]
EhPersonality,
#[doc = "The `compiler_move` lang item."]
CompilerMove,
#[doc = "The `compiler_copy` lang item."]
CompilerCopy,
#[doc = "The `owned_box` lang item."]
OwnedBox,
#[doc = "The `global_alloc_ty` lang item."]
GlobalAlloc,
#[doc = "The `phantom_data` lang item."]
PhantomData,
#[doc = "The `manually_drop` lang item."]
ManuallyDrop,
#[doc = "The `maybe_dangling` lang item."]
MaybeDangling,
#[doc = "The `bikeshed_guaranteed_no_drop` lang item."]
BikeshedGuaranteedNoDrop,
#[doc = "The `maybe_uninit` lang item."]
MaybeUninit,
#[doc = "The `termination` lang item."]
Termination,
#[doc = "The `Try` lang item."]
Try,
#[doc = "The `tuple_trait` lang item."]
Tuple,
#[doc = "The `slice_len_fn` lang item."]
SliceLen,
#[doc = "The `from_residual` lang item."]
TryTraitFromResidual,
#[doc = "The `from_output` lang item."]
TryTraitFromOutput,
#[doc = "The `branch` lang item."]
TryTraitBranch,
#[doc = "The `from_yeet` lang item."]
TryTraitFromYeet,
#[doc = "The `into_try_type` lang item."]
ResidualIntoTryType,
#[doc = "The `coerce_pointee_validated` lang item."]
CoercePointeeValidated,
#[doc = "The `const_param_ty` lang item."]
ConstParamTy,
#[doc = "The `Poll` lang item."]
Poll,
#[doc = "The `Ready` lang item."]
PollReady,
#[doc = "The `Pending` lang item."]
PollPending,
#[doc = "The `AsyncGenReady` lang item."]
AsyncGenReady,
#[doc = "The `AsyncGenPending` lang item."]
AsyncGenPending,
#[doc = "The `AsyncGenFinished` lang item."]
AsyncGenFinished,
#[doc = "The `ResumeTy` lang item."]
ResumeTy,
#[doc = "The `get_context` lang item."]
GetContext,
#[doc = "The `Context` lang item."]
Context,
#[doc = "The `poll` lang item."]
FuturePoll,
#[doc = "The `async_iterator_poll_next` lang item."]
AsyncIteratorPollNext,
#[doc = "The `into_async_iter_into_iter` lang item."]
IntoAsyncIterIntoIter,
#[doc = "The `Option` lang item."]
Option,
#[doc = "The `Some` lang item."]
OptionSome,
#[doc = "The `None` lang item."]
OptionNone,
#[doc = "The `Ok` lang item."]
ResultOk,
#[doc = "The `Err` lang item."]
ResultErr,
#[doc = "The `Continue` lang item."]
ControlFlowContinue,
#[doc = "The `Break` lang item."]
ControlFlowBreak,
#[doc = "The `into_future` lang item."]
IntoFutureIntoFuture,
#[doc = "The `into_iter` lang item."]
IntoIterIntoIter,
#[doc = "The `next` lang item."]
IteratorNext,
#[doc = "The `new_unchecked` lang item."]
PinNewUnchecked,
#[doc = "The `RangeFrom` lang item."]
RangeFrom,
#[doc = "The `RangeFull` lang item."]
RangeFull,
#[doc = "The `RangeInclusive` lang item."]
RangeInclusiveStruct,
#[doc = "The `range_inclusive_new` lang item."]
RangeInclusiveNew,
#[doc = "The `Range` lang item."]
Range,
#[doc = "The `RangeToInclusive` lang item."]
RangeToInclusive,
#[doc = "The `RangeTo` lang item."]
RangeTo,
#[doc = "The `RangeMax` lang item."]
RangeMax,
#[doc = "The `RangeMin` lang item."]
RangeMin,
#[doc = "The `RangeSub` lang item."]
RangeSub,
#[doc = "The `RangeFromCopy` lang item."]
RangeFromCopy,
#[doc = "The `RangeCopy` lang item."]
RangeCopy,
#[doc = "The `RangeInclusiveCopy` lang item."]
RangeInclusiveCopy,
#[doc = "The `RangeToInclusiveCopy` lang item."]
RangeToInclusiveCopy,
#[doc = "The `String` lang item."]
String,
#[doc = "The `CStr` lang item."]
CStr,
#[doc = "The `contract_build_check_ensures` lang item."]
ContractBuildCheckEnsures,
#[doc = "The `contract_check_requires` lang item."]
ContractCheckRequires,
#[doc = "The `default_trait4` lang item."]
DefaultTrait4,
#[doc = "The `default_trait3` lang item."]
DefaultTrait3,
#[doc = "The `default_trait2` lang item."]
DefaultTrait2,
#[doc = "The `default_trait1` lang item."]
DefaultTrait1,
#[doc = "The `contract_check_ensures` lang item."]
ContractCheckEnsures,
#[doc = "The `reborrow` lang item."]
Reborrow,
#[doc = "The `coerce_shared` lang item."]
CoerceShared,
#[doc = "The `field_representing_type` lang item."]
FieldRepresentingType,
#[doc = "The `field` lang item."]
Field,
#[doc = "The `field_base` lang item."]
FieldBase,
#[doc = "The `field_type` lang item."]
FieldType,
#[doc = "The `field_offset` lang item."]
FieldOffset,
#[doc = "The `From` lang item."]
From,
#[doc = "The `from` lang item."]
FromFn,
#[doc = "The `FnPtr` lang item."]
FnPtr,
}
#[automatically_derived]impl ::core::fmt::Debug for LangItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_c_like_enum_write_str(f,
"Sized MetaSized PointeeSized Unsize AlignOf SizeOf OffsetOf StructuralPeq Copy Clone CloneFn UseCloned TrivialClone Sync DiscriminantKind Discriminant PointeeTrait Metadata DynMetadata NonNull Freeze UnsafeUnpin FnPtrTrait FnPtrAsPtr FnPtrFromPtr Code Drop Destruct AsyncDrop AsyncDropInPlace CoerceUnsized DispatchFromDyn TryAsDyn TransmuteOpts TransmuteTrait Add Sub Mul Div Rem Neg Not BitXor BitAnd BitOr Shl Shr AddAssign SubAssign MulAssign DivAssign RemAssign BitXorAssign BitAndAssign BitOrAssign ShlAssign ShrAssign Index IndexMut UnsafeCell CovariantUnsafeCell UnsafePinned VaArgSafe VaList Complex PpcF128 Deref DerefMut DerefPure DerefTarget Receiver ReceiverTarget LegacyReceiver Fn FnMut FnOnce FnStatic AsyncFn AsyncFnMut AsyncFnOnce AsyncFnOnceOutput CallOnceFuture CallRefFuture AsyncFnKindHelper AsyncFnKindUpvars FnOnceOutput Iterator FusedIterator Future FutureOutput AsyncIterator CoroutineState Coroutine CoroutineReturn CoroutineYield CoroutineResume Unpin Pin OrderingEnum PartialEq PartialOrd CVoid F16B Type TypeGeneric TypeId Panic PanicNounwind PanicFmt PanicDisplay ConstPanicFmt PanicBoundsCheck PanicMisalignedPointerDereference PanicInfo PanicLocation PanicImpl PanicCannotUnwind PanicInCleanup PanicAddOverflow PanicSubOverflow PanicMulOverflow PanicDivOverflow PanicRemOverflow PanicNegOverflow PanicShrOverflow PanicShlOverflow PanicDivZero PanicRemZero PanicCoroutineResumed PanicAsyncFnResumed PanicAsyncGenFnResumed PanicGenFnNone PanicCoroutineResumedPanic PanicAsyncFnResumedPanic PanicAsyncGenFnResumedPanic PanicGenFnNonePanic PanicNullPointerDereference PanicNullReferenceConstructed PanicInvalidEnumConstruction PanicCoroutineResumedDrop PanicAsyncFnResumedDrop PanicAsyncGenFnResumedDrop PanicGenFnNoneDrop BeginPanic FormatArgument FormatArguments DropGlue AllocLayout Start EhPersonality CompilerMove CompilerCopy OwnedBox GlobalAlloc PhantomData ManuallyDrop MaybeDangling BikeshedGuaranteedNoDrop MaybeUninit Termination Try Tuple SliceLen TryTraitFromResidual TryTraitFromOutput TryTraitBranch TryTraitFromYeet ResidualIntoTryType CoercePointeeValidated ConstParamTy Poll PollReady PollPending AsyncGenReady AsyncGenPending AsyncGenFinished ResumeTy GetContext Context FuturePoll AsyncIteratorPollNext IntoAsyncIterIntoIter Option OptionSome OptionNone ResultOk ResultErr ControlFlowContinue ControlFlowBreak IntoFutureIntoFuture IntoIterIntoIter IteratorNext PinNewUnchecked RangeFrom RangeFull RangeInclusiveStruct RangeInclusiveNew Range RangeToInclusive RangeTo RangeMax RangeMin RangeSub RangeFromCopy RangeCopy RangeInclusiveCopy RangeToInclusiveCopy String CStr ContractBuildCheckEnsures ContractCheckRequires DefaultTrait4 DefaultTrait3 DefaultTrait2 DefaultTrait1 ContractCheckEnsures Reborrow CoerceShared FieldRepresentingType Field FieldBase FieldType FieldOffset From FromFn FnPtr",
match self {
LangItem::Sized => 0usize,
LangItem::MetaSized => 6usize,
LangItem::PointeeSized => 16usize,
LangItem::Unsize => 29usize,
LangItem::AlignOf => 36usize,
LangItem::SizeOf => 44usize,
LangItem::OffsetOf => 51usize,
LangItem::StructuralPeq => 60usize,
LangItem::Copy => 74usize,
LangItem::Clone => 79usize,
LangItem::CloneFn => 85usize,
LangItem::UseCloned => 93usize,
LangItem::TrivialClone => 103usize,
LangItem::Sync => 116usize,
LangItem::DiscriminantKind => 121usize,
LangItem::Discriminant => 138usize,
LangItem::PointeeTrait => 151usize,
LangItem::Metadata => 164usize,
LangItem::DynMetadata => 173usize,
LangItem::NonNull => 185usize,
LangItem::Freeze => 193usize,
LangItem::UnsafeUnpin => 200usize,
LangItem::FnPtrTrait => 212usize,
LangItem::FnPtrAsPtr => 223usize,
LangItem::FnPtrFromPtr => 234usize,
LangItem::Code => 247usize,
LangItem::Drop => 252usize,
LangItem::Destruct => 257usize,
LangItem::AsyncDrop => 266usize,
LangItem::AsyncDropInPlace => 276usize,
LangItem::CoerceUnsized => 293usize,
LangItem::DispatchFromDyn => 307usize,
LangItem::TryAsDyn => 323usize,
LangItem::TransmuteOpts => 332usize,
LangItem::TransmuteTrait => 346usize,
LangItem::Add => 361usize,
LangItem::Sub => 365usize,
LangItem::Mul => 369usize,
LangItem::Div => 373usize,
LangItem::Rem => 377usize,
LangItem::Neg => 381usize,
LangItem::Not => 385usize,
LangItem::BitXor => 389usize,
LangItem::BitAnd => 396usize,
LangItem::BitOr => 403usize,
LangItem::Shl => 409usize,
LangItem::Shr => 413usize,
LangItem::AddAssign => 417usize,
LangItem::SubAssign => 427usize,
LangItem::MulAssign => 437usize,
LangItem::DivAssign => 447usize,
LangItem::RemAssign => 457usize,
LangItem::BitXorAssign => 467usize,
LangItem::BitAndAssign => 480usize,
LangItem::BitOrAssign => 493usize,
LangItem::ShlAssign => 505usize,
LangItem::ShrAssign => 515usize,
LangItem::Index => 525usize,
LangItem::IndexMut => 531usize,
LangItem::UnsafeCell => 540usize,
LangItem::CovariantUnsafeCell => 551usize,
LangItem::UnsafePinned => 571usize,
LangItem::VaArgSafe => 584usize,
LangItem::VaList => 594usize,
LangItem::Complex => 601usize,
LangItem::PpcF128 => 609usize,
LangItem::Deref => 617usize,
LangItem::DerefMut => 623usize,
LangItem::DerefPure => 632usize,
LangItem::DerefTarget => 642usize,
LangItem::Receiver => 654usize,
LangItem::ReceiverTarget => 663usize,
LangItem::LegacyReceiver => 678usize,
LangItem::Fn => 693usize,
LangItem::FnMut => 696usize,
LangItem::FnOnce => 702usize,
LangItem::FnStatic => 709usize,
LangItem::AsyncFn => 718usize,
LangItem::AsyncFnMut => 726usize,
LangItem::AsyncFnOnce => 737usize,
LangItem::AsyncFnOnceOutput => 749usize,
LangItem::CallOnceFuture => 767usize,
LangItem::CallRefFuture => 782usize,
LangItem::AsyncFnKindHelper => 796usize,
LangItem::AsyncFnKindUpvars => 814usize,
LangItem::FnOnceOutput => 832usize,
LangItem::Iterator => 845usize,
LangItem::FusedIterator => 854usize,
LangItem::Future => 868usize,
LangItem::FutureOutput => 875usize,
LangItem::AsyncIterator => 888usize,
LangItem::CoroutineState => 902usize,
LangItem::Coroutine => 917usize,
LangItem::CoroutineReturn => 927usize,
LangItem::CoroutineYield => 943usize,
LangItem::CoroutineResume => 958usize,
LangItem::Unpin => 974usize,
LangItem::Pin => 980usize,
LangItem::OrderingEnum => 984usize,
LangItem::PartialEq => 997usize,
LangItem::PartialOrd => 1007usize,
LangItem::CVoid => 1018usize,
LangItem::F16B => 1024usize,
LangItem::Type => 1029usize,
LangItem::TypeGeneric => 1034usize,
LangItem::TypeId => 1046usize,
LangItem::Panic => 1053usize,
LangItem::PanicNounwind => 1059usize,
LangItem::PanicFmt => 1073usize,
LangItem::PanicDisplay => 1082usize,
LangItem::ConstPanicFmt => 1095usize,
LangItem::PanicBoundsCheck => 1109usize,
LangItem::PanicMisalignedPointerDereference => 1126usize,
LangItem::PanicInfo => 1160usize,
LangItem::PanicLocation => 1170usize,
LangItem::PanicImpl => 1184usize,
LangItem::PanicCannotUnwind => 1194usize,
LangItem::PanicInCleanup => 1212usize,
LangItem::PanicAddOverflow => 1227usize,
LangItem::PanicSubOverflow => 1244usize,
LangItem::PanicMulOverflow => 1261usize,
LangItem::PanicDivOverflow => 1278usize,
LangItem::PanicRemOverflow => 1295usize,
LangItem::PanicNegOverflow => 1312usize,
LangItem::PanicShrOverflow => 1329usize,
LangItem::PanicShlOverflow => 1346usize,
LangItem::PanicDivZero => 1363usize,
LangItem::PanicRemZero => 1376usize,
LangItem::PanicCoroutineResumed => 1389usize,
LangItem::PanicAsyncFnResumed => 1411usize,
LangItem::PanicAsyncGenFnResumed => 1431usize,
LangItem::PanicGenFnNone => 1454usize,
LangItem::PanicCoroutineResumedPanic => 1469usize,
LangItem::PanicAsyncFnResumedPanic => 1496usize,
LangItem::PanicAsyncGenFnResumedPanic => 1521usize,
LangItem::PanicGenFnNonePanic => 1549usize,
LangItem::PanicNullPointerDereference => 1569usize,
LangItem::PanicNullReferenceConstructed => 1597usize,
LangItem::PanicInvalidEnumConstruction => 1627usize,
LangItem::PanicCoroutineResumedDrop => 1656usize,
LangItem::PanicAsyncFnResumedDrop => 1682usize,
LangItem::PanicAsyncGenFnResumedDrop => 1706usize,
LangItem::PanicGenFnNoneDrop => 1733usize,
LangItem::BeginPanic => 1752usize,
LangItem::FormatArgument => 1763usize,
LangItem::FormatArguments => 1778usize,
LangItem::DropGlue => 1794usize,
LangItem::AllocLayout => 1803usize,
LangItem::Start => 1815usize,
LangItem::EhPersonality => 1821usize,
LangItem::CompilerMove => 1835usize,
LangItem::CompilerCopy => 1848usize,
LangItem::OwnedBox => 1861usize,
LangItem::GlobalAlloc => 1870usize,
LangItem::PhantomData => 1882usize,
LangItem::ManuallyDrop => 1894usize,
LangItem::MaybeDangling => 1907usize,
LangItem::BikeshedGuaranteedNoDrop => 1921usize,
LangItem::MaybeUninit => 1946usize,
LangItem::Termination => 1958usize,
LangItem::Try => 1970usize,
LangItem::Tuple => 1974usize,
LangItem::SliceLen => 1980usize,
LangItem::TryTraitFromResidual => 1989usize,
LangItem::TryTraitFromOutput => 2010usize,
LangItem::TryTraitBranch => 2029usize,
LangItem::TryTraitFromYeet => 2044usize,
LangItem::ResidualIntoTryType => 2061usize,
LangItem::CoercePointeeValidated => 2081usize,
LangItem::ConstParamTy => 2104usize,
LangItem::Poll => 2117usize,
LangItem::PollReady => 2122usize,
LangItem::PollPending => 2132usize,
LangItem::AsyncGenReady => 2144usize,
LangItem::AsyncGenPending => 2158usize,
LangItem::AsyncGenFinished => 2174usize,
LangItem::ResumeTy => 2191usize,
LangItem::GetContext => 2200usize,
LangItem::Context => 2211usize,
LangItem::FuturePoll => 2219usize,
LangItem::AsyncIteratorPollNext => 2230usize,
LangItem::IntoAsyncIterIntoIter => 2252usize,
LangItem::Option => 2274usize,
LangItem::OptionSome => 2281usize,
LangItem::OptionNone => 2292usize,
LangItem::ResultOk => 2303usize,
LangItem::ResultErr => 2312usize,
LangItem::ControlFlowContinue => 2322usize,
LangItem::ControlFlowBreak => 2342usize,
LangItem::IntoFutureIntoFuture => 2359usize,
LangItem::IntoIterIntoIter => 2380usize,
LangItem::IteratorNext => 2397usize,
LangItem::PinNewUnchecked => 2410usize,
LangItem::RangeFrom => 2426usize,
LangItem::RangeFull => 2436usize,
LangItem::RangeInclusiveStruct => 2446usize,
LangItem::RangeInclusiveNew => 2467usize,
LangItem::Range => 2485usize,
LangItem::RangeToInclusive => 2491usize,
LangItem::RangeTo => 2508usize,
LangItem::RangeMax => 2516usize,
LangItem::RangeMin => 2525usize,
LangItem::RangeSub => 2534usize,
LangItem::RangeFromCopy => 2543usize,
LangItem::RangeCopy => 2557usize,
LangItem::RangeInclusiveCopy => 2567usize,
LangItem::RangeToInclusiveCopy => 2586usize,
LangItem::String => 2607usize,
LangItem::CStr => 2614usize,
LangItem::ContractBuildCheckEnsures => 2619usize,
LangItem::ContractCheckRequires => 2645usize,
LangItem::DefaultTrait4 => 2667usize,
LangItem::DefaultTrait3 => 2681usize,
LangItem::DefaultTrait2 => 2695usize,
LangItem::DefaultTrait1 => 2709usize,
LangItem::ContractCheckEnsures => 2723usize,
LangItem::Reborrow => 2744usize,
LangItem::CoerceShared => 2753usize,
LangItem::FieldRepresentingType => 2766usize,
LangItem::Field => 2788usize,
LangItem::FieldBase => 2794usize,
LangItem::FieldType => 2804usize,
LangItem::FieldOffset => 2814usize,
LangItem::From => 2826usize,
LangItem::FromFn => 2831usize,
LangItem::FnPtr => 2838usize,
})
}
}
#[automatically_derived]impl ::core::marker::Copy for LangItem { }
#[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for LangItem {
}
#[automatically_derived]impl ::core::clone::Clone for LangItem {
#[inline]
fn clone(&self) -> Self { *self }
}
#[automatically_derived]impl ::core::marker::StructuralPartialEq for LangItem
{
}
#[automatically_derived]impl ::core::cmp::PartialEq for LangItem {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}
#[automatically_derived]impl ::core::cmp::Eq for LangItem { }
#[automatically_derived]impl ::core::hash::Hash for LangItem {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}
const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for LangItem {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
LangItem::Sized => { 0usize }
LangItem::MetaSized => { 1usize }
LangItem::PointeeSized => { 2usize }
LangItem::Unsize => { 3usize }
LangItem::AlignOf => { 4usize }
LangItem::SizeOf => { 5usize }
LangItem::OffsetOf => { 6usize }
LangItem::StructuralPeq => { 7usize }
LangItem::Copy => { 8usize }
LangItem::Clone => { 9usize }
LangItem::CloneFn => { 10usize }
LangItem::UseCloned => { 11usize }
LangItem::TrivialClone => { 12usize }
LangItem::Sync => { 13usize }
LangItem::DiscriminantKind => { 14usize }
LangItem::Discriminant => { 15usize }
LangItem::PointeeTrait => { 16usize }
LangItem::Metadata => { 17usize }
LangItem::DynMetadata => { 18usize }
LangItem::NonNull => { 19usize }
LangItem::Freeze => { 20usize }
LangItem::UnsafeUnpin => { 21usize }
LangItem::FnPtrTrait => { 22usize }
LangItem::FnPtrAsPtr => { 23usize }
LangItem::FnPtrFromPtr => { 24usize }
LangItem::Code => { 25usize }
LangItem::Drop => { 26usize }
LangItem::Destruct => { 27usize }
LangItem::AsyncDrop => { 28usize }
LangItem::AsyncDropInPlace => { 29usize }
LangItem::CoerceUnsized => { 30usize }
LangItem::DispatchFromDyn => { 31usize }
LangItem::TryAsDyn => { 32usize }
LangItem::TransmuteOpts => { 33usize }
LangItem::TransmuteTrait => { 34usize }
LangItem::Add => { 35usize }
LangItem::Sub => { 36usize }
LangItem::Mul => { 37usize }
LangItem::Div => { 38usize }
LangItem::Rem => { 39usize }
LangItem::Neg => { 40usize }
LangItem::Not => { 41usize }
LangItem::BitXor => { 42usize }
LangItem::BitAnd => { 43usize }
LangItem::BitOr => { 44usize }
LangItem::Shl => { 45usize }
LangItem::Shr => { 46usize }
LangItem::AddAssign => { 47usize }
LangItem::SubAssign => { 48usize }
LangItem::MulAssign => { 49usize }
LangItem::DivAssign => { 50usize }
LangItem::RemAssign => { 51usize }
LangItem::BitXorAssign => { 52usize }
LangItem::BitAndAssign => { 53usize }
LangItem::BitOrAssign => { 54usize }
LangItem::ShlAssign => { 55usize }
LangItem::ShrAssign => { 56usize }
LangItem::Index => { 57usize }
LangItem::IndexMut => { 58usize }
LangItem::UnsafeCell => { 59usize }
LangItem::CovariantUnsafeCell => { 60usize }
LangItem::UnsafePinned => { 61usize }
LangItem::VaArgSafe => { 62usize }
LangItem::VaList => { 63usize }
LangItem::Complex => { 64usize }
LangItem::PpcF128 => { 65usize }
LangItem::Deref => { 66usize }
LangItem::DerefMut => { 67usize }
LangItem::DerefPure => { 68usize }
LangItem::DerefTarget => { 69usize }
LangItem::Receiver => { 70usize }
LangItem::ReceiverTarget => { 71usize }
LangItem::LegacyReceiver => { 72usize }
LangItem::Fn => { 73usize }
LangItem::FnMut => { 74usize }
LangItem::FnOnce => { 75usize }
LangItem::FnStatic => { 76usize }
LangItem::AsyncFn => { 77usize }
LangItem::AsyncFnMut => { 78usize }
LangItem::AsyncFnOnce => { 79usize }
LangItem::AsyncFnOnceOutput => { 80usize }
LangItem::CallOnceFuture => { 81usize }
LangItem::CallRefFuture => { 82usize }
LangItem::AsyncFnKindHelper => { 83usize }
LangItem::AsyncFnKindUpvars => { 84usize }
LangItem::FnOnceOutput => { 85usize }
LangItem::Iterator => { 86usize }
LangItem::FusedIterator => { 87usize }
LangItem::Future => { 88usize }
LangItem::FutureOutput => { 89usize }
LangItem::AsyncIterator => { 90usize }
LangItem::CoroutineState => { 91usize }
LangItem::Coroutine => { 92usize }
LangItem::CoroutineReturn => { 93usize }
LangItem::CoroutineYield => { 94usize }
LangItem::CoroutineResume => { 95usize }
LangItem::Unpin => { 96usize }
LangItem::Pin => { 97usize }
LangItem::OrderingEnum => { 98usize }
LangItem::PartialEq => { 99usize }
LangItem::PartialOrd => { 100usize }
LangItem::CVoid => { 101usize }
LangItem::F16B => { 102usize }
LangItem::Type => { 103usize }
LangItem::TypeGeneric => { 104usize }
LangItem::TypeId => { 105usize }
LangItem::Panic => { 106usize }
LangItem::PanicNounwind => { 107usize }
LangItem::PanicFmt => { 108usize }
LangItem::PanicDisplay => { 109usize }
LangItem::ConstPanicFmt => { 110usize }
LangItem::PanicBoundsCheck => { 111usize }
LangItem::PanicMisalignedPointerDereference => { 112usize }
LangItem::PanicInfo => { 113usize }
LangItem::PanicLocation => { 114usize }
LangItem::PanicImpl => { 115usize }
LangItem::PanicCannotUnwind => { 116usize }
LangItem::PanicInCleanup => { 117usize }
LangItem::PanicAddOverflow => { 118usize }
LangItem::PanicSubOverflow => { 119usize }
LangItem::PanicMulOverflow => { 120usize }
LangItem::PanicDivOverflow => { 121usize }
LangItem::PanicRemOverflow => { 122usize }
LangItem::PanicNegOverflow => { 123usize }
LangItem::PanicShrOverflow => { 124usize }
LangItem::PanicShlOverflow => { 125usize }
LangItem::PanicDivZero => { 126usize }
LangItem::PanicRemZero => { 127usize }
LangItem::PanicCoroutineResumed => { 128usize }
LangItem::PanicAsyncFnResumed => { 129usize }
LangItem::PanicAsyncGenFnResumed => { 130usize }
LangItem::PanicGenFnNone => { 131usize }
LangItem::PanicCoroutineResumedPanic => { 132usize }
LangItem::PanicAsyncFnResumedPanic => { 133usize }
LangItem::PanicAsyncGenFnResumedPanic => { 134usize }
LangItem::PanicGenFnNonePanic => { 135usize }
LangItem::PanicNullPointerDereference => { 136usize }
LangItem::PanicNullReferenceConstructed => { 137usize }
LangItem::PanicInvalidEnumConstruction => { 138usize }
LangItem::PanicCoroutineResumedDrop => { 139usize }
LangItem::PanicAsyncFnResumedDrop => { 140usize }
LangItem::PanicAsyncGenFnResumedDrop => { 141usize }
LangItem::PanicGenFnNoneDrop => { 142usize }
LangItem::BeginPanic => { 143usize }
LangItem::FormatArgument => { 144usize }
LangItem::FormatArguments => { 145usize }
LangItem::DropGlue => { 146usize }
LangItem::AllocLayout => { 147usize }
LangItem::Start => { 148usize }
LangItem::EhPersonality => { 149usize }
LangItem::CompilerMove => { 150usize }
LangItem::CompilerCopy => { 151usize }
LangItem::OwnedBox => { 152usize }
LangItem::GlobalAlloc => { 153usize }
LangItem::PhantomData => { 154usize }
LangItem::ManuallyDrop => { 155usize }
LangItem::MaybeDangling => { 156usize }
LangItem::BikeshedGuaranteedNoDrop => { 157usize }
LangItem::MaybeUninit => { 158usize }
LangItem::Termination => { 159usize }
LangItem::Try => { 160usize }
LangItem::Tuple => { 161usize }
LangItem::SliceLen => { 162usize }
LangItem::TryTraitFromResidual => { 163usize }
LangItem::TryTraitFromOutput => { 164usize }
LangItem::TryTraitBranch => { 165usize }
LangItem::TryTraitFromYeet => { 166usize }
LangItem::ResidualIntoTryType => { 167usize }
LangItem::CoercePointeeValidated => { 168usize }
LangItem::ConstParamTy => { 169usize }
LangItem::Poll => { 170usize }
LangItem::PollReady => { 171usize }
LangItem::PollPending => { 172usize }
LangItem::AsyncGenReady => { 173usize }
LangItem::AsyncGenPending => { 174usize }
LangItem::AsyncGenFinished => { 175usize }
LangItem::ResumeTy => { 176usize }
LangItem::GetContext => { 177usize }
LangItem::Context => { 178usize }
LangItem::FuturePoll => { 179usize }
LangItem::AsyncIteratorPollNext => { 180usize }
LangItem::IntoAsyncIterIntoIter => { 181usize }
LangItem::Option => { 182usize }
LangItem::OptionSome => { 183usize }
LangItem::OptionNone => { 184usize }
LangItem::ResultOk => { 185usize }
LangItem::ResultErr => { 186usize }
LangItem::ControlFlowContinue => { 187usize }
LangItem::ControlFlowBreak => { 188usize }
LangItem::IntoFutureIntoFuture => { 189usize }
LangItem::IntoIterIntoIter => { 190usize }
LangItem::IteratorNext => { 191usize }
LangItem::PinNewUnchecked => { 192usize }
LangItem::RangeFrom => { 193usize }
LangItem::RangeFull => { 194usize }
LangItem::RangeInclusiveStruct => { 195usize }
LangItem::RangeInclusiveNew => { 196usize }
LangItem::Range => { 197usize }
LangItem::RangeToInclusive => { 198usize }
LangItem::RangeTo => { 199usize }
LangItem::RangeMax => { 200usize }
LangItem::RangeMin => { 201usize }
LangItem::RangeSub => { 202usize }
LangItem::RangeFromCopy => { 203usize }
LangItem::RangeCopy => { 204usize }
LangItem::RangeInclusiveCopy => { 205usize }
LangItem::RangeToInclusiveCopy => { 206usize }
LangItem::String => { 207usize }
LangItem::CStr => { 208usize }
LangItem::ContractBuildCheckEnsures => { 209usize }
LangItem::ContractCheckRequires => { 210usize }
LangItem::DefaultTrait4 => { 211usize }
LangItem::DefaultTrait3 => { 212usize }
LangItem::DefaultTrait2 => { 213usize }
LangItem::DefaultTrait1 => { 214usize }
LangItem::ContractCheckEnsures => { 215usize }
LangItem::Reborrow => { 216usize }
LangItem::CoerceShared => { 217usize }
LangItem::FieldRepresentingType => { 218usize }
LangItem::Field => { 219usize }
LangItem::FieldBase => { 220usize }
LangItem::FieldType => { 221usize }
LangItem::FieldOffset => { 222usize }
LangItem::From => { 223usize }
LangItem::FromFn => { 224usize }
LangItem::FnPtr => { 225usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};
const _: () =
{
impl<__D: ::rustc_span::BlobDecoder> ::rustc_serialize::Decodable<__D>
for LangItem {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { LangItem::Sized }
1usize => { LangItem::MetaSized }
2usize => { LangItem::PointeeSized }
3usize => { LangItem::Unsize }
4usize => { LangItem::AlignOf }
5usize => { LangItem::SizeOf }
6usize => { LangItem::OffsetOf }
7usize => { LangItem::StructuralPeq }
8usize => { LangItem::Copy }
9usize => { LangItem::Clone }
10usize => { LangItem::CloneFn }
11usize => { LangItem::UseCloned }
12usize => { LangItem::TrivialClone }
13usize => { LangItem::Sync }
14usize => { LangItem::DiscriminantKind }
15usize => { LangItem::Discriminant }
16usize => { LangItem::PointeeTrait }
17usize => { LangItem::Metadata }
18usize => { LangItem::DynMetadata }
19usize => { LangItem::NonNull }
20usize => { LangItem::Freeze }
21usize => { LangItem::UnsafeUnpin }
22usize => { LangItem::FnPtrTrait }
23usize => { LangItem::FnPtrAsPtr }
24usize => { LangItem::FnPtrFromPtr }
25usize => { LangItem::Code }
26usize => { LangItem::Drop }
27usize => { LangItem::Destruct }
28usize => { LangItem::AsyncDrop }
29usize => { LangItem::AsyncDropInPlace }
30usize => { LangItem::CoerceUnsized }
31usize => { LangItem::DispatchFromDyn }
32usize => { LangItem::TryAsDyn }
33usize => { LangItem::TransmuteOpts }
34usize => { LangItem::TransmuteTrait }
35usize => { LangItem::Add }
36usize => { LangItem::Sub }
37usize => { LangItem::Mul }
38usize => { LangItem::Div }
39usize => { LangItem::Rem }
40usize => { LangItem::Neg }
41usize => { LangItem::Not }
42usize => { LangItem::BitXor }
43usize => { LangItem::BitAnd }
44usize => { LangItem::BitOr }
45usize => { LangItem::Shl }
46usize => { LangItem::Shr }
47usize => { LangItem::AddAssign }
48usize => { LangItem::SubAssign }
49usize => { LangItem::MulAssign }
50usize => { LangItem::DivAssign }
51usize => { LangItem::RemAssign }
52usize => { LangItem::BitXorAssign }
53usize => { LangItem::BitAndAssign }
54usize => { LangItem::BitOrAssign }
55usize => { LangItem::ShlAssign }
56usize => { LangItem::ShrAssign }
57usize => { LangItem::Index }
58usize => { LangItem::IndexMut }
59usize => { LangItem::UnsafeCell }
60usize => { LangItem::CovariantUnsafeCell }
61usize => { LangItem::UnsafePinned }
62usize => { LangItem::VaArgSafe }
63usize => { LangItem::VaList }
64usize => { LangItem::Complex }
65usize => { LangItem::PpcF128 }
66usize => { LangItem::Deref }
67usize => { LangItem::DerefMut }
68usize => { LangItem::DerefPure }
69usize => { LangItem::DerefTarget }
70usize => { LangItem::Receiver }
71usize => { LangItem::ReceiverTarget }
72usize => { LangItem::LegacyReceiver }
73usize => { LangItem::Fn }
74usize => { LangItem::FnMut }
75usize => { LangItem::FnOnce }
76usize => { LangItem::FnStatic }
77usize => { LangItem::AsyncFn }
78usize => { LangItem::AsyncFnMut }
79usize => { LangItem::AsyncFnOnce }
80usize => { LangItem::AsyncFnOnceOutput }
81usize => { LangItem::CallOnceFuture }
82usize => { LangItem::CallRefFuture }
83usize => { LangItem::AsyncFnKindHelper }
84usize => { LangItem::AsyncFnKindUpvars }
85usize => { LangItem::FnOnceOutput }
86usize => { LangItem::Iterator }
87usize => { LangItem::FusedIterator }
88usize => { LangItem::Future }
89usize => { LangItem::FutureOutput }
90usize => { LangItem::AsyncIterator }
91usize => { LangItem::CoroutineState }
92usize => { LangItem::Coroutine }
93usize => { LangItem::CoroutineReturn }
94usize => { LangItem::CoroutineYield }
95usize => { LangItem::CoroutineResume }
96usize => { LangItem::Unpin }
97usize => { LangItem::Pin }
98usize => { LangItem::OrderingEnum }
99usize => { LangItem::PartialEq }
100usize => { LangItem::PartialOrd }
101usize => { LangItem::CVoid }
102usize => { LangItem::F16B }
103usize => { LangItem::Type }
104usize => { LangItem::TypeGeneric }
105usize => { LangItem::TypeId }
106usize => { LangItem::Panic }
107usize => { LangItem::PanicNounwind }
108usize => { LangItem::PanicFmt }
109usize => { LangItem::PanicDisplay }
110usize => { LangItem::ConstPanicFmt }
111usize => { LangItem::PanicBoundsCheck }
112usize => { LangItem::PanicMisalignedPointerDereference }
113usize => { LangItem::PanicInfo }
114usize => { LangItem::PanicLocation }
115usize => { LangItem::PanicImpl }
116usize => { LangItem::PanicCannotUnwind }
117usize => { LangItem::PanicInCleanup }
118usize => { LangItem::PanicAddOverflow }
119usize => { LangItem::PanicSubOverflow }
120usize => { LangItem::PanicMulOverflow }
121usize => { LangItem::PanicDivOverflow }
122usize => { LangItem::PanicRemOverflow }
123usize => { LangItem::PanicNegOverflow }
124usize => { LangItem::PanicShrOverflow }
125usize => { LangItem::PanicShlOverflow }
126usize => { LangItem::PanicDivZero }
127usize => { LangItem::PanicRemZero }
128usize => { LangItem::PanicCoroutineResumed }
129usize => { LangItem::PanicAsyncFnResumed }
130usize => { LangItem::PanicAsyncGenFnResumed }
131usize => { LangItem::PanicGenFnNone }
132usize => { LangItem::PanicCoroutineResumedPanic }
133usize => { LangItem::PanicAsyncFnResumedPanic }
134usize => { LangItem::PanicAsyncGenFnResumedPanic }
135usize => { LangItem::PanicGenFnNonePanic }
136usize => { LangItem::PanicNullPointerDereference }
137usize => { LangItem::PanicNullReferenceConstructed }
138usize => { LangItem::PanicInvalidEnumConstruction }
139usize => { LangItem::PanicCoroutineResumedDrop }
140usize => { LangItem::PanicAsyncFnResumedDrop }
141usize => { LangItem::PanicAsyncGenFnResumedDrop }
142usize => { LangItem::PanicGenFnNoneDrop }
143usize => { LangItem::BeginPanic }
144usize => { LangItem::FormatArgument }
145usize => { LangItem::FormatArguments }
146usize => { LangItem::DropGlue }
147usize => { LangItem::AllocLayout }
148usize => { LangItem::Start }
149usize => { LangItem::EhPersonality }
150usize => { LangItem::CompilerMove }
151usize => { LangItem::CompilerCopy }
152usize => { LangItem::OwnedBox }
153usize => { LangItem::GlobalAlloc }
154usize => { LangItem::PhantomData }
155usize => { LangItem::ManuallyDrop }
156usize => { LangItem::MaybeDangling }
157usize => { LangItem::BikeshedGuaranteedNoDrop }
158usize => { LangItem::MaybeUninit }
159usize => { LangItem::Termination }
160usize => { LangItem::Try }
161usize => { LangItem::Tuple }
162usize => { LangItem::SliceLen }
163usize => { LangItem::TryTraitFromResidual }
164usize => { LangItem::TryTraitFromOutput }
165usize => { LangItem::TryTraitBranch }
166usize => { LangItem::TryTraitFromYeet }
167usize => { LangItem::ResidualIntoTryType }
168usize => { LangItem::CoercePointeeValidated }
169usize => { LangItem::ConstParamTy }
170usize => { LangItem::Poll }
171usize => { LangItem::PollReady }
172usize => { LangItem::PollPending }
173usize => { LangItem::AsyncGenReady }
174usize => { LangItem::AsyncGenPending }
175usize => { LangItem::AsyncGenFinished }
176usize => { LangItem::ResumeTy }
177usize => { LangItem::GetContext }
178usize => { LangItem::Context }
179usize => { LangItem::FuturePoll }
180usize => { LangItem::AsyncIteratorPollNext }
181usize => { LangItem::IntoAsyncIterIntoIter }
182usize => { LangItem::Option }
183usize => { LangItem::OptionSome }
184usize => { LangItem::OptionNone }
185usize => { LangItem::ResultOk }
186usize => { LangItem::ResultErr }
187usize => { LangItem::ControlFlowContinue }
188usize => { LangItem::ControlFlowBreak }
189usize => { LangItem::IntoFutureIntoFuture }
190usize => { LangItem::IntoIterIntoIter }
191usize => { LangItem::IteratorNext }
192usize => { LangItem::PinNewUnchecked }
193usize => { LangItem::RangeFrom }
194usize => { LangItem::RangeFull }
195usize => { LangItem::RangeInclusiveStruct }
196usize => { LangItem::RangeInclusiveNew }
197usize => { LangItem::Range }
198usize => { LangItem::RangeToInclusive }
199usize => { LangItem::RangeTo }
200usize => { LangItem::RangeMax }
201usize => { LangItem::RangeMin }
202usize => { LangItem::RangeSub }
203usize => { LangItem::RangeFromCopy }
204usize => { LangItem::RangeCopy }
205usize => { LangItem::RangeInclusiveCopy }
206usize => { LangItem::RangeToInclusiveCopy }
207usize => { LangItem::String }
208usize => { LangItem::CStr }
209usize => { LangItem::ContractBuildCheckEnsures }
210usize => { LangItem::ContractCheckRequires }
211usize => { LangItem::DefaultTrait4 }
212usize => { LangItem::DefaultTrait3 }
213usize => { LangItem::DefaultTrait2 }
214usize => { LangItem::DefaultTrait1 }
215usize => { LangItem::ContractCheckEnsures }
216usize => { LangItem::Reborrow }
217usize => { LangItem::CoerceShared }
218usize => { LangItem::FieldRepresentingType }
219usize => { LangItem::Field }
220usize => { LangItem::FieldBase }
221usize => { LangItem::FieldType }
222usize => { LangItem::FieldOffset }
223usize => { LangItem::From }
224usize => { LangItem::FromFn }
225usize => { LangItem::FnPtr }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `LangItem`, expected 0..226, actual {0}",
n));
}
}
}
}
};
const _: () =
{
#[allow(unused)]
impl PrintAttribute for LangItem {
fn should_render(&self) -> bool { true }
fn print_attribute(&self,
__p: &mut rustc_ast_pretty::pp::Printer) {
match self {
Self::Sized => { __p.word("Sized") }
Self::MetaSized => { __p.word("MetaSized") }
Self::PointeeSized => { __p.word("PointeeSized") }
Self::Unsize => { __p.word("Unsize") }
Self::AlignOf => { __p.word("AlignOf") }
Self::SizeOf => { __p.word("SizeOf") }
Self::OffsetOf => { __p.word("OffsetOf") }
Self::StructuralPeq => { __p.word("StructuralPeq") }
Self::Copy => { __p.word("Copy") }
Self::Clone => { __p.word("Clone") }
Self::CloneFn => { __p.word("CloneFn") }
Self::UseCloned => { __p.word("UseCloned") }
Self::TrivialClone => { __p.word("TrivialClone") }
Self::Sync => { __p.word("Sync") }
Self::DiscriminantKind => { __p.word("DiscriminantKind") }
Self::Discriminant => { __p.word("Discriminant") }
Self::PointeeTrait => { __p.word("PointeeTrait") }
Self::Metadata => { __p.word("Metadata") }
Self::DynMetadata => { __p.word("DynMetadata") }
Self::NonNull => { __p.word("NonNull") }
Self::Freeze => { __p.word("Freeze") }
Self::UnsafeUnpin => { __p.word("UnsafeUnpin") }
Self::FnPtrTrait => { __p.word("FnPtrTrait") }
Self::FnPtrAsPtr => { __p.word("FnPtrAsPtr") }
Self::FnPtrFromPtr => { __p.word("FnPtrFromPtr") }
Self::Code => { __p.word("Code") }
Self::Drop => { __p.word("Drop") }
Self::Destruct => { __p.word("Destruct") }
Self::AsyncDrop => { __p.word("AsyncDrop") }
Self::AsyncDropInPlace => { __p.word("AsyncDropInPlace") }
Self::CoerceUnsized => { __p.word("CoerceUnsized") }
Self::DispatchFromDyn => { __p.word("DispatchFromDyn") }
Self::TryAsDyn => { __p.word("TryAsDyn") }
Self::TransmuteOpts => { __p.word("TransmuteOpts") }
Self::TransmuteTrait => { __p.word("TransmuteTrait") }
Self::Add => { __p.word("Add") }
Self::Sub => { __p.word("Sub") }
Self::Mul => { __p.word("Mul") }
Self::Div => { __p.word("Div") }
Self::Rem => { __p.word("Rem") }
Self::Neg => { __p.word("Neg") }
Self::Not => { __p.word("Not") }
Self::BitXor => { __p.word("BitXor") }
Self::BitAnd => { __p.word("BitAnd") }
Self::BitOr => { __p.word("BitOr") }
Self::Shl => { __p.word("Shl") }
Self::Shr => { __p.word("Shr") }
Self::AddAssign => { __p.word("AddAssign") }
Self::SubAssign => { __p.word("SubAssign") }
Self::MulAssign => { __p.word("MulAssign") }
Self::DivAssign => { __p.word("DivAssign") }
Self::RemAssign => { __p.word("RemAssign") }
Self::BitXorAssign => { __p.word("BitXorAssign") }
Self::BitAndAssign => { __p.word("BitAndAssign") }
Self::BitOrAssign => { __p.word("BitOrAssign") }
Self::ShlAssign => { __p.word("ShlAssign") }
Self::ShrAssign => { __p.word("ShrAssign") }
Self::Index => { __p.word("Index") }
Self::IndexMut => { __p.word("IndexMut") }
Self::UnsafeCell => { __p.word("UnsafeCell") }
Self::CovariantUnsafeCell => {
__p.word("CovariantUnsafeCell")
}
Self::UnsafePinned => { __p.word("UnsafePinned") }
Self::VaArgSafe => { __p.word("VaArgSafe") }
Self::VaList => { __p.word("VaList") }
Self::Complex => { __p.word("Complex") }
Self::PpcF128 => { __p.word("PpcF128") }
Self::Deref => { __p.word("Deref") }
Self::DerefMut => { __p.word("DerefMut") }
Self::DerefPure => { __p.word("DerefPure") }
Self::DerefTarget => { __p.word("DerefTarget") }
Self::Receiver => { __p.word("Receiver") }
Self::ReceiverTarget => { __p.word("ReceiverTarget") }
Self::LegacyReceiver => { __p.word("LegacyReceiver") }
Self::Fn => { __p.word("Fn") }
Self::FnMut => { __p.word("FnMut") }
Self::FnOnce => { __p.word("FnOnce") }
Self::FnStatic => { __p.word("FnStatic") }
Self::AsyncFn => { __p.word("AsyncFn") }
Self::AsyncFnMut => { __p.word("AsyncFnMut") }
Self::AsyncFnOnce => { __p.word("AsyncFnOnce") }
Self::AsyncFnOnceOutput => { __p.word("AsyncFnOnceOutput") }
Self::CallOnceFuture => { __p.word("CallOnceFuture") }
Self::CallRefFuture => { __p.word("CallRefFuture") }
Self::AsyncFnKindHelper => { __p.word("AsyncFnKindHelper") }
Self::AsyncFnKindUpvars => { __p.word("AsyncFnKindUpvars") }
Self::FnOnceOutput => { __p.word("FnOnceOutput") }
Self::Iterator => { __p.word("Iterator") }
Self::FusedIterator => { __p.word("FusedIterator") }
Self::Future => { __p.word("Future") }
Self::FutureOutput => { __p.word("FutureOutput") }
Self::AsyncIterator => { __p.word("AsyncIterator") }
Self::CoroutineState => { __p.word("CoroutineState") }
Self::Coroutine => { __p.word("Coroutine") }
Self::CoroutineReturn => { __p.word("CoroutineReturn") }
Self::CoroutineYield => { __p.word("CoroutineYield") }
Self::CoroutineResume => { __p.word("CoroutineResume") }
Self::Unpin => { __p.word("Unpin") }
Self::Pin => { __p.word("Pin") }
Self::OrderingEnum => { __p.word("OrderingEnum") }
Self::PartialEq => { __p.word("PartialEq") }
Self::PartialOrd => { __p.word("PartialOrd") }
Self::CVoid => { __p.word("CVoid") }
Self::F16B => { __p.word("F16B") }
Self::Type => { __p.word("Type") }
Self::TypeGeneric => { __p.word("TypeGeneric") }
Self::TypeId => { __p.word("TypeId") }
Self::Panic => { __p.word("Panic") }
Self::PanicNounwind => { __p.word("PanicNounwind") }
Self::PanicFmt => { __p.word("PanicFmt") }
Self::PanicDisplay => { __p.word("PanicDisplay") }
Self::ConstPanicFmt => { __p.word("ConstPanicFmt") }
Self::PanicBoundsCheck => { __p.word("PanicBoundsCheck") }
Self::PanicMisalignedPointerDereference => {
__p.word("PanicMisalignedPointerDereference")
}
Self::PanicInfo => { __p.word("PanicInfo") }
Self::PanicLocation => { __p.word("PanicLocation") }
Self::PanicImpl => { __p.word("PanicImpl") }
Self::PanicCannotUnwind => { __p.word("PanicCannotUnwind") }
Self::PanicInCleanup => { __p.word("PanicInCleanup") }
Self::PanicAddOverflow => { __p.word("PanicAddOverflow") }
Self::PanicSubOverflow => { __p.word("PanicSubOverflow") }
Self::PanicMulOverflow => { __p.word("PanicMulOverflow") }
Self::PanicDivOverflow => { __p.word("PanicDivOverflow") }
Self::PanicRemOverflow => { __p.word("PanicRemOverflow") }
Self::PanicNegOverflow => { __p.word("PanicNegOverflow") }
Self::PanicShrOverflow => { __p.word("PanicShrOverflow") }
Self::PanicShlOverflow => { __p.word("PanicShlOverflow") }
Self::PanicDivZero => { __p.word("PanicDivZero") }
Self::PanicRemZero => { __p.word("PanicRemZero") }
Self::PanicCoroutineResumed => {
__p.word("PanicCoroutineResumed")
}
Self::PanicAsyncFnResumed => {
__p.word("PanicAsyncFnResumed")
}
Self::PanicAsyncGenFnResumed => {
__p.word("PanicAsyncGenFnResumed")
}
Self::PanicGenFnNone => { __p.word("PanicGenFnNone") }
Self::PanicCoroutineResumedPanic => {
__p.word("PanicCoroutineResumedPanic")
}
Self::PanicAsyncFnResumedPanic => {
__p.word("PanicAsyncFnResumedPanic")
}
Self::PanicAsyncGenFnResumedPanic => {
__p.word("PanicAsyncGenFnResumedPanic")
}
Self::PanicGenFnNonePanic => {
__p.word("PanicGenFnNonePanic")
}
Self::PanicNullPointerDereference => {
__p.word("PanicNullPointerDereference")
}
Self::PanicNullReferenceConstructed => {
__p.word("PanicNullReferenceConstructed")
}
Self::PanicInvalidEnumConstruction => {
__p.word("PanicInvalidEnumConstruction")
}
Self::PanicCoroutineResumedDrop => {
__p.word("PanicCoroutineResumedDrop")
}
Self::PanicAsyncFnResumedDrop => {
__p.word("PanicAsyncFnResumedDrop")
}
Self::PanicAsyncGenFnResumedDrop => {
__p.word("PanicAsyncGenFnResumedDrop")
}
Self::PanicGenFnNoneDrop => {
__p.word("PanicGenFnNoneDrop")
}
Self::BeginPanic => { __p.word("BeginPanic") }
Self::FormatArgument => { __p.word("FormatArgument") }
Self::FormatArguments => { __p.word("FormatArguments") }
Self::DropGlue => { __p.word("DropGlue") }
Self::AllocLayout => { __p.word("AllocLayout") }
Self::Start => { __p.word("Start") }
Self::EhPersonality => { __p.word("EhPersonality") }
Self::CompilerMove => { __p.word("CompilerMove") }
Self::CompilerCopy => { __p.word("CompilerCopy") }
Self::OwnedBox => { __p.word("OwnedBox") }
Self::GlobalAlloc => { __p.word("GlobalAlloc") }
Self::PhantomData => { __p.word("PhantomData") }
Self::ManuallyDrop => { __p.word("ManuallyDrop") }
Self::MaybeDangling => { __p.word("MaybeDangling") }
Self::BikeshedGuaranteedNoDrop => {
__p.word("BikeshedGuaranteedNoDrop")
}
Self::MaybeUninit => { __p.word("MaybeUninit") }
Self::Termination => { __p.word("Termination") }
Self::Try => { __p.word("Try") }
Self::Tuple => { __p.word("Tuple") }
Self::SliceLen => { __p.word("SliceLen") }
Self::TryTraitFromResidual => {
__p.word("TryTraitFromResidual")
}
Self::TryTraitFromOutput => {
__p.word("TryTraitFromOutput")
}
Self::TryTraitBranch => { __p.word("TryTraitBranch") }
Self::TryTraitFromYeet => { __p.word("TryTraitFromYeet") }
Self::ResidualIntoTryType => {
__p.word("ResidualIntoTryType")
}
Self::CoercePointeeValidated => {
__p.word("CoercePointeeValidated")
}
Self::ConstParamTy => { __p.word("ConstParamTy") }
Self::Poll => { __p.word("Poll") }
Self::PollReady => { __p.word("PollReady") }
Self::PollPending => { __p.word("PollPending") }
Self::AsyncGenReady => { __p.word("AsyncGenReady") }
Self::AsyncGenPending => { __p.word("AsyncGenPending") }
Self::AsyncGenFinished => { __p.word("AsyncGenFinished") }
Self::ResumeTy => { __p.word("ResumeTy") }
Self::GetContext => { __p.word("GetContext") }
Self::Context => { __p.word("Context") }
Self::FuturePoll => { __p.word("FuturePoll") }
Self::AsyncIteratorPollNext => {
__p.word("AsyncIteratorPollNext")
}
Self::IntoAsyncIterIntoIter => {
__p.word("IntoAsyncIterIntoIter")
}
Self::Option => { __p.word("Option") }
Self::OptionSome => { __p.word("OptionSome") }
Self::OptionNone => { __p.word("OptionNone") }
Self::ResultOk => { __p.word("ResultOk") }
Self::ResultErr => { __p.word("ResultErr") }
Self::ControlFlowContinue => {
__p.word("ControlFlowContinue")
}
Self::ControlFlowBreak => { __p.word("ControlFlowBreak") }
Self::IntoFutureIntoFuture => {
__p.word("IntoFutureIntoFuture")
}
Self::IntoIterIntoIter => { __p.word("IntoIterIntoIter") }
Self::IteratorNext => { __p.word("IteratorNext") }
Self::PinNewUnchecked => { __p.word("PinNewUnchecked") }
Self::RangeFrom => { __p.word("RangeFrom") }
Self::RangeFull => { __p.word("RangeFull") }
Self::RangeInclusiveStruct => {
__p.word("RangeInclusiveStruct")
}
Self::RangeInclusiveNew => { __p.word("RangeInclusiveNew") }
Self::Range => { __p.word("Range") }
Self::RangeToInclusive => { __p.word("RangeToInclusive") }
Self::RangeTo => { __p.word("RangeTo") }
Self::RangeMax => { __p.word("RangeMax") }
Self::RangeMin => { __p.word("RangeMin") }
Self::RangeSub => { __p.word("RangeSub") }
Self::RangeFromCopy => { __p.word("RangeFromCopy") }
Self::RangeCopy => { __p.word("RangeCopy") }
Self::RangeInclusiveCopy => {
__p.word("RangeInclusiveCopy")
}
Self::RangeToInclusiveCopy => {
__p.word("RangeToInclusiveCopy")
}
Self::String => { __p.word("String") }
Self::CStr => { __p.word("CStr") }
Self::ContractBuildCheckEnsures => {
__p.word("ContractBuildCheckEnsures")
}
Self::ContractCheckRequires => {
__p.word("ContractCheckRequires")
}
Self::DefaultTrait4 => { __p.word("DefaultTrait4") }
Self::DefaultTrait3 => { __p.word("DefaultTrait3") }
Self::DefaultTrait2 => { __p.word("DefaultTrait2") }
Self::DefaultTrait1 => { __p.word("DefaultTrait1") }
Self::ContractCheckEnsures => {
__p.word("ContractCheckEnsures")
}
Self::Reborrow => { __p.word("Reborrow") }
Self::CoerceShared => { __p.word("CoerceShared") }
Self::FieldRepresentingType => {
__p.word("FieldRepresentingType")
}
Self::Field => { __p.word("Field") }
Self::FieldBase => { __p.word("FieldBase") }
Self::FieldType => { __p.word("FieldType") }
Self::FieldOffset => { __p.word("FieldOffset") }
Self::From => { __p.word("From") }
Self::FromFn => { __p.word("FromFn") }
Self::FnPtr => { __p.word("FnPtr") }
}
}
}
};
impl LangItem {
fn from_u32(u: u32) -> Option<LangItem> {
if u == LangItem::Sized as u32 { return Some(LangItem::Sized) }
if u == LangItem::MetaSized as u32 {
return Some(LangItem::MetaSized)
}
if u == LangItem::PointeeSized as u32 {
return Some(LangItem::PointeeSized)
}
if u == LangItem::Unsize as u32 { return Some(LangItem::Unsize) }
if u == LangItem::AlignOf as u32 { return Some(LangItem::AlignOf) }
if u == LangItem::SizeOf as u32 { return Some(LangItem::SizeOf) }
if u == LangItem::OffsetOf as u32 { return Some(LangItem::OffsetOf) }
if u == LangItem::StructuralPeq as u32 {
return Some(LangItem::StructuralPeq)
}
if u == LangItem::Copy as u32 { return Some(LangItem::Copy) }
if u == LangItem::Clone as u32 { return Some(LangItem::Clone) }
if u == LangItem::CloneFn as u32 { return Some(LangItem::CloneFn) }
if u == LangItem::UseCloned as u32 {
return Some(LangItem::UseCloned)
}
if u == LangItem::TrivialClone as u32 {
return Some(LangItem::TrivialClone)
}
if u == LangItem::Sync as u32 { return Some(LangItem::Sync) }
if u == LangItem::DiscriminantKind as u32 {
return Some(LangItem::DiscriminantKind)
}
if u == LangItem::Discriminant as u32 {
return Some(LangItem::Discriminant)
}
if u == LangItem::PointeeTrait as u32 {
return Some(LangItem::PointeeTrait)
}
if u == LangItem::Metadata as u32 { return Some(LangItem::Metadata) }
if u == LangItem::DynMetadata as u32 {
return Some(LangItem::DynMetadata)
}
if u == LangItem::NonNull as u32 { return Some(LangItem::NonNull) }
if u == LangItem::Freeze as u32 { return Some(LangItem::Freeze) }
if u == LangItem::UnsafeUnpin as u32 {
return Some(LangItem::UnsafeUnpin)
}
if u == LangItem::FnPtrTrait as u32 {
return Some(LangItem::FnPtrTrait)
}
if u == LangItem::FnPtrAsPtr as u32 {
return Some(LangItem::FnPtrAsPtr)
}
if u == LangItem::FnPtrFromPtr as u32 {
return Some(LangItem::FnPtrFromPtr)
}
if u == LangItem::Code as u32 { return Some(LangItem::Code) }
if u == LangItem::Drop as u32 { return Some(LangItem::Drop) }
if u == LangItem::Destruct as u32 { return Some(LangItem::Destruct) }
if u == LangItem::AsyncDrop as u32 {
return Some(LangItem::AsyncDrop)
}
if u == LangItem::AsyncDropInPlace as u32 {
return Some(LangItem::AsyncDropInPlace)
}
if u == LangItem::CoerceUnsized as u32 {
return Some(LangItem::CoerceUnsized)
}
if u == LangItem::DispatchFromDyn as u32 {
return Some(LangItem::DispatchFromDyn)
}
if u == LangItem::TryAsDyn as u32 { return Some(LangItem::TryAsDyn) }
if u == LangItem::TransmuteOpts as u32 {
return Some(LangItem::TransmuteOpts)
}
if u == LangItem::TransmuteTrait as u32 {
return Some(LangItem::TransmuteTrait)
}
if u == LangItem::Add as u32 { return Some(LangItem::Add) }
if u == LangItem::Sub as u32 { return Some(LangItem::Sub) }
if u == LangItem::Mul as u32 { return Some(LangItem::Mul) }
if u == LangItem::Div as u32 { return Some(LangItem::Div) }
if u == LangItem::Rem as u32 { return Some(LangItem::Rem) }
if u == LangItem::Neg as u32 { return Some(LangItem::Neg) }
if u == LangItem::Not as u32 { return Some(LangItem::Not) }
if u == LangItem::BitXor as u32 { return Some(LangItem::BitXor) }
if u == LangItem::BitAnd as u32 { return Some(LangItem::BitAnd) }
if u == LangItem::BitOr as u32 { return Some(LangItem::BitOr) }
if u == LangItem::Shl as u32 { return Some(LangItem::Shl) }
if u == LangItem::Shr as u32 { return Some(LangItem::Shr) }
if u == LangItem::AddAssign as u32 {
return Some(LangItem::AddAssign)
}
if u == LangItem::SubAssign as u32 {
return Some(LangItem::SubAssign)
}
if u == LangItem::MulAssign as u32 {
return Some(LangItem::MulAssign)
}
if u == LangItem::DivAssign as u32 {
return Some(LangItem::DivAssign)
}
if u == LangItem::RemAssign as u32 {
return Some(LangItem::RemAssign)
}
if u == LangItem::BitXorAssign as u32 {
return Some(LangItem::BitXorAssign)
}
if u == LangItem::BitAndAssign as u32 {
return Some(LangItem::BitAndAssign)
}
if u == LangItem::BitOrAssign as u32 {
return Some(LangItem::BitOrAssign)
}
if u == LangItem::ShlAssign as u32 {
return Some(LangItem::ShlAssign)
}
if u == LangItem::ShrAssign as u32 {
return Some(LangItem::ShrAssign)
}
if u == LangItem::Index as u32 { return Some(LangItem::Index) }
if u == LangItem::IndexMut as u32 { return Some(LangItem::IndexMut) }
if u == LangItem::UnsafeCell as u32 {
return Some(LangItem::UnsafeCell)
}
if u == LangItem::CovariantUnsafeCell as u32 {
return Some(LangItem::CovariantUnsafeCell)
}
if u == LangItem::UnsafePinned as u32 {
return Some(LangItem::UnsafePinned)
}
if u == LangItem::VaArgSafe as u32 {
return Some(LangItem::VaArgSafe)
}
if u == LangItem::VaList as u32 { return Some(LangItem::VaList) }
if u == LangItem::Complex as u32 { return Some(LangItem::Complex) }
if u == LangItem::PpcF128 as u32 { return Some(LangItem::PpcF128) }
if u == LangItem::Deref as u32 { return Some(LangItem::Deref) }
if u == LangItem::DerefMut as u32 { return Some(LangItem::DerefMut) }
if u == LangItem::DerefPure as u32 {
return Some(LangItem::DerefPure)
}
if u == LangItem::DerefTarget as u32 {
return Some(LangItem::DerefTarget)
}
if u == LangItem::Receiver as u32 { return Some(LangItem::Receiver) }
if u == LangItem::ReceiverTarget as u32 {
return Some(LangItem::ReceiverTarget)
}
if u == LangItem::LegacyReceiver as u32 {
return Some(LangItem::LegacyReceiver)
}
if u == LangItem::Fn as u32 { return Some(LangItem::Fn) }
if u == LangItem::FnMut as u32 { return Some(LangItem::FnMut) }
if u == LangItem::FnOnce as u32 { return Some(LangItem::FnOnce) }
if u == LangItem::FnStatic as u32 { return Some(LangItem::FnStatic) }
if u == LangItem::AsyncFn as u32 { return Some(LangItem::AsyncFn) }
if u == LangItem::AsyncFnMut as u32 {
return Some(LangItem::AsyncFnMut)
}
if u == LangItem::AsyncFnOnce as u32 {
return Some(LangItem::AsyncFnOnce)
}
if u == LangItem::AsyncFnOnceOutput as u32 {
return Some(LangItem::AsyncFnOnceOutput)
}
if u == LangItem::CallOnceFuture as u32 {
return Some(LangItem::CallOnceFuture)
}
if u == LangItem::CallRefFuture as u32 {
return Some(LangItem::CallRefFuture)
}
if u == LangItem::AsyncFnKindHelper as u32 {
return Some(LangItem::AsyncFnKindHelper)
}
if u == LangItem::AsyncFnKindUpvars as u32 {
return Some(LangItem::AsyncFnKindUpvars)
}
if u == LangItem::FnOnceOutput as u32 {
return Some(LangItem::FnOnceOutput)
}
if u == LangItem::Iterator as u32 { return Some(LangItem::Iterator) }
if u == LangItem::FusedIterator as u32 {
return Some(LangItem::FusedIterator)
}
if u == LangItem::Future as u32 { return Some(LangItem::Future) }
if u == LangItem::FutureOutput as u32 {
return Some(LangItem::FutureOutput)
}
if u == LangItem::AsyncIterator as u32 {
return Some(LangItem::AsyncIterator)
}
if u == LangItem::CoroutineState as u32 {
return Some(LangItem::CoroutineState)
}
if u == LangItem::Coroutine as u32 {
return Some(LangItem::Coroutine)
}
if u == LangItem::CoroutineReturn as u32 {
return Some(LangItem::CoroutineReturn)
}
if u == LangItem::CoroutineYield as u32 {
return Some(LangItem::CoroutineYield)
}
if u == LangItem::CoroutineResume as u32 {
return Some(LangItem::CoroutineResume)
}
if u == LangItem::Unpin as u32 { return Some(LangItem::Unpin) }
if u == LangItem::Pin as u32 { return Some(LangItem::Pin) }
if u == LangItem::OrderingEnum as u32 {
return Some(LangItem::OrderingEnum)
}
if u == LangItem::PartialEq as u32 {
return Some(LangItem::PartialEq)
}
if u == LangItem::PartialOrd as u32 {
return Some(LangItem::PartialOrd)
}
if u == LangItem::CVoid as u32 { return Some(LangItem::CVoid) }
if u == LangItem::F16B as u32 { return Some(LangItem::F16B) }
if u == LangItem::Type as u32 { return Some(LangItem::Type) }
if u == LangItem::TypeGeneric as u32 {
return Some(LangItem::TypeGeneric)
}
if u == LangItem::TypeId as u32 { return Some(LangItem::TypeId) }
if u == LangItem::Panic as u32 { return Some(LangItem::Panic) }
if u == LangItem::PanicNounwind as u32 {
return Some(LangItem::PanicNounwind)
}
if u == LangItem::PanicFmt as u32 { return Some(LangItem::PanicFmt) }
if u == LangItem::PanicDisplay as u32 {
return Some(LangItem::PanicDisplay)
}
if u == LangItem::ConstPanicFmt as u32 {
return Some(LangItem::ConstPanicFmt)
}
if u == LangItem::PanicBoundsCheck as u32 {
return Some(LangItem::PanicBoundsCheck)
}
if u == LangItem::PanicMisalignedPointerDereference as u32 {
return Some(LangItem::PanicMisalignedPointerDereference)
}
if u == LangItem::PanicInfo as u32 {
return Some(LangItem::PanicInfo)
}
if u == LangItem::PanicLocation as u32 {
return Some(LangItem::PanicLocation)
}
if u == LangItem::PanicImpl as u32 {
return Some(LangItem::PanicImpl)
}
if u == LangItem::PanicCannotUnwind as u32 {
return Some(LangItem::PanicCannotUnwind)
}
if u == LangItem::PanicInCleanup as u32 {
return Some(LangItem::PanicInCleanup)
}
if u == LangItem::PanicAddOverflow as u32 {
return Some(LangItem::PanicAddOverflow)
}
if u == LangItem::PanicSubOverflow as u32 {
return Some(LangItem::PanicSubOverflow)
}
if u == LangItem::PanicMulOverflow as u32 {
return Some(LangItem::PanicMulOverflow)
}
if u == LangItem::PanicDivOverflow as u32 {
return Some(LangItem::PanicDivOverflow)
}
if u == LangItem::PanicRemOverflow as u32 {
return Some(LangItem::PanicRemOverflow)
}
if u == LangItem::PanicNegOverflow as u32 {
return Some(LangItem::PanicNegOverflow)
}
if u == LangItem::PanicShrOverflow as u32 {
return Some(LangItem::PanicShrOverflow)
}
if u == LangItem::PanicShlOverflow as u32 {
return Some(LangItem::PanicShlOverflow)
}
if u == LangItem::PanicDivZero as u32 {
return Some(LangItem::PanicDivZero)
}
if u == LangItem::PanicRemZero as u32 {
return Some(LangItem::PanicRemZero)
}
if u == LangItem::PanicCoroutineResumed as u32 {
return Some(LangItem::PanicCoroutineResumed)
}
if u == LangItem::PanicAsyncFnResumed as u32 {
return Some(LangItem::PanicAsyncFnResumed)
}
if u == LangItem::PanicAsyncGenFnResumed as u32 {
return Some(LangItem::PanicAsyncGenFnResumed)
}
if u == LangItem::PanicGenFnNone as u32 {
return Some(LangItem::PanicGenFnNone)
}
if u == LangItem::PanicCoroutineResumedPanic as u32 {
return Some(LangItem::PanicCoroutineResumedPanic)
}
if u == LangItem::PanicAsyncFnResumedPanic as u32 {
return Some(LangItem::PanicAsyncFnResumedPanic)
}
if u == LangItem::PanicAsyncGenFnResumedPanic as u32 {
return Some(LangItem::PanicAsyncGenFnResumedPanic)
}
if u == LangItem::PanicGenFnNonePanic as u32 {
return Some(LangItem::PanicGenFnNonePanic)
}
if u == LangItem::PanicNullPointerDereference as u32 {
return Some(LangItem::PanicNullPointerDereference)
}
if u == LangItem::PanicNullReferenceConstructed as u32 {
return Some(LangItem::PanicNullReferenceConstructed)
}
if u == LangItem::PanicInvalidEnumConstruction as u32 {
return Some(LangItem::PanicInvalidEnumConstruction)
}
if u == LangItem::PanicCoroutineResumedDrop as u32 {
return Some(LangItem::PanicCoroutineResumedDrop)
}
if u == LangItem::PanicAsyncFnResumedDrop as u32 {
return Some(LangItem::PanicAsyncFnResumedDrop)
}
if u == LangItem::PanicAsyncGenFnResumedDrop as u32 {
return Some(LangItem::PanicAsyncGenFnResumedDrop)
}
if u == LangItem::PanicGenFnNoneDrop as u32 {
return Some(LangItem::PanicGenFnNoneDrop)
}
if u == LangItem::BeginPanic as u32 {
return Some(LangItem::BeginPanic)
}
if u == LangItem::FormatArgument as u32 {
return Some(LangItem::FormatArgument)
}
if u == LangItem::FormatArguments as u32 {
return Some(LangItem::FormatArguments)
}
if u == LangItem::DropGlue as u32 { return Some(LangItem::DropGlue) }
if u == LangItem::AllocLayout as u32 {
return Some(LangItem::AllocLayout)
}
if u == LangItem::Start as u32 { return Some(LangItem::Start) }
if u == LangItem::EhPersonality as u32 {
return Some(LangItem::EhPersonality)
}
if u == LangItem::CompilerMove as u32 {
return Some(LangItem::CompilerMove)
}
if u == LangItem::CompilerCopy as u32 {
return Some(LangItem::CompilerCopy)
}
if u == LangItem::OwnedBox as u32 { return Some(LangItem::OwnedBox) }
if u == LangItem::GlobalAlloc as u32 {
return Some(LangItem::GlobalAlloc)
}
if u == LangItem::PhantomData as u32 {
return Some(LangItem::PhantomData)
}
if u == LangItem::ManuallyDrop as u32 {
return Some(LangItem::ManuallyDrop)
}
if u == LangItem::MaybeDangling as u32 {
return Some(LangItem::MaybeDangling)
}
if u == LangItem::BikeshedGuaranteedNoDrop as u32 {
return Some(LangItem::BikeshedGuaranteedNoDrop)
}
if u == LangItem::MaybeUninit as u32 {
return Some(LangItem::MaybeUninit)
}
if u == LangItem::Termination as u32 {
return Some(LangItem::Termination)
}
if u == LangItem::Try as u32 { return Some(LangItem::Try) }
if u == LangItem::Tuple as u32 { return Some(LangItem::Tuple) }
if u == LangItem::SliceLen as u32 { return Some(LangItem::SliceLen) }
if u == LangItem::TryTraitFromResidual as u32 {
return Some(LangItem::TryTraitFromResidual)
}
if u == LangItem::TryTraitFromOutput as u32 {
return Some(LangItem::TryTraitFromOutput)
}
if u == LangItem::TryTraitBranch as u32 {
return Some(LangItem::TryTraitBranch)
}
if u == LangItem::TryTraitFromYeet as u32 {
return Some(LangItem::TryTraitFromYeet)
}
if u == LangItem::ResidualIntoTryType as u32 {
return Some(LangItem::ResidualIntoTryType)
}
if u == LangItem::CoercePointeeValidated as u32 {
return Some(LangItem::CoercePointeeValidated)
}
if u == LangItem::ConstParamTy as u32 {
return Some(LangItem::ConstParamTy)
}
if u == LangItem::Poll as u32 { return Some(LangItem::Poll) }
if u == LangItem::PollReady as u32 {
return Some(LangItem::PollReady)
}
if u == LangItem::PollPending as u32 {
return Some(LangItem::PollPending)
}
if u == LangItem::AsyncGenReady as u32 {
return Some(LangItem::AsyncGenReady)
}
if u == LangItem::AsyncGenPending as u32 {
return Some(LangItem::AsyncGenPending)
}
if u == LangItem::AsyncGenFinished as u32 {
return Some(LangItem::AsyncGenFinished)
}
if u == LangItem::ResumeTy as u32 { return Some(LangItem::ResumeTy) }
if u == LangItem::GetContext as u32 {
return Some(LangItem::GetContext)
}
if u == LangItem::Context as u32 { return Some(LangItem::Context) }
if u == LangItem::FuturePoll as u32 {
return Some(LangItem::FuturePoll)
}
if u == LangItem::AsyncIteratorPollNext as u32 {
return Some(LangItem::AsyncIteratorPollNext)
}
if u == LangItem::IntoAsyncIterIntoIter as u32 {
return Some(LangItem::IntoAsyncIterIntoIter)
}
if u == LangItem::Option as u32 { return Some(LangItem::Option) }
if u == LangItem::OptionSome as u32 {
return Some(LangItem::OptionSome)
}
if u == LangItem::OptionNone as u32 {
return Some(LangItem::OptionNone)
}
if u == LangItem::ResultOk as u32 { return Some(LangItem::ResultOk) }
if u == LangItem::ResultErr as u32 {
return Some(LangItem::ResultErr)
}
if u == LangItem::ControlFlowContinue as u32 {
return Some(LangItem::ControlFlowContinue)
}
if u == LangItem::ControlFlowBreak as u32 {
return Some(LangItem::ControlFlowBreak)
}
if u == LangItem::IntoFutureIntoFuture as u32 {
return Some(LangItem::IntoFutureIntoFuture)
}
if u == LangItem::IntoIterIntoIter as u32 {
return Some(LangItem::IntoIterIntoIter)
}
if u == LangItem::IteratorNext as u32 {
return Some(LangItem::IteratorNext)
}
if u == LangItem::PinNewUnchecked as u32 {
return Some(LangItem::PinNewUnchecked)
}
if u == LangItem::RangeFrom as u32 {
return Some(LangItem::RangeFrom)
}
if u == LangItem::RangeFull as u32 {
return Some(LangItem::RangeFull)
}
if u == LangItem::RangeInclusiveStruct as u32 {
return Some(LangItem::RangeInclusiveStruct)
}
if u == LangItem::RangeInclusiveNew as u32 {
return Some(LangItem::RangeInclusiveNew)
}
if u == LangItem::Range as u32 { return Some(LangItem::Range) }
if u == LangItem::RangeToInclusive as u32 {
return Some(LangItem::RangeToInclusive)
}
if u == LangItem::RangeTo as u32 { return Some(LangItem::RangeTo) }
if u == LangItem::RangeMax as u32 { return Some(LangItem::RangeMax) }
if u == LangItem::RangeMin as u32 { return Some(LangItem::RangeMin) }
if u == LangItem::RangeSub as u32 { return Some(LangItem::RangeSub) }
if u == LangItem::RangeFromCopy as u32 {
return Some(LangItem::RangeFromCopy)
}
if u == LangItem::RangeCopy as u32 {
return Some(LangItem::RangeCopy)
}
if u == LangItem::RangeInclusiveCopy as u32 {
return Some(LangItem::RangeInclusiveCopy)
}
if u == LangItem::RangeToInclusiveCopy as u32 {
return Some(LangItem::RangeToInclusiveCopy)
}
if u == LangItem::String as u32 { return Some(LangItem::String) }
if u == LangItem::CStr as u32 { return Some(LangItem::CStr) }
if u == LangItem::ContractBuildCheckEnsures as u32 {
return Some(LangItem::ContractBuildCheckEnsures)
}
if u == LangItem::ContractCheckRequires as u32 {
return Some(LangItem::ContractCheckRequires)
}
if u == LangItem::DefaultTrait4 as u32 {
return Some(LangItem::DefaultTrait4)
}
if u == LangItem::DefaultTrait3 as u32 {
return Some(LangItem::DefaultTrait3)
}
if u == LangItem::DefaultTrait2 as u32 {
return Some(LangItem::DefaultTrait2)
}
if u == LangItem::DefaultTrait1 as u32 {
return Some(LangItem::DefaultTrait1)
}
if u == LangItem::ContractCheckEnsures as u32 {
return Some(LangItem::ContractCheckEnsures)
}
if u == LangItem::Reborrow as u32 { return Some(LangItem::Reborrow) }
if u == LangItem::CoerceShared as u32 {
return Some(LangItem::CoerceShared)
}
if u == LangItem::FieldRepresentingType as u32 {
return Some(LangItem::FieldRepresentingType)
}
if u == LangItem::Field as u32 { return Some(LangItem::Field) }
if u == LangItem::FieldBase as u32 {
return Some(LangItem::FieldBase)
}
if u == LangItem::FieldType as u32 {
return Some(LangItem::FieldType)
}
if u == LangItem::FieldOffset as u32 {
return Some(LangItem::FieldOffset)
}
if u == LangItem::From as u32 { return Some(LangItem::From) }
if u == LangItem::FromFn as u32 { return Some(LangItem::FromFn) }
if u == LangItem::FnPtr as u32 { return Some(LangItem::FnPtr) }
None
}
pub fn name(self) -> Symbol {
match self {
LangItem::Sized => sym::sized,
LangItem::MetaSized => sym::meta_sized,
LangItem::PointeeSized => sym::pointee_sized,
LangItem::Unsize => sym::unsize,
LangItem::AlignOf => sym::mem_align_const,
LangItem::SizeOf => sym::mem_size_const,
LangItem::OffsetOf => sym::offset_of,
LangItem::StructuralPeq => sym::structural_peq,
LangItem::Copy => sym::copy,
LangItem::Clone => sym::clone,
LangItem::CloneFn => sym::clone_fn,
LangItem::UseCloned => sym::use_cloned,
LangItem::TrivialClone => sym::trivial_clone,
LangItem::Sync => sym::sync,
LangItem::DiscriminantKind => sym::discriminant_kind,
LangItem::Discriminant => sym::discriminant_type,
LangItem::PointeeTrait => sym::pointee_trait,
LangItem::Metadata => sym::metadata_type,
LangItem::DynMetadata => sym::dyn_metadata,
LangItem::NonNull => sym::non_null,
LangItem::Freeze => sym::freeze,
LangItem::UnsafeUnpin => sym::unsafe_unpin,
LangItem::FnPtrTrait => sym::fn_ptr_trait,
LangItem::FnPtrAsPtr => sym::fn_ptr_as_ptr,
LangItem::FnPtrFromPtr => sym::fn_ptr_from_ptr,
LangItem::Code => sym::code,
LangItem::Drop => sym::drop,
LangItem::Destruct => sym::destruct,
LangItem::AsyncDrop => sym::async_drop,
LangItem::AsyncDropInPlace => sym::async_drop_in_place,
LangItem::CoerceUnsized => sym::coerce_unsized,
LangItem::DispatchFromDyn => sym::dispatch_from_dyn,
LangItem::TryAsDyn => sym::try_as_dyn,
LangItem::TransmuteOpts => sym::transmute_opts,
LangItem::TransmuteTrait => sym::transmute_trait,
LangItem::Add => sym::add,
LangItem::Sub => sym::sub,
LangItem::Mul => sym::mul,
LangItem::Div => sym::div,
LangItem::Rem => sym::rem,
LangItem::Neg => sym::neg,
LangItem::Not => sym::not,
LangItem::BitXor => sym::bitxor,
LangItem::BitAnd => sym::bitand,
LangItem::BitOr => sym::bitor,
LangItem::Shl => sym::shl,
LangItem::Shr => sym::shr,
LangItem::AddAssign => sym::add_assign,
LangItem::SubAssign => sym::sub_assign,
LangItem::MulAssign => sym::mul_assign,
LangItem::DivAssign => sym::div_assign,
LangItem::RemAssign => sym::rem_assign,
LangItem::BitXorAssign => sym::bitxor_assign,
LangItem::BitAndAssign => sym::bitand_assign,
LangItem::BitOrAssign => sym::bitor_assign,
LangItem::ShlAssign => sym::shl_assign,
LangItem::ShrAssign => sym::shr_assign,
LangItem::Index => sym::index,
LangItem::IndexMut => sym::index_mut,
LangItem::UnsafeCell => sym::unsafe_cell,
LangItem::CovariantUnsafeCell => sym::covariant_unsafe_cell,
LangItem::UnsafePinned => sym::unsafe_pinned,
LangItem::VaArgSafe => sym::va_arg_safe,
LangItem::VaList => sym::va_list,
LangItem::Complex => sym::complex,
LangItem::PpcF128 => sym::ppcf128,
LangItem::Deref => sym::deref,
LangItem::DerefMut => sym::deref_mut,
LangItem::DerefPure => sym::deref_pure,
LangItem::DerefTarget => sym::deref_target,
LangItem::Receiver => sym::receiver,
LangItem::ReceiverTarget => sym::receiver_target,
LangItem::LegacyReceiver => sym::legacy_receiver,
LangItem::Fn => kw::Fn,
LangItem::FnMut => sym::fn_mut,
LangItem::FnOnce => sym::fn_once,
LangItem::FnStatic => sym::fn_static,
LangItem::AsyncFn => sym::async_fn,
LangItem::AsyncFnMut => sym::async_fn_mut,
LangItem::AsyncFnOnce => sym::async_fn_once,
LangItem::AsyncFnOnceOutput => sym::async_fn_once_output,
LangItem::CallOnceFuture => sym::call_once_future,
LangItem::CallRefFuture => sym::call_ref_future,
LangItem::AsyncFnKindHelper => sym::async_fn_kind_helper,
LangItem::AsyncFnKindUpvars => sym::async_fn_kind_upvars,
LangItem::FnOnceOutput => sym::fn_once_output,
LangItem::Iterator => sym::iterator,
LangItem::FusedIterator => sym::fused_iterator,
LangItem::Future => sym::future_trait,
LangItem::FutureOutput => sym::future_output,
LangItem::AsyncIterator => sym::async_iterator,
LangItem::CoroutineState => sym::coroutine_state,
LangItem::Coroutine => sym::coroutine,
LangItem::CoroutineReturn => sym::coroutine_return,
LangItem::CoroutineYield => sym::coroutine_yield,
LangItem::CoroutineResume => sym::coroutine_resume,
LangItem::Unpin => sym::unpin,
LangItem::Pin => kw::Pin,
LangItem::OrderingEnum => sym::Ordering,
LangItem::PartialEq => sym::eq,
LangItem::PartialOrd => sym::partial_ord,
LangItem::CVoid => sym::c_void,
LangItem::F16B => sym::f16b,
LangItem::Type => sym::type_info,
LangItem::TypeGeneric => sym::type_info_generic,
LangItem::TypeId => sym::type_id,
LangItem::Panic => sym::panic,
LangItem::PanicNounwind => sym::panic_nounwind,
LangItem::PanicFmt => sym::panic_fmt,
LangItem::PanicDisplay => sym::panic_display,
LangItem::ConstPanicFmt => sym::const_panic_fmt,
LangItem::PanicBoundsCheck => sym::panic_bounds_check,
LangItem::PanicMisalignedPointerDereference =>
sym::panic_misaligned_pointer_dereference,
LangItem::PanicInfo => sym::panic_info,
LangItem::PanicLocation => sym::panic_location,
LangItem::PanicImpl => sym::panic_impl,
LangItem::PanicCannotUnwind => sym::panic_cannot_unwind,
LangItem::PanicInCleanup => sym::panic_in_cleanup,
LangItem::PanicAddOverflow => sym::panic_const_add_overflow,
LangItem::PanicSubOverflow => sym::panic_const_sub_overflow,
LangItem::PanicMulOverflow => sym::panic_const_mul_overflow,
LangItem::PanicDivOverflow => sym::panic_const_div_overflow,
LangItem::PanicRemOverflow => sym::panic_const_rem_overflow,
LangItem::PanicNegOverflow => sym::panic_const_neg_overflow,
LangItem::PanicShrOverflow => sym::panic_const_shr_overflow,
LangItem::PanicShlOverflow => sym::panic_const_shl_overflow,
LangItem::PanicDivZero => sym::panic_const_div_by_zero,
LangItem::PanicRemZero => sym::panic_const_rem_by_zero,
LangItem::PanicCoroutineResumed =>
sym::panic_const_coroutine_resumed,
LangItem::PanicAsyncFnResumed =>
sym::panic_const_async_fn_resumed,
LangItem::PanicAsyncGenFnResumed =>
sym::panic_const_async_gen_fn_resumed,
LangItem::PanicGenFnNone => sym::panic_const_gen_fn_none,
LangItem::PanicCoroutineResumedPanic =>
sym::panic_const_coroutine_resumed_panic,
LangItem::PanicAsyncFnResumedPanic =>
sym::panic_const_async_fn_resumed_panic,
LangItem::PanicAsyncGenFnResumedPanic =>
sym::panic_const_async_gen_fn_resumed_panic,
LangItem::PanicGenFnNonePanic =>
sym::panic_const_gen_fn_none_panic,
LangItem::PanicNullPointerDereference =>
sym::panic_null_pointer_dereference,
LangItem::PanicNullReferenceConstructed =>
sym::panic_null_reference_constructed,
LangItem::PanicInvalidEnumConstruction =>
sym::panic_invalid_enum_construction,
LangItem::PanicCoroutineResumedDrop =>
sym::panic_const_coroutine_resumed_drop,
LangItem::PanicAsyncFnResumedDrop =>
sym::panic_const_async_fn_resumed_drop,
LangItem::PanicAsyncGenFnResumedDrop =>
sym::panic_const_async_gen_fn_resumed_drop,
LangItem::PanicGenFnNoneDrop => sym::panic_const_gen_fn_none_drop,
LangItem::BeginPanic => sym::begin_panic,
LangItem::FormatArgument => sym::format_argument,
LangItem::FormatArguments => sym::format_arguments,
LangItem::DropGlue => sym::drop_glue,
LangItem::AllocLayout => sym::alloc_layout,
LangItem::Start => sym::start,
LangItem::EhPersonality => sym::eh_personality,
LangItem::CompilerMove => sym::compiler_move,
LangItem::CompilerCopy => sym::compiler_copy,
LangItem::OwnedBox => sym::owned_box,
LangItem::GlobalAlloc => sym::global_alloc_ty,
LangItem::PhantomData => sym::phantom_data,
LangItem::ManuallyDrop => sym::manually_drop,
LangItem::MaybeDangling => sym::maybe_dangling,
LangItem::BikeshedGuaranteedNoDrop =>
sym::bikeshed_guaranteed_no_drop,
LangItem::MaybeUninit => sym::maybe_uninit,
LangItem::Termination => sym::termination,
LangItem::Try => sym::Try,
LangItem::Tuple => sym::tuple_trait,
LangItem::SliceLen => sym::slice_len_fn,
LangItem::TryTraitFromResidual => sym::from_residual,
LangItem::TryTraitFromOutput => sym::from_output,
LangItem::TryTraitBranch => sym::branch,
LangItem::TryTraitFromYeet => sym::from_yeet,
LangItem::ResidualIntoTryType => sym::into_try_type,
LangItem::CoercePointeeValidated => sym::coerce_pointee_validated,
LangItem::ConstParamTy => sym::const_param_ty,
LangItem::Poll => sym::Poll,
LangItem::PollReady => sym::Ready,
LangItem::PollPending => sym::Pending,
LangItem::AsyncGenReady => sym::AsyncGenReady,
LangItem::AsyncGenPending => sym::AsyncGenPending,
LangItem::AsyncGenFinished => sym::AsyncGenFinished,
LangItem::ResumeTy => sym::ResumeTy,
LangItem::GetContext => sym::get_context,
LangItem::Context => sym::Context,
LangItem::FuturePoll => sym::poll,
LangItem::AsyncIteratorPollNext => sym::async_iterator_poll_next,
LangItem::IntoAsyncIterIntoIter => sym::into_async_iter_into_iter,
LangItem::Option => sym::Option,
LangItem::OptionSome => sym::Some,
LangItem::OptionNone => sym::None,
LangItem::ResultOk => sym::Ok,
LangItem::ResultErr => sym::Err,
LangItem::ControlFlowContinue => sym::Continue,
LangItem::ControlFlowBreak => sym::Break,
LangItem::IntoFutureIntoFuture => sym::into_future,
LangItem::IntoIterIntoIter => sym::into_iter,
LangItem::IteratorNext => sym::next,
LangItem::PinNewUnchecked => sym::new_unchecked,
LangItem::RangeFrom => sym::RangeFrom,
LangItem::RangeFull => sym::RangeFull,
LangItem::RangeInclusiveStruct => sym::RangeInclusive,
LangItem::RangeInclusiveNew => sym::range_inclusive_new,
LangItem::Range => sym::Range,
LangItem::RangeToInclusive => sym::RangeToInclusive,
LangItem::RangeTo => sym::RangeTo,
LangItem::RangeMax => sym::RangeMax,
LangItem::RangeMin => sym::RangeMin,
LangItem::RangeSub => sym::RangeSub,
LangItem::RangeFromCopy => sym::RangeFromCopy,
LangItem::RangeCopy => sym::RangeCopy,
LangItem::RangeInclusiveCopy => sym::RangeInclusiveCopy,
LangItem::RangeToInclusiveCopy => sym::RangeToInclusiveCopy,
LangItem::String => sym::String,
LangItem::CStr => sym::CStr,
LangItem::ContractBuildCheckEnsures =>
sym::contract_build_check_ensures,
LangItem::ContractCheckRequires => sym::contract_check_requires,
LangItem::DefaultTrait4 => sym::default_trait4,
LangItem::DefaultTrait3 => sym::default_trait3,
LangItem::DefaultTrait2 => sym::default_trait2,
LangItem::DefaultTrait1 => sym::default_trait1,
LangItem::ContractCheckEnsures => sym::contract_check_ensures,
LangItem::Reborrow => sym::reborrow,
LangItem::CoerceShared => sym::coerce_shared,
LangItem::FieldRepresentingType => sym::field_representing_type,
LangItem::Field => sym::field,
LangItem::FieldBase => sym::field_base,
LangItem::FieldType => sym::field_type,
LangItem::FieldOffset => sym::field_offset,
LangItem::From => sym::From,
LangItem::FromFn => sym::from,
LangItem::FnPtr => sym::FnPtr,
}
}
pub fn from_name(name: Symbol) -> Option<Self> {
match name {
sym::sized => Some(LangItem::Sized),
sym::meta_sized => Some(LangItem::MetaSized),
sym::pointee_sized => Some(LangItem::PointeeSized),
sym::unsize => Some(LangItem::Unsize),
sym::mem_align_const => Some(LangItem::AlignOf),
sym::mem_size_const => Some(LangItem::SizeOf),
sym::offset_of => Some(LangItem::OffsetOf),
sym::structural_peq => Some(LangItem::StructuralPeq),
sym::copy => Some(LangItem::Copy),
sym::clone => Some(LangItem::Clone),
sym::clone_fn => Some(LangItem::CloneFn),
sym::use_cloned => Some(LangItem::UseCloned),
sym::trivial_clone => Some(LangItem::TrivialClone),
sym::sync => Some(LangItem::Sync),
sym::discriminant_kind => Some(LangItem::DiscriminantKind),
sym::discriminant_type => Some(LangItem::Discriminant),
sym::pointee_trait => Some(LangItem::PointeeTrait),
sym::metadata_type => Some(LangItem::Metadata),
sym::dyn_metadata => Some(LangItem::DynMetadata),
sym::non_null => Some(LangItem::NonNull),
sym::freeze => Some(LangItem::Freeze),
sym::unsafe_unpin => Some(LangItem::UnsafeUnpin),
sym::fn_ptr_trait => Some(LangItem::FnPtrTrait),
sym::fn_ptr_as_ptr => Some(LangItem::FnPtrAsPtr),
sym::fn_ptr_from_ptr => Some(LangItem::FnPtrFromPtr),
sym::code => Some(LangItem::Code),
sym::drop => Some(LangItem::Drop),
sym::destruct => Some(LangItem::Destruct),
sym::async_drop => Some(LangItem::AsyncDrop),
sym::async_drop_in_place => Some(LangItem::AsyncDropInPlace),
sym::coerce_unsized => Some(LangItem::CoerceUnsized),
sym::dispatch_from_dyn => Some(LangItem::DispatchFromDyn),
sym::try_as_dyn => Some(LangItem::TryAsDyn),
sym::transmute_opts => Some(LangItem::TransmuteOpts),
sym::transmute_trait => Some(LangItem::TransmuteTrait),
sym::add => Some(LangItem::Add),
sym::sub => Some(LangItem::Sub),
sym::mul => Some(LangItem::Mul),
sym::div => Some(LangItem::Div),
sym::rem => Some(LangItem::Rem),
sym::neg => Some(LangItem::Neg),
sym::not => Some(LangItem::Not),
sym::bitxor => Some(LangItem::BitXor),
sym::bitand => Some(LangItem::BitAnd),
sym::bitor => Some(LangItem::BitOr),
sym::shl => Some(LangItem::Shl),
sym::shr => Some(LangItem::Shr),
sym::add_assign => Some(LangItem::AddAssign),
sym::sub_assign => Some(LangItem::SubAssign),
sym::mul_assign => Some(LangItem::MulAssign),
sym::div_assign => Some(LangItem::DivAssign),
sym::rem_assign => Some(LangItem::RemAssign),
sym::bitxor_assign => Some(LangItem::BitXorAssign),
sym::bitand_assign => Some(LangItem::BitAndAssign),
sym::bitor_assign => Some(LangItem::BitOrAssign),
sym::shl_assign => Some(LangItem::ShlAssign),
sym::shr_assign => Some(LangItem::ShrAssign),
sym::index => Some(LangItem::Index),
sym::index_mut => Some(LangItem::IndexMut),
sym::unsafe_cell => Some(LangItem::UnsafeCell),
sym::covariant_unsafe_cell => Some(LangItem::CovariantUnsafeCell),
sym::unsafe_pinned => Some(LangItem::UnsafePinned),
sym::va_arg_safe => Some(LangItem::VaArgSafe),
sym::va_list => Some(LangItem::VaList),
sym::complex => Some(LangItem::Complex),
sym::ppcf128 => Some(LangItem::PpcF128),
sym::deref => Some(LangItem::Deref),
sym::deref_mut => Some(LangItem::DerefMut),
sym::deref_pure => Some(LangItem::DerefPure),
sym::deref_target => Some(LangItem::DerefTarget),
sym::receiver => Some(LangItem::Receiver),
sym::receiver_target => Some(LangItem::ReceiverTarget),
sym::legacy_receiver => Some(LangItem::LegacyReceiver),
kw::Fn => Some(LangItem::Fn),
sym::fn_mut => Some(LangItem::FnMut),
sym::fn_once => Some(LangItem::FnOnce),
sym::fn_static => Some(LangItem::FnStatic),
sym::async_fn => Some(LangItem::AsyncFn),
sym::async_fn_mut => Some(LangItem::AsyncFnMut),
sym::async_fn_once => Some(LangItem::AsyncFnOnce),
sym::async_fn_once_output => Some(LangItem::AsyncFnOnceOutput),
sym::call_once_future => Some(LangItem::CallOnceFuture),
sym::call_ref_future => Some(LangItem::CallRefFuture),
sym::async_fn_kind_helper => Some(LangItem::AsyncFnKindHelper),
sym::async_fn_kind_upvars => Some(LangItem::AsyncFnKindUpvars),
sym::fn_once_output => Some(LangItem::FnOnceOutput),
sym::iterator => Some(LangItem::Iterator),
sym::fused_iterator => Some(LangItem::FusedIterator),
sym::future_trait => Some(LangItem::Future),
sym::future_output => Some(LangItem::FutureOutput),
sym::async_iterator => Some(LangItem::AsyncIterator),
sym::coroutine_state => Some(LangItem::CoroutineState),
sym::coroutine => Some(LangItem::Coroutine),
sym::coroutine_return => Some(LangItem::CoroutineReturn),
sym::coroutine_yield => Some(LangItem::CoroutineYield),
sym::coroutine_resume => Some(LangItem::CoroutineResume),
sym::unpin => Some(LangItem::Unpin),
kw::Pin => Some(LangItem::Pin),
sym::Ordering => Some(LangItem::OrderingEnum),
sym::eq => Some(LangItem::PartialEq),
sym::partial_ord => Some(LangItem::PartialOrd),
sym::c_void => Some(LangItem::CVoid),
sym::f16b => Some(LangItem::F16B),
sym::type_info => Some(LangItem::Type),
sym::type_info_generic => Some(LangItem::TypeGeneric),
sym::type_id => Some(LangItem::TypeId),
sym::panic => Some(LangItem::Panic),
sym::panic_nounwind => Some(LangItem::PanicNounwind),
sym::panic_fmt => Some(LangItem::PanicFmt),
sym::panic_display => Some(LangItem::PanicDisplay),
sym::const_panic_fmt => Some(LangItem::ConstPanicFmt),
sym::panic_bounds_check => Some(LangItem::PanicBoundsCheck),
sym::panic_misaligned_pointer_dereference =>
Some(LangItem::PanicMisalignedPointerDereference),
sym::panic_info => Some(LangItem::PanicInfo),
sym::panic_location => Some(LangItem::PanicLocation),
sym::panic_impl => Some(LangItem::PanicImpl),
sym::panic_cannot_unwind => Some(LangItem::PanicCannotUnwind),
sym::panic_in_cleanup => Some(LangItem::PanicInCleanup),
sym::panic_const_add_overflow => Some(LangItem::PanicAddOverflow),
sym::panic_const_sub_overflow => Some(LangItem::PanicSubOverflow),
sym::panic_const_mul_overflow => Some(LangItem::PanicMulOverflow),
sym::panic_const_div_overflow => Some(LangItem::PanicDivOverflow),
sym::panic_const_rem_overflow => Some(LangItem::PanicRemOverflow),
sym::panic_const_neg_overflow => Some(LangItem::PanicNegOverflow),
sym::panic_const_shr_overflow => Some(LangItem::PanicShrOverflow),
sym::panic_const_shl_overflow => Some(LangItem::PanicShlOverflow),
sym::panic_const_div_by_zero => Some(LangItem::PanicDivZero),
sym::panic_const_rem_by_zero => Some(LangItem::PanicRemZero),
sym::panic_const_coroutine_resumed =>
Some(LangItem::PanicCoroutineResumed),
sym::panic_const_async_fn_resumed =>
Some(LangItem::PanicAsyncFnResumed),
sym::panic_const_async_gen_fn_resumed =>
Some(LangItem::PanicAsyncGenFnResumed),
sym::panic_const_gen_fn_none => Some(LangItem::PanicGenFnNone),
sym::panic_const_coroutine_resumed_panic =>
Some(LangItem::PanicCoroutineResumedPanic),
sym::panic_const_async_fn_resumed_panic =>
Some(LangItem::PanicAsyncFnResumedPanic),
sym::panic_const_async_gen_fn_resumed_panic =>
Some(LangItem::PanicAsyncGenFnResumedPanic),
sym::panic_const_gen_fn_none_panic =>
Some(LangItem::PanicGenFnNonePanic),
sym::panic_null_pointer_dereference =>
Some(LangItem::PanicNullPointerDereference),
sym::panic_null_reference_constructed =>
Some(LangItem::PanicNullReferenceConstructed),
sym::panic_invalid_enum_construction =>
Some(LangItem::PanicInvalidEnumConstruction),
sym::panic_const_coroutine_resumed_drop =>
Some(LangItem::PanicCoroutineResumedDrop),
sym::panic_const_async_fn_resumed_drop =>
Some(LangItem::PanicAsyncFnResumedDrop),
sym::panic_const_async_gen_fn_resumed_drop =>
Some(LangItem::PanicAsyncGenFnResumedDrop),
sym::panic_const_gen_fn_none_drop =>
Some(LangItem::PanicGenFnNoneDrop),
sym::begin_panic => Some(LangItem::BeginPanic),
sym::format_argument => Some(LangItem::FormatArgument),
sym::format_arguments => Some(LangItem::FormatArguments),
sym::drop_glue => Some(LangItem::DropGlue),
sym::alloc_layout => Some(LangItem::AllocLayout),
sym::start => Some(LangItem::Start),
sym::eh_personality => Some(LangItem::EhPersonality),
sym::compiler_move => Some(LangItem::CompilerMove),
sym::compiler_copy => Some(LangItem::CompilerCopy),
sym::owned_box => Some(LangItem::OwnedBox),
sym::global_alloc_ty => Some(LangItem::GlobalAlloc),
sym::phantom_data => Some(LangItem::PhantomData),
sym::manually_drop => Some(LangItem::ManuallyDrop),
sym::maybe_dangling => Some(LangItem::MaybeDangling),
sym::bikeshed_guaranteed_no_drop =>
Some(LangItem::BikeshedGuaranteedNoDrop),
sym::maybe_uninit => Some(LangItem::MaybeUninit),
sym::termination => Some(LangItem::Termination),
sym::Try => Some(LangItem::Try),
sym::tuple_trait => Some(LangItem::Tuple),
sym::slice_len_fn => Some(LangItem::SliceLen),
sym::from_residual => Some(LangItem::TryTraitFromResidual),
sym::from_output => Some(LangItem::TryTraitFromOutput),
sym::branch => Some(LangItem::TryTraitBranch),
sym::from_yeet => Some(LangItem::TryTraitFromYeet),
sym::into_try_type => Some(LangItem::ResidualIntoTryType),
sym::coerce_pointee_validated =>
Some(LangItem::CoercePointeeValidated),
sym::const_param_ty => Some(LangItem::ConstParamTy),
sym::Poll => Some(LangItem::Poll),
sym::Ready => Some(LangItem::PollReady),
sym::Pending => Some(LangItem::PollPending),
sym::AsyncGenReady => Some(LangItem::AsyncGenReady),
sym::AsyncGenPending => Some(LangItem::AsyncGenPending),
sym::AsyncGenFinished => Some(LangItem::AsyncGenFinished),
sym::ResumeTy => Some(LangItem::ResumeTy),
sym::get_context => Some(LangItem::GetContext),
sym::Context => Some(LangItem::Context),
sym::poll => Some(LangItem::FuturePoll),
sym::async_iterator_poll_next =>
Some(LangItem::AsyncIteratorPollNext),
sym::into_async_iter_into_iter =>
Some(LangItem::IntoAsyncIterIntoIter),
sym::Option => Some(LangItem::Option),
sym::Some => Some(LangItem::OptionSome),
sym::None => Some(LangItem::OptionNone),
sym::Ok => Some(LangItem::ResultOk),
sym::Err => Some(LangItem::ResultErr),
sym::Continue => Some(LangItem::ControlFlowContinue),
sym::Break => Some(LangItem::ControlFlowBreak),
sym::into_future => Some(LangItem::IntoFutureIntoFuture),
sym::into_iter => Some(LangItem::IntoIterIntoIter),
sym::next => Some(LangItem::IteratorNext),
sym::new_unchecked => Some(LangItem::PinNewUnchecked),
sym::RangeFrom => Some(LangItem::RangeFrom),
sym::RangeFull => Some(LangItem::RangeFull),
sym::RangeInclusive => Some(LangItem::RangeInclusiveStruct),
sym::range_inclusive_new => Some(LangItem::RangeInclusiveNew),
sym::Range => Some(LangItem::Range),
sym::RangeToInclusive => Some(LangItem::RangeToInclusive),
sym::RangeTo => Some(LangItem::RangeTo),
sym::RangeMax => Some(LangItem::RangeMax),
sym::RangeMin => Some(LangItem::RangeMin),
sym::RangeSub => Some(LangItem::RangeSub),
sym::RangeFromCopy => Some(LangItem::RangeFromCopy),
sym::RangeCopy => Some(LangItem::RangeCopy),
sym::RangeInclusiveCopy => Some(LangItem::RangeInclusiveCopy),
sym::RangeToInclusiveCopy => Some(LangItem::RangeToInclusiveCopy),
sym::String => Some(LangItem::String),
sym::CStr => Some(LangItem::CStr),
sym::contract_build_check_ensures =>
Some(LangItem::ContractBuildCheckEnsures),
sym::contract_check_requires =>
Some(LangItem::ContractCheckRequires),
sym::default_trait4 => Some(LangItem::DefaultTrait4),
sym::default_trait3 => Some(LangItem::DefaultTrait3),
sym::default_trait2 => Some(LangItem::DefaultTrait2),
sym::default_trait1 => Some(LangItem::DefaultTrait1),
sym::contract_check_ensures =>
Some(LangItem::ContractCheckEnsures),
sym::reborrow => Some(LangItem::Reborrow),
sym::coerce_shared => Some(LangItem::CoerceShared),
sym::field_representing_type =>
Some(LangItem::FieldRepresentingType),
sym::field => Some(LangItem::Field),
sym::field_base => Some(LangItem::FieldBase),
sym::field_type => Some(LangItem::FieldType),
sym::field_offset => Some(LangItem::FieldOffset),
sym::From => Some(LangItem::From),
sym::from => Some(LangItem::FromFn),
sym::FnPtr => Some(LangItem::FnPtr),
_ => None,
}
}
pub fn variant_name(self) -> &'static str {
match self {
LangItem::Sized => "Sized",
LangItem::MetaSized => "MetaSized",
LangItem::PointeeSized => "PointeeSized",
LangItem::Unsize => "Unsize",
LangItem::AlignOf => "AlignOf",
LangItem::SizeOf => "SizeOf",
LangItem::OffsetOf => "OffsetOf",
LangItem::StructuralPeq => "StructuralPeq",
LangItem::Copy => "Copy",
LangItem::Clone => "Clone",
LangItem::CloneFn => "CloneFn",
LangItem::UseCloned => "UseCloned",
LangItem::TrivialClone => "TrivialClone",
LangItem::Sync => "Sync",
LangItem::DiscriminantKind => "DiscriminantKind",
LangItem::Discriminant => "Discriminant",
LangItem::PointeeTrait => "PointeeTrait",
LangItem::Metadata => "Metadata",
LangItem::DynMetadata => "DynMetadata",
LangItem::NonNull => "NonNull",
LangItem::Freeze => "Freeze",
LangItem::UnsafeUnpin => "UnsafeUnpin",
LangItem::FnPtrTrait => "FnPtrTrait",
LangItem::FnPtrAsPtr => "FnPtrAsPtr",
LangItem::FnPtrFromPtr => "FnPtrFromPtr",
LangItem::Code => "Code",
LangItem::Drop => "Drop",
LangItem::Destruct => "Destruct",
LangItem::AsyncDrop => "AsyncDrop",
LangItem::AsyncDropInPlace => "AsyncDropInPlace",
LangItem::CoerceUnsized => "CoerceUnsized",
LangItem::DispatchFromDyn => "DispatchFromDyn",
LangItem::TryAsDyn => "TryAsDyn",
LangItem::TransmuteOpts => "TransmuteOpts",
LangItem::TransmuteTrait => "TransmuteTrait",
LangItem::Add => "Add",
LangItem::Sub => "Sub",
LangItem::Mul => "Mul",
LangItem::Div => "Div",
LangItem::Rem => "Rem",
LangItem::Neg => "Neg",
LangItem::Not => "Not",
LangItem::BitXor => "BitXor",
LangItem::BitAnd => "BitAnd",
LangItem::BitOr => "BitOr",
LangItem::Shl => "Shl",
LangItem::Shr => "Shr",
LangItem::AddAssign => "AddAssign",
LangItem::SubAssign => "SubAssign",
LangItem::MulAssign => "MulAssign",
LangItem::DivAssign => "DivAssign",
LangItem::RemAssign => "RemAssign",
LangItem::BitXorAssign => "BitXorAssign",
LangItem::BitAndAssign => "BitAndAssign",
LangItem::BitOrAssign => "BitOrAssign",
LangItem::ShlAssign => "ShlAssign",
LangItem::ShrAssign => "ShrAssign",
LangItem::Index => "Index",
LangItem::IndexMut => "IndexMut",
LangItem::UnsafeCell => "UnsafeCell",
LangItem::CovariantUnsafeCell => "CovariantUnsafeCell",
LangItem::UnsafePinned => "UnsafePinned",
LangItem::VaArgSafe => "VaArgSafe",
LangItem::VaList => "VaList",
LangItem::Complex => "Complex",
LangItem::PpcF128 => "PpcF128",
LangItem::Deref => "Deref",
LangItem::DerefMut => "DerefMut",
LangItem::DerefPure => "DerefPure",
LangItem::DerefTarget => "DerefTarget",
LangItem::Receiver => "Receiver",
LangItem::ReceiverTarget => "ReceiverTarget",
LangItem::LegacyReceiver => "LegacyReceiver",
LangItem::Fn => "Fn",
LangItem::FnMut => "FnMut",
LangItem::FnOnce => "FnOnce",
LangItem::FnStatic => "FnStatic",
LangItem::AsyncFn => "AsyncFn",
LangItem::AsyncFnMut => "AsyncFnMut",
LangItem::AsyncFnOnce => "AsyncFnOnce",
LangItem::AsyncFnOnceOutput => "AsyncFnOnceOutput",
LangItem::CallOnceFuture => "CallOnceFuture",
LangItem::CallRefFuture => "CallRefFuture",
LangItem::AsyncFnKindHelper => "AsyncFnKindHelper",
LangItem::AsyncFnKindUpvars => "AsyncFnKindUpvars",
LangItem::FnOnceOutput => "FnOnceOutput",
LangItem::Iterator => "Iterator",
LangItem::FusedIterator => "FusedIterator",
LangItem::Future => "Future",
LangItem::FutureOutput => "FutureOutput",
LangItem::AsyncIterator => "AsyncIterator",
LangItem::CoroutineState => "CoroutineState",
LangItem::Coroutine => "Coroutine",
LangItem::CoroutineReturn => "CoroutineReturn",
LangItem::CoroutineYield => "CoroutineYield",
LangItem::CoroutineResume => "CoroutineResume",
LangItem::Unpin => "Unpin",
LangItem::Pin => "Pin",
LangItem::OrderingEnum => "OrderingEnum",
LangItem::PartialEq => "PartialEq",
LangItem::PartialOrd => "PartialOrd",
LangItem::CVoid => "CVoid",
LangItem::F16B => "F16B",
LangItem::Type => "Type",
LangItem::TypeGeneric => "TypeGeneric",
LangItem::TypeId => "TypeId",
LangItem::Panic => "Panic",
LangItem::PanicNounwind => "PanicNounwind",
LangItem::PanicFmt => "PanicFmt",
LangItem::PanicDisplay => "PanicDisplay",
LangItem::ConstPanicFmt => "ConstPanicFmt",
LangItem::PanicBoundsCheck => "PanicBoundsCheck",
LangItem::PanicMisalignedPointerDereference =>
"PanicMisalignedPointerDereference",
LangItem::PanicInfo => "PanicInfo",
LangItem::PanicLocation => "PanicLocation",
LangItem::PanicImpl => "PanicImpl",
LangItem::PanicCannotUnwind => "PanicCannotUnwind",
LangItem::PanicInCleanup => "PanicInCleanup",
LangItem::PanicAddOverflow => "PanicAddOverflow",
LangItem::PanicSubOverflow => "PanicSubOverflow",
LangItem::PanicMulOverflow => "PanicMulOverflow",
LangItem::PanicDivOverflow => "PanicDivOverflow",
LangItem::PanicRemOverflow => "PanicRemOverflow",
LangItem::PanicNegOverflow => "PanicNegOverflow",
LangItem::PanicShrOverflow => "PanicShrOverflow",
LangItem::PanicShlOverflow => "PanicShlOverflow",
LangItem::PanicDivZero => "PanicDivZero",
LangItem::PanicRemZero => "PanicRemZero",
LangItem::PanicCoroutineResumed => "PanicCoroutineResumed",
LangItem::PanicAsyncFnResumed => "PanicAsyncFnResumed",
LangItem::PanicAsyncGenFnResumed => "PanicAsyncGenFnResumed",
LangItem::PanicGenFnNone => "PanicGenFnNone",
LangItem::PanicCoroutineResumedPanic =>
"PanicCoroutineResumedPanic",
LangItem::PanicAsyncFnResumedPanic => "PanicAsyncFnResumedPanic",
LangItem::PanicAsyncGenFnResumedPanic =>
"PanicAsyncGenFnResumedPanic",
LangItem::PanicGenFnNonePanic => "PanicGenFnNonePanic",
LangItem::PanicNullPointerDereference =>
"PanicNullPointerDereference",
LangItem::PanicNullReferenceConstructed =>
"PanicNullReferenceConstructed",
LangItem::PanicInvalidEnumConstruction =>
"PanicInvalidEnumConstruction",
LangItem::PanicCoroutineResumedDrop =>
"PanicCoroutineResumedDrop",
LangItem::PanicAsyncFnResumedDrop => "PanicAsyncFnResumedDrop",
LangItem::PanicAsyncGenFnResumedDrop =>
"PanicAsyncGenFnResumedDrop",
LangItem::PanicGenFnNoneDrop => "PanicGenFnNoneDrop",
LangItem::BeginPanic => "BeginPanic",
LangItem::FormatArgument => "FormatArgument",
LangItem::FormatArguments => "FormatArguments",
LangItem::DropGlue => "DropGlue",
LangItem::AllocLayout => "AllocLayout",
LangItem::Start => "Start",
LangItem::EhPersonality => "EhPersonality",
LangItem::CompilerMove => "CompilerMove",
LangItem::CompilerCopy => "CompilerCopy",
LangItem::OwnedBox => "OwnedBox",
LangItem::GlobalAlloc => "GlobalAlloc",
LangItem::PhantomData => "PhantomData",
LangItem::ManuallyDrop => "ManuallyDrop",
LangItem::MaybeDangling => "MaybeDangling",
LangItem::BikeshedGuaranteedNoDrop => "BikeshedGuaranteedNoDrop",
LangItem::MaybeUninit => "MaybeUninit",
LangItem::Termination => "Termination",
LangItem::Try => "Try",
LangItem::Tuple => "Tuple",
LangItem::SliceLen => "SliceLen",
LangItem::TryTraitFromResidual => "TryTraitFromResidual",
LangItem::TryTraitFromOutput => "TryTraitFromOutput",
LangItem::TryTraitBranch => "TryTraitBranch",
LangItem::TryTraitFromYeet => "TryTraitFromYeet",
LangItem::ResidualIntoTryType => "ResidualIntoTryType",
LangItem::CoercePointeeValidated => "CoercePointeeValidated",
LangItem::ConstParamTy => "ConstParamTy",
LangItem::Poll => "Poll",
LangItem::PollReady => "PollReady",
LangItem::PollPending => "PollPending",
LangItem::AsyncGenReady => "AsyncGenReady",
LangItem::AsyncGenPending => "AsyncGenPending",
LangItem::AsyncGenFinished => "AsyncGenFinished",
LangItem::ResumeTy => "ResumeTy",
LangItem::GetContext => "GetContext",
LangItem::Context => "Context",
LangItem::FuturePoll => "FuturePoll",
LangItem::AsyncIteratorPollNext => "AsyncIteratorPollNext",
LangItem::IntoAsyncIterIntoIter => "IntoAsyncIterIntoIter",
LangItem::Option => "Option",
LangItem::OptionSome => "OptionSome",
LangItem::OptionNone => "OptionNone",
LangItem::ResultOk => "ResultOk",
LangItem::ResultErr => "ResultErr",
LangItem::ControlFlowContinue => "ControlFlowContinue",
LangItem::ControlFlowBreak => "ControlFlowBreak",
LangItem::IntoFutureIntoFuture => "IntoFutureIntoFuture",
LangItem::IntoIterIntoIter => "IntoIterIntoIter",
LangItem::IteratorNext => "IteratorNext",
LangItem::PinNewUnchecked => "PinNewUnchecked",
LangItem::RangeFrom => "RangeFrom",
LangItem::RangeFull => "RangeFull",
LangItem::RangeInclusiveStruct => "RangeInclusiveStruct",
LangItem::RangeInclusiveNew => "RangeInclusiveNew",
LangItem::Range => "Range",
LangItem::RangeToInclusive => "RangeToInclusive",
LangItem::RangeTo => "RangeTo",
LangItem::RangeMax => "RangeMax",
LangItem::RangeMin => "RangeMin",
LangItem::RangeSub => "RangeSub",
LangItem::RangeFromCopy => "RangeFromCopy",
LangItem::RangeCopy => "RangeCopy",
LangItem::RangeInclusiveCopy => "RangeInclusiveCopy",
LangItem::RangeToInclusiveCopy => "RangeToInclusiveCopy",
LangItem::String => "String",
LangItem::CStr => "CStr",
LangItem::ContractBuildCheckEnsures =>
"ContractBuildCheckEnsures",
LangItem::ContractCheckRequires => "ContractCheckRequires",
LangItem::DefaultTrait4 => "DefaultTrait4",
LangItem::DefaultTrait3 => "DefaultTrait3",
LangItem::DefaultTrait2 => "DefaultTrait2",
LangItem::DefaultTrait1 => "DefaultTrait1",
LangItem::ContractCheckEnsures => "ContractCheckEnsures",
LangItem::Reborrow => "Reborrow",
LangItem::CoerceShared => "CoerceShared",
LangItem::FieldRepresentingType => "FieldRepresentingType",
LangItem::Field => "Field",
LangItem::FieldBase => "FieldBase",
LangItem::FieldType => "FieldType",
LangItem::FieldOffset => "FieldOffset",
LangItem::From => "From",
LangItem::FromFn => "FromFn",
LangItem::FnPtr => "FnPtr",
}
}
pub fn target(self) -> Target {
match self {
LangItem::Sized => Target::Trait,
LangItem::MetaSized => Target::Trait,
LangItem::PointeeSized => Target::Trait,
LangItem::Unsize => Target::Trait,
LangItem::AlignOf => Target::AssocConst(AssocCtxt::Trait),
LangItem::SizeOf => Target::AssocConst(AssocCtxt::Trait),
LangItem::OffsetOf => Target::Fn,
LangItem::StructuralPeq => Target::Trait,
LangItem::Copy => Target::Trait,
LangItem::Clone => Target::Trait,
LangItem::CloneFn =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::UseCloned => Target::Trait,
LangItem::TrivialClone => Target::Trait,
LangItem::Sync => Target::Trait,
LangItem::DiscriminantKind => Target::Trait,
LangItem::Discriminant => Target::AssocTy(AssocCtxt::Trait),
LangItem::PointeeTrait => Target::Trait,
LangItem::Metadata => Target::AssocTy(AssocCtxt::Trait),
LangItem::DynMetadata => Target::Struct,
LangItem::NonNull => Target::Struct,
LangItem::Freeze => Target::Trait,
LangItem::UnsafeUnpin => Target::Trait,
LangItem::FnPtrTrait => Target::Trait,
LangItem::FnPtrAsPtr =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::FnPtrFromPtr =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::Code => Target::ForeignTy,
LangItem::Drop => Target::Trait,
LangItem::Destruct => Target::Trait,
LangItem::AsyncDrop => Target::Trait,
LangItem::AsyncDropInPlace => Target::Fn,
LangItem::CoerceUnsized => Target::Trait,
LangItem::DispatchFromDyn => Target::Trait,
LangItem::TryAsDyn => Target::Trait,
LangItem::TransmuteOpts => Target::Struct,
LangItem::TransmuteTrait => Target::Trait,
LangItem::Add => Target::Trait,
LangItem::Sub => Target::Trait,
LangItem::Mul => Target::Trait,
LangItem::Div => Target::Trait,
LangItem::Rem => Target::Trait,
LangItem::Neg => Target::Trait,
LangItem::Not => Target::Trait,
LangItem::BitXor => Target::Trait,
LangItem::BitAnd => Target::Trait,
LangItem::BitOr => Target::Trait,
LangItem::Shl => Target::Trait,
LangItem::Shr => Target::Trait,
LangItem::AddAssign => Target::Trait,
LangItem::SubAssign => Target::Trait,
LangItem::MulAssign => Target::Trait,
LangItem::DivAssign => Target::Trait,
LangItem::RemAssign => Target::Trait,
LangItem::BitXorAssign => Target::Trait,
LangItem::BitAndAssign => Target::Trait,
LangItem::BitOrAssign => Target::Trait,
LangItem::ShlAssign => Target::Trait,
LangItem::ShrAssign => Target::Trait,
LangItem::Index => Target::Trait,
LangItem::IndexMut => Target::Trait,
LangItem::UnsafeCell => Target::Struct,
LangItem::CovariantUnsafeCell => Target::Struct,
LangItem::UnsafePinned => Target::Struct,
LangItem::VaArgSafe => Target::Trait,
LangItem::VaList => Target::Struct,
LangItem::Complex => Target::Struct,
LangItem::PpcF128 => Target::Struct,
LangItem::Deref => Target::Trait,
LangItem::DerefMut => Target::Trait,
LangItem::DerefPure => Target::Trait,
LangItem::DerefTarget => Target::AssocTy(AssocCtxt::Trait),
LangItem::Receiver => Target::Trait,
LangItem::ReceiverTarget => Target::AssocTy(AssocCtxt::Trait),
LangItem::LegacyReceiver => Target::Trait,
LangItem::Fn => Target::Trait,
LangItem::FnMut => Target::Trait,
LangItem::FnOnce => Target::Trait,
LangItem::FnStatic => Target::Trait,
LangItem::AsyncFn => Target::Trait,
LangItem::AsyncFnMut => Target::Trait,
LangItem::AsyncFnOnce => Target::Trait,
LangItem::AsyncFnOnceOutput => Target::AssocTy(AssocCtxt::Trait),
LangItem::CallOnceFuture => Target::AssocTy(AssocCtxt::Trait),
LangItem::CallRefFuture => Target::AssocTy(AssocCtxt::Trait),
LangItem::AsyncFnKindHelper => Target::Trait,
LangItem::AsyncFnKindUpvars => Target::AssocTy(AssocCtxt::Trait),
LangItem::FnOnceOutput => Target::AssocTy(AssocCtxt::Trait),
LangItem::Iterator => Target::Trait,
LangItem::FusedIterator => Target::Trait,
LangItem::Future => Target::Trait,
LangItem::FutureOutput => Target::AssocTy(AssocCtxt::Trait),
LangItem::AsyncIterator => Target::Trait,
LangItem::CoroutineState => Target::Enum,
LangItem::Coroutine => Target::Trait,
LangItem::CoroutineReturn => Target::AssocTy(AssocCtxt::Trait),
LangItem::CoroutineYield => Target::AssocTy(AssocCtxt::Trait),
LangItem::CoroutineResume =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::Unpin => Target::Trait,
LangItem::Pin => Target::Struct,
LangItem::OrderingEnum => Target::Enum,
LangItem::PartialEq => Target::Trait,
LangItem::PartialOrd => Target::Trait,
LangItem::CVoid => Target::Enum,
LangItem::F16B => Target::Struct,
LangItem::Type => Target::Struct,
LangItem::TypeGeneric => Target::Enum,
LangItem::TypeId => Target::Struct,
LangItem::Panic => Target::Fn,
LangItem::PanicNounwind => Target::Fn,
LangItem::PanicFmt => Target::Fn,
LangItem::PanicDisplay => Target::Fn,
LangItem::ConstPanicFmt => Target::Fn,
LangItem::PanicBoundsCheck => Target::Fn,
LangItem::PanicMisalignedPointerDereference => Target::Fn,
LangItem::PanicInfo => Target::Struct,
LangItem::PanicLocation => Target::Struct,
LangItem::PanicImpl => Target::ForeignFn,
LangItem::PanicCannotUnwind => Target::Fn,
LangItem::PanicInCleanup => Target::Fn,
LangItem::PanicAddOverflow => Target::Fn,
LangItem::PanicSubOverflow => Target::Fn,
LangItem::PanicMulOverflow => Target::Fn,
LangItem::PanicDivOverflow => Target::Fn,
LangItem::PanicRemOverflow => Target::Fn,
LangItem::PanicNegOverflow => Target::Fn,
LangItem::PanicShrOverflow => Target::Fn,
LangItem::PanicShlOverflow => Target::Fn,
LangItem::PanicDivZero => Target::Fn,
LangItem::PanicRemZero => Target::Fn,
LangItem::PanicCoroutineResumed => Target::Fn,
LangItem::PanicAsyncFnResumed => Target::Fn,
LangItem::PanicAsyncGenFnResumed => Target::Fn,
LangItem::PanicGenFnNone => Target::Fn,
LangItem::PanicCoroutineResumedPanic => Target::Fn,
LangItem::PanicAsyncFnResumedPanic => Target::Fn,
LangItem::PanicAsyncGenFnResumedPanic => Target::Fn,
LangItem::PanicGenFnNonePanic => Target::Fn,
LangItem::PanicNullPointerDereference => Target::Fn,
LangItem::PanicNullReferenceConstructed => Target::Fn,
LangItem::PanicInvalidEnumConstruction => Target::Fn,
LangItem::PanicCoroutineResumedDrop => Target::Fn,
LangItem::PanicAsyncFnResumedDrop => Target::Fn,
LangItem::PanicAsyncGenFnResumedDrop => Target::Fn,
LangItem::PanicGenFnNoneDrop => Target::Fn,
LangItem::BeginPanic => Target::Fn,
LangItem::FormatArgument => Target::Struct,
LangItem::FormatArguments => Target::Struct,
LangItem::DropGlue => Target::Fn,
LangItem::AllocLayout => Target::Struct,
LangItem::Start => Target::Fn,
LangItem::EhPersonality => Target::Fn,
LangItem::CompilerMove => Target::Fn,
LangItem::CompilerCopy => Target::Fn,
LangItem::OwnedBox => Target::Struct,
LangItem::GlobalAlloc => Target::Struct,
LangItem::PhantomData => Target::Struct,
LangItem::ManuallyDrop => Target::Struct,
LangItem::MaybeDangling => Target::Struct,
LangItem::BikeshedGuaranteedNoDrop => Target::Trait,
LangItem::MaybeUninit => Target::Union,
LangItem::Termination => Target::Trait,
LangItem::Try => Target::Trait,
LangItem::Tuple => Target::Trait,
LangItem::SliceLen => Target::Method(MethodKind::Inherent),
LangItem::TryTraitFromResidual =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::TryTraitFromOutput =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::TryTraitBranch =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::TryTraitFromYeet => Target::Fn,
LangItem::ResidualIntoTryType => Target::Fn,
LangItem::CoercePointeeValidated => Target::Trait,
LangItem::ConstParamTy => Target::Trait,
LangItem::Poll => Target::Enum,
LangItem::PollReady => Target::Variant,
LangItem::PollPending => Target::Variant,
LangItem::AsyncGenReady => Target::Method(MethodKind::Inherent),
LangItem::AsyncGenPending =>
Target::AssocConst(AssocCtxt::Impl { of_trait: false }),
LangItem::AsyncGenFinished =>
Target::AssocConst(AssocCtxt::Impl { of_trait: false }),
LangItem::ResumeTy => Target::Struct,
LangItem::GetContext => Target::Fn,
LangItem::Context => Target::Struct,
LangItem::FuturePoll =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::AsyncIteratorPollNext =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::IntoAsyncIterIntoIter =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::Option => Target::Enum,
LangItem::OptionSome => Target::Variant,
LangItem::OptionNone => Target::Variant,
LangItem::ResultOk => Target::Variant,
LangItem::ResultErr => Target::Variant,
LangItem::ControlFlowContinue => Target::Variant,
LangItem::ControlFlowBreak => Target::Variant,
LangItem::IntoFutureIntoFuture =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::IntoIterIntoIter =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::IteratorNext =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::PinNewUnchecked => Target::Method(MethodKind::Inherent),
LangItem::RangeFrom => Target::Struct,
LangItem::RangeFull => Target::Struct,
LangItem::RangeInclusiveStruct => Target::Struct,
LangItem::RangeInclusiveNew =>
Target::Method(MethodKind::Inherent),
LangItem::Range => Target::Struct,
LangItem::RangeToInclusive => Target::Struct,
LangItem::RangeTo => Target::Struct,
LangItem::RangeMax => Target::AssocConst(AssocCtxt::Trait),
LangItem::RangeMin => Target::AssocConst(AssocCtxt::Trait),
LangItem::RangeSub =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::RangeFromCopy => Target::Struct,
LangItem::RangeCopy => Target::Struct,
LangItem::RangeInclusiveCopy => Target::Struct,
LangItem::RangeToInclusiveCopy => Target::Struct,
LangItem::String => Target::Struct,
LangItem::CStr => Target::Struct,
LangItem::ContractBuildCheckEnsures => Target::Fn,
LangItem::ContractCheckRequires => Target::Fn,
LangItem::DefaultTrait4 => Target::Trait,
LangItem::DefaultTrait3 => Target::Trait,
LangItem::DefaultTrait2 => Target::Trait,
LangItem::DefaultTrait1 => Target::Trait,
LangItem::ContractCheckEnsures => Target::Fn,
LangItem::Reborrow => Target::Trait,
LangItem::CoerceShared => Target::Trait,
LangItem::FieldRepresentingType => Target::Struct,
LangItem::Field => Target::Trait,
LangItem::FieldBase => Target::AssocTy(AssocCtxt::Trait),
LangItem::FieldType => Target::AssocTy(AssocCtxt::Trait),
LangItem::FieldOffset => Target::AssocConst(AssocCtxt::Trait),
LangItem::From => Target::Trait,
LangItem::FromFn =>
Target::Method(MethodKind::Trait { body: false }),
LangItem::FnPtr => Target::Struct,
}
}
pub fn required_generics(&self) -> GenericRequirement {
match self {
LangItem::Sized => GenericRequirement::Exact(0),
LangItem::MetaSized => GenericRequirement::Exact(0),
LangItem::PointeeSized => GenericRequirement::Exact(0),
LangItem::Unsize => GenericRequirement::Minimum(1),
LangItem::AlignOf => GenericRequirement::Exact(0),
LangItem::SizeOf => GenericRequirement::Exact(0),
LangItem::OffsetOf => GenericRequirement::Exact(1),
LangItem::StructuralPeq => GenericRequirement::None,
LangItem::Copy => GenericRequirement::Exact(0),
LangItem::Clone => GenericRequirement::None,
LangItem::CloneFn => GenericRequirement::None,
LangItem::UseCloned => GenericRequirement::None,
LangItem::TrivialClone => GenericRequirement::None,
LangItem::Sync => GenericRequirement::Exact(0),
LangItem::DiscriminantKind => GenericRequirement::None,
LangItem::Discriminant => GenericRequirement::None,
LangItem::PointeeTrait => GenericRequirement::None,
LangItem::Metadata => GenericRequirement::None,
LangItem::DynMetadata => GenericRequirement::None,
LangItem::NonNull => GenericRequirement::Exact(1),
LangItem::Freeze => GenericRequirement::Exact(0),
LangItem::UnsafeUnpin => GenericRequirement::Exact(0),
LangItem::FnPtrTrait => GenericRequirement::Exact(0),
LangItem::FnPtrAsPtr => GenericRequirement::None,
LangItem::FnPtrFromPtr => GenericRequirement::None,
LangItem::Code => GenericRequirement::None,
LangItem::Drop => GenericRequirement::None,
LangItem::Destruct => GenericRequirement::None,
LangItem::AsyncDrop => GenericRequirement::None,
LangItem::AsyncDropInPlace => GenericRequirement::Exact(1),
LangItem::CoerceUnsized => GenericRequirement::Minimum(1),
LangItem::DispatchFromDyn => GenericRequirement::Minimum(1),
LangItem::TryAsDyn => GenericRequirement::Exact(1),
LangItem::TransmuteOpts => GenericRequirement::Exact(0),
LangItem::TransmuteTrait => GenericRequirement::Exact(2),
LangItem::Add => GenericRequirement::Exact(1),
LangItem::Sub => GenericRequirement::Exact(1),
LangItem::Mul => GenericRequirement::Exact(1),
LangItem::Div => GenericRequirement::Exact(1),
LangItem::Rem => GenericRequirement::Exact(1),
LangItem::Neg => GenericRequirement::Exact(0),
LangItem::Not => GenericRequirement::Exact(0),
LangItem::BitXor => GenericRequirement::Exact(1),
LangItem::BitAnd => GenericRequirement::Exact(1),
LangItem::BitOr => GenericRequirement::Exact(1),
LangItem::Shl => GenericRequirement::Exact(1),
LangItem::Shr => GenericRequirement::Exact(1),
LangItem::AddAssign => GenericRequirement::Exact(1),
LangItem::SubAssign => GenericRequirement::Exact(1),
LangItem::MulAssign => GenericRequirement::Exact(1),
LangItem::DivAssign => GenericRequirement::Exact(1),
LangItem::RemAssign => GenericRequirement::Exact(1),
LangItem::BitXorAssign => GenericRequirement::Exact(1),
LangItem::BitAndAssign => GenericRequirement::Exact(1),
LangItem::BitOrAssign => GenericRequirement::Exact(1),
LangItem::ShlAssign => GenericRequirement::Exact(1),
LangItem::ShrAssign => GenericRequirement::Exact(1),
LangItem::Index => GenericRequirement::Exact(1),
LangItem::IndexMut => GenericRequirement::Exact(1),
LangItem::UnsafeCell => GenericRequirement::None,
LangItem::CovariantUnsafeCell => GenericRequirement::Exact(1),
LangItem::UnsafePinned => GenericRequirement::None,
LangItem::VaArgSafe => GenericRequirement::None,
LangItem::VaList => GenericRequirement::None,
LangItem::Complex => GenericRequirement::Exact(1),
LangItem::PpcF128 => GenericRequirement::None,
LangItem::Deref => GenericRequirement::Exact(0),
LangItem::DerefMut => GenericRequirement::Exact(0),
LangItem::DerefPure => GenericRequirement::Exact(0),
LangItem::DerefTarget => GenericRequirement::None,
LangItem::Receiver => GenericRequirement::None,
LangItem::ReceiverTarget => GenericRequirement::None,
LangItem::LegacyReceiver => GenericRequirement::None,
LangItem::Fn => GenericRequirement::Exact(1),
LangItem::FnMut => GenericRequirement::Exact(1),
LangItem::FnOnce => GenericRequirement::Exact(1),
LangItem::FnStatic => GenericRequirement::Exact(1),
LangItem::AsyncFn => GenericRequirement::Exact(1),
LangItem::AsyncFnMut => GenericRequirement::Exact(1),
LangItem::AsyncFnOnce => GenericRequirement::Exact(1),
LangItem::AsyncFnOnceOutput => GenericRequirement::Exact(1),
LangItem::CallOnceFuture => GenericRequirement::Exact(1),
LangItem::CallRefFuture => GenericRequirement::Exact(2),
LangItem::AsyncFnKindHelper => GenericRequirement::Exact(1),
LangItem::AsyncFnKindUpvars => GenericRequirement::Exact(5),
LangItem::FnOnceOutput => GenericRequirement::None,
LangItem::Iterator => GenericRequirement::Exact(0),
LangItem::FusedIterator => GenericRequirement::Exact(0),
LangItem::Future => GenericRequirement::Exact(0),
LangItem::FutureOutput => GenericRequirement::Exact(0),
LangItem::AsyncIterator => GenericRequirement::Exact(0),
LangItem::CoroutineState => GenericRequirement::None,
LangItem::Coroutine => GenericRequirement::Exact(1),
LangItem::CoroutineReturn => GenericRequirement::Exact(1),
LangItem::CoroutineYield => GenericRequirement::Exact(1),
LangItem::CoroutineResume => GenericRequirement::None,
LangItem::Unpin => GenericRequirement::None,
LangItem::Pin => GenericRequirement::None,
LangItem::OrderingEnum => GenericRequirement::Exact(0),
LangItem::PartialEq => GenericRequirement::Exact(1),
LangItem::PartialOrd => GenericRequirement::Exact(1),
LangItem::CVoid => GenericRequirement::None,
LangItem::F16B => GenericRequirement::Exact(0),
LangItem::Type => GenericRequirement::None,
LangItem::TypeGeneric => GenericRequirement::None,
LangItem::TypeId => GenericRequirement::None,
LangItem::Panic => GenericRequirement::Exact(0),
LangItem::PanicNounwind => GenericRequirement::Exact(0),
LangItem::PanicFmt => GenericRequirement::None,
LangItem::PanicDisplay => GenericRequirement::None,
LangItem::ConstPanicFmt => GenericRequirement::None,
LangItem::PanicBoundsCheck => GenericRequirement::Exact(0),
LangItem::PanicMisalignedPointerDereference =>
GenericRequirement::Exact(0),
LangItem::PanicInfo => GenericRequirement::None,
LangItem::PanicLocation => GenericRequirement::None,
LangItem::PanicImpl => GenericRequirement::None,
LangItem::PanicCannotUnwind => GenericRequirement::Exact(0),
LangItem::PanicInCleanup => GenericRequirement::Exact(0),
LangItem::PanicAddOverflow => GenericRequirement::None,
LangItem::PanicSubOverflow => GenericRequirement::None,
LangItem::PanicMulOverflow => GenericRequirement::None,
LangItem::PanicDivOverflow => GenericRequirement::None,
LangItem::PanicRemOverflow => GenericRequirement::None,
LangItem::PanicNegOverflow => GenericRequirement::None,
LangItem::PanicShrOverflow => GenericRequirement::None,
LangItem::PanicShlOverflow => GenericRequirement::None,
LangItem::PanicDivZero => GenericRequirement::None,
LangItem::PanicRemZero => GenericRequirement::None,
LangItem::PanicCoroutineResumed => GenericRequirement::None,
LangItem::PanicAsyncFnResumed => GenericRequirement::None,
LangItem::PanicAsyncGenFnResumed => GenericRequirement::None,
LangItem::PanicGenFnNone => GenericRequirement::None,
LangItem::PanicCoroutineResumedPanic => GenericRequirement::None,
LangItem::PanicAsyncFnResumedPanic => GenericRequirement::None,
LangItem::PanicAsyncGenFnResumedPanic => GenericRequirement::None,
LangItem::PanicGenFnNonePanic => GenericRequirement::None,
LangItem::PanicNullPointerDereference => GenericRequirement::None,
LangItem::PanicNullReferenceConstructed =>
GenericRequirement::None,
LangItem::PanicInvalidEnumConstruction =>
GenericRequirement::None,
LangItem::PanicCoroutineResumedDrop => GenericRequirement::None,
LangItem::PanicAsyncFnResumedDrop => GenericRequirement::None,
LangItem::PanicAsyncGenFnResumedDrop => GenericRequirement::None,
LangItem::PanicGenFnNoneDrop => GenericRequirement::None,
LangItem::BeginPanic => GenericRequirement::None,
LangItem::FormatArgument => GenericRequirement::None,
LangItem::FormatArguments => GenericRequirement::None,
LangItem::DropGlue => GenericRequirement::Exact(1),
LangItem::AllocLayout => GenericRequirement::None,
LangItem::Start => GenericRequirement::Exact(1),
LangItem::EhPersonality => GenericRequirement::None,
LangItem::CompilerMove => GenericRequirement::Exact(2),
LangItem::CompilerCopy => GenericRequirement::Exact(2),
LangItem::OwnedBox => GenericRequirement::Minimum(1),
LangItem::GlobalAlloc => GenericRequirement::None,
LangItem::PhantomData => GenericRequirement::Exact(1),
LangItem::ManuallyDrop => GenericRequirement::Exact(1),
LangItem::MaybeDangling => GenericRequirement::Exact(1),
LangItem::BikeshedGuaranteedNoDrop =>
GenericRequirement::Exact(0),
LangItem::MaybeUninit => GenericRequirement::None,
LangItem::Termination => GenericRequirement::None,
LangItem::Try => GenericRequirement::None,
LangItem::Tuple => GenericRequirement::Exact(0),
LangItem::SliceLen => GenericRequirement::None,
LangItem::TryTraitFromResidual => GenericRequirement::None,
LangItem::TryTraitFromOutput => GenericRequirement::None,
LangItem::TryTraitBranch => GenericRequirement::None,
LangItem::TryTraitFromYeet => GenericRequirement::None,
LangItem::ResidualIntoTryType => GenericRequirement::None,
LangItem::CoercePointeeValidated => GenericRequirement::Exact(0),
LangItem::ConstParamTy => GenericRequirement::Exact(0),
LangItem::Poll => GenericRequirement::None,
LangItem::PollReady => GenericRequirement::None,
LangItem::PollPending => GenericRequirement::None,
LangItem::AsyncGenReady => GenericRequirement::Exact(1),
LangItem::AsyncGenPending => GenericRequirement::Exact(1),
LangItem::AsyncGenFinished => GenericRequirement::Exact(1),
LangItem::ResumeTy => GenericRequirement::None,
LangItem::GetContext => GenericRequirement::None,
LangItem::Context => GenericRequirement::None,
LangItem::FuturePoll => GenericRequirement::None,
LangItem::AsyncIteratorPollNext => GenericRequirement::Exact(0),
LangItem::IntoAsyncIterIntoIter => GenericRequirement::Exact(0),
LangItem::Option => GenericRequirement::None,
LangItem::OptionSome => GenericRequirement::None,
LangItem::OptionNone => GenericRequirement::None,
LangItem::ResultOk => GenericRequirement::None,
LangItem::ResultErr => GenericRequirement::None,
LangItem::ControlFlowContinue => GenericRequirement::None,
LangItem::ControlFlowBreak => GenericRequirement::None,
LangItem::IntoFutureIntoFuture => GenericRequirement::None,
LangItem::IntoIterIntoIter => GenericRequirement::None,
LangItem::IteratorNext => GenericRequirement::None,
LangItem::PinNewUnchecked => GenericRequirement::None,
LangItem::RangeFrom => GenericRequirement::None,
LangItem::RangeFull => GenericRequirement::None,
LangItem::RangeInclusiveStruct => GenericRequirement::None,
LangItem::RangeInclusiveNew => GenericRequirement::None,
LangItem::Range => GenericRequirement::None,
LangItem::RangeToInclusive => GenericRequirement::None,
LangItem::RangeTo => GenericRequirement::None,
LangItem::RangeMax => GenericRequirement::Exact(0),
LangItem::RangeMin => GenericRequirement::Exact(0),
LangItem::RangeSub => GenericRequirement::Exact(0),
LangItem::RangeFromCopy => GenericRequirement::None,
LangItem::RangeCopy => GenericRequirement::None,
LangItem::RangeInclusiveCopy => GenericRequirement::None,
LangItem::RangeToInclusiveCopy => GenericRequirement::None,
LangItem::String => GenericRequirement::None,
LangItem::CStr => GenericRequirement::None,
LangItem::ContractBuildCheckEnsures => GenericRequirement::None,
LangItem::ContractCheckRequires => GenericRequirement::None,
LangItem::DefaultTrait4 => GenericRequirement::None,
LangItem::DefaultTrait3 => GenericRequirement::None,
LangItem::DefaultTrait2 => GenericRequirement::None,
LangItem::DefaultTrait1 => GenericRequirement::None,
LangItem::ContractCheckEnsures => GenericRequirement::None,
LangItem::Reborrow => GenericRequirement::Exact(0),
LangItem::CoerceShared => GenericRequirement::Exact(1),
LangItem::FieldRepresentingType => GenericRequirement::Exact(3),
LangItem::Field => GenericRequirement::Exact(0),
LangItem::FieldBase => GenericRequirement::Exact(0),
LangItem::FieldType => GenericRequirement::Exact(0),
LangItem::FieldOffset => GenericRequirement::Exact(0),
LangItem::From => GenericRequirement::Exact(1),
LangItem::FromFn => GenericRequirement::None,
LangItem::FnPtr => GenericRequirement::None,
}
}
}
impl LanguageItems {
#[doc =
"Returns the [`DefId`] of the `sized` lang item if it is defined."]
pub fn sized_trait(&self) -> Option<DefId> {
self.items[LangItem::Sized as usize]
}
#[doc =
"Returns the [`DefId`] of the `meta_sized` lang item if it is defined."]
pub fn meta_sized_trait(&self) -> Option<DefId> {
self.items[LangItem::MetaSized as usize]
}
#[doc =
"Returns the [`DefId`] of the `pointee_sized` lang item if it is defined."]
pub fn pointee_sized_trait(&self) -> Option<DefId> {
self.items[LangItem::PointeeSized as usize]
}
#[doc =
"Returns the [`DefId`] of the `unsize` lang item if it is defined."]
pub fn unsize_trait(&self) -> Option<DefId> {
self.items[LangItem::Unsize as usize]
}
#[doc =
"Returns the [`DefId`] of the `mem_align_const` lang item if it is defined."]
pub fn align_const(&self) -> Option<DefId> {
self.items[LangItem::AlignOf as usize]
}
#[doc =
"Returns the [`DefId`] of the `mem_size_const` lang item if it is defined."]
pub fn size_const(&self) -> Option<DefId> {
self.items[LangItem::SizeOf as usize]
}
#[doc =
"Returns the [`DefId`] of the `offset_of` lang item if it is defined."]
pub fn offset_of(&self) -> Option<DefId> {
self.items[LangItem::OffsetOf as usize]
}
#[doc =
"Returns the [`DefId`] of the `structural_peq` lang item if it is defined."]
pub fn structural_peq_trait(&self) -> Option<DefId> {
self.items[LangItem::StructuralPeq as usize]
}
#[doc = "Returns the [`DefId`] of the `copy` lang item if it is defined."]
pub fn copy_trait(&self) -> Option<DefId> {
self.items[LangItem::Copy as usize]
}
#[doc =
"Returns the [`DefId`] of the `clone` lang item if it is defined."]
pub fn clone_trait(&self) -> Option<DefId> {
self.items[LangItem::Clone as usize]
}
#[doc =
"Returns the [`DefId`] of the `clone_fn` lang item if it is defined."]
pub fn clone_fn(&self) -> Option<DefId> {
self.items[LangItem::CloneFn as usize]
}
#[doc =
"Returns the [`DefId`] of the `use_cloned` lang item if it is defined."]
pub fn use_cloned_trait(&self) -> Option<DefId> {
self.items[LangItem::UseCloned as usize]
}
#[doc =
"Returns the [`DefId`] of the `trivial_clone` lang item if it is defined."]
pub fn trivial_clone_trait(&self) -> Option<DefId> {
self.items[LangItem::TrivialClone as usize]
}
#[doc = "Returns the [`DefId`] of the `sync` lang item if it is defined."]
pub fn sync_trait(&self) -> Option<DefId> {
self.items[LangItem::Sync as usize]
}
#[doc =
"Returns the [`DefId`] of the `discriminant_kind` lang item if it is defined."]
pub fn discriminant_kind_trait(&self) -> Option<DefId> {
self.items[LangItem::DiscriminantKind as usize]
}
#[doc =
"Returns the [`DefId`] of the `discriminant_type` lang item if it is defined."]
pub fn discriminant_type(&self) -> Option<DefId> {
self.items[LangItem::Discriminant as usize]
}
#[doc =
"Returns the [`DefId`] of the `pointee_trait` lang item if it is defined."]
pub fn pointee_trait(&self) -> Option<DefId> {
self.items[LangItem::PointeeTrait as usize]
}
#[doc =
"Returns the [`DefId`] of the `metadata_type` lang item if it is defined."]
pub fn metadata_type(&self) -> Option<DefId> {
self.items[LangItem::Metadata as usize]
}
#[doc =
"Returns the [`DefId`] of the `dyn_metadata` lang item if it is defined."]
pub fn dyn_metadata(&self) -> Option<DefId> {
self.items[LangItem::DynMetadata as usize]
}
#[doc =
"Returns the [`DefId`] of the `non_null` lang item if it is defined."]
pub fn non_null_trait(&self) -> Option<DefId> {
self.items[LangItem::NonNull as usize]
}
#[doc =
"Returns the [`DefId`] of the `freeze` lang item if it is defined."]
pub fn freeze_trait(&self) -> Option<DefId> {
self.items[LangItem::Freeze as usize]
}
#[doc =
"Returns the [`DefId`] of the `unsafe_unpin` lang item if it is defined."]
pub fn unsafe_unpin_trait(&self) -> Option<DefId> {
self.items[LangItem::UnsafeUnpin as usize]
}
#[doc =
"Returns the [`DefId`] of the `fn_ptr_trait` lang item if it is defined."]
pub fn fn_ptr_trait(&self) -> Option<DefId> {
self.items[LangItem::FnPtrTrait as usize]
}
#[doc =
"Returns the [`DefId`] of the `fn_ptr_as_ptr` lang item if it is defined."]
pub fn fn_ptr_as_ptr(&self) -> Option<DefId> {
self.items[LangItem::FnPtrAsPtr as usize]
}
#[doc =
"Returns the [`DefId`] of the `fn_ptr_from_ptr` lang item if it is defined."]
pub fn fn_ptr_from_ptr(&self) -> Option<DefId> {
self.items[LangItem::FnPtrFromPtr as usize]
}
#[doc = "Returns the [`DefId`] of the `code` lang item if it is defined."]
pub fn code(&self) -> Option<DefId> {
self.items[LangItem::Code as usize]
}
#[doc = "Returns the [`DefId`] of the `drop` lang item if it is defined."]
pub fn drop_trait(&self) -> Option<DefId> {
self.items[LangItem::Drop as usize]
}
#[doc =
"Returns the [`DefId`] of the `destruct` lang item if it is defined."]
pub fn destruct_trait(&self) -> Option<DefId> {
self.items[LangItem::Destruct as usize]
}
#[doc =
"Returns the [`DefId`] of the `async_drop` lang item if it is defined."]
pub fn async_drop_trait(&self) -> Option<DefId> {
self.items[LangItem::AsyncDrop as usize]
}
#[doc =
"Returns the [`DefId`] of the `async_drop_in_place` lang item if it is defined."]
pub fn async_drop_in_place_fn(&self) -> Option<DefId> {
self.items[LangItem::AsyncDropInPlace as usize]
}
#[doc =
"Returns the [`DefId`] of the `coerce_unsized` lang item if it is defined."]
pub fn coerce_unsized_trait(&self) -> Option<DefId> {
self.items[LangItem::CoerceUnsized as usize]
}
#[doc =
"Returns the [`DefId`] of the `dispatch_from_dyn` lang item if it is defined."]
pub fn dispatch_from_dyn_trait(&self) -> Option<DefId> {
self.items[LangItem::DispatchFromDyn as usize]
}
#[doc =
"Returns the [`DefId`] of the `try_as_dyn` lang item if it is defined."]
pub fn try_as_dyn(&self) -> Option<DefId> {
self.items[LangItem::TryAsDyn as usize]
}
#[doc =
"Returns the [`DefId`] of the `transmute_opts` lang item if it is defined."]
pub fn transmute_opts(&self) -> Option<DefId> {
self.items[LangItem::TransmuteOpts as usize]
}
#[doc =
"Returns the [`DefId`] of the `transmute_trait` lang item if it is defined."]
pub fn transmute_trait(&self) -> Option<DefId> {
self.items[LangItem::TransmuteTrait as usize]
}
#[doc = "Returns the [`DefId`] of the `add` lang item if it is defined."]
pub fn add_trait(&self) -> Option<DefId> {
self.items[LangItem::Add as usize]
}
#[doc = "Returns the [`DefId`] of the `sub` lang item if it is defined."]
pub fn sub_trait(&self) -> Option<DefId> {
self.items[LangItem::Sub as usize]
}
#[doc = "Returns the [`DefId`] of the `mul` lang item if it is defined."]
pub fn mul_trait(&self) -> Option<DefId> {
self.items[LangItem::Mul as usize]
}
#[doc = "Returns the [`DefId`] of the `div` lang item if it is defined."]
pub fn div_trait(&self) -> Option<DefId> {
self.items[LangItem::Div as usize]
}
#[doc = "Returns the [`DefId`] of the `rem` lang item if it is defined."]
pub fn rem_trait(&self) -> Option<DefId> {
self.items[LangItem::Rem as usize]
}
#[doc = "Returns the [`DefId`] of the `neg` lang item if it is defined."]
pub fn neg_trait(&self) -> Option<DefId> {
self.items[LangItem::Neg as usize]
}
#[doc = "Returns the [`DefId`] of the `not` lang item if it is defined."]
pub fn not_trait(&self) -> Option<DefId> {
self.items[LangItem::Not as usize]
}
#[doc =
"Returns the [`DefId`] of the `bitxor` lang item if it is defined."]
pub fn bitxor_trait(&self) -> Option<DefId> {
self.items[LangItem::BitXor as usize]
}
#[doc =
"Returns the [`DefId`] of the `bitand` lang item if it is defined."]
pub fn bitand_trait(&self) -> Option<DefId> {
self.items[LangItem::BitAnd as usize]
}
#[doc =
"Returns the [`DefId`] of the `bitor` lang item if it is defined."]
pub fn bitor_trait(&self) -> Option<DefId> {
self.items[LangItem::BitOr as usize]
}
#[doc = "Returns the [`DefId`] of the `shl` lang item if it is defined."]
pub fn shl_trait(&self) -> Option<DefId> {
self.items[LangItem::Shl as usize]
}
#[doc = "Returns the [`DefId`] of the `shr` lang item if it is defined."]
pub fn shr_trait(&self) -> Option<DefId> {
self.items[LangItem::Shr as usize]
}
#[doc =
"Returns the [`DefId`] of the `add_assign` lang item if it is defined."]
pub fn add_assign_trait(&self) -> Option<DefId> {
self.items[LangItem::AddAssign as usize]
}
#[doc =
"Returns the [`DefId`] of the `sub_assign` lang item if it is defined."]
pub fn sub_assign_trait(&self) -> Option<DefId> {
self.items[LangItem::SubAssign as usize]
}
#[doc =
"Returns the [`DefId`] of the `mul_assign` lang item if it is defined."]
pub fn mul_assign_trait(&self) -> Option<DefId> {
self.items[LangItem::MulAssign as usize]
}
#[doc =
"Returns the [`DefId`] of the `div_assign` lang item if it is defined."]
pub fn div_assign_trait(&self) -> Option<DefId> {
self.items[LangItem::DivAssign as usize]
}
#[doc =
"Returns the [`DefId`] of the `rem_assign` lang item if it is defined."]
pub fn rem_assign_trait(&self) -> Option<DefId> {
self.items[LangItem::RemAssign as usize]
}
#[doc =
"Returns the [`DefId`] of the `bitxor_assign` lang item if it is defined."]
pub fn bitxor_assign_trait(&self) -> Option<DefId> {
self.items[LangItem::BitXorAssign as usize]
}
#[doc =
"Returns the [`DefId`] of the `bitand_assign` lang item if it is defined."]
pub fn bitand_assign_trait(&self) -> Option<DefId> {
self.items[LangItem::BitAndAssign as usize]
}
#[doc =
"Returns the [`DefId`] of the `bitor_assign` lang item if it is defined."]
pub fn bitor_assign_trait(&self) -> Option<DefId> {
self.items[LangItem::BitOrAssign as usize]
}
#[doc =
"Returns the [`DefId`] of the `shl_assign` lang item if it is defined."]
pub fn shl_assign_trait(&self) -> Option<DefId> {
self.items[LangItem::ShlAssign as usize]
}
#[doc =
"Returns the [`DefId`] of the `shr_assign` lang item if it is defined."]
pub fn shr_assign_trait(&self) -> Option<DefId> {
self.items[LangItem::ShrAssign as usize]
}
#[doc =
"Returns the [`DefId`] of the `index` lang item if it is defined."]
pub fn index_trait(&self) -> Option<DefId> {
self.items[LangItem::Index as usize]
}
#[doc =
"Returns the [`DefId`] of the `index_mut` lang item if it is defined."]
pub fn index_mut_trait(&self) -> Option<DefId> {
self.items[LangItem::IndexMut as usize]
}
#[doc =
"Returns the [`DefId`] of the `unsafe_cell` lang item if it is defined."]
pub fn unsafe_cell_type(&self) -> Option<DefId> {
self.items[LangItem::UnsafeCell as usize]
}
#[doc =
"Returns the [`DefId`] of the `covariant_unsafe_cell` lang item if it is defined."]
pub fn covariant_unsafe_cell_type(&self) -> Option<DefId> {
self.items[LangItem::CovariantUnsafeCell as usize]
}
#[doc =
"Returns the [`DefId`] of the `unsafe_pinned` lang item if it is defined."]
pub fn unsafe_pinned_type(&self) -> Option<DefId> {
self.items[LangItem::UnsafePinned as usize]
}
#[doc =
"Returns the [`DefId`] of the `va_arg_safe` lang item if it is defined."]
pub fn va_arg_safe(&self) -> Option<DefId> {
self.items[LangItem::VaArgSafe as usize]
}
#[doc =
"Returns the [`DefId`] of the `va_list` lang item if it is defined."]
pub fn va_list(&self) -> Option<DefId> {
self.items[LangItem::VaList as usize]
}
#[doc =
"Returns the [`DefId`] of the `complex` lang item if it is defined."]
pub fn complex(&self) -> Option<DefId> {
self.items[LangItem::Complex as usize]
}
#[doc =
"Returns the [`DefId`] of the `ppcf128` lang item if it is defined."]
pub fn ppcf128(&self) -> Option<DefId> {
self.items[LangItem::PpcF128 as usize]
}
#[doc =
"Returns the [`DefId`] of the `deref` lang item if it is defined."]
pub fn deref_trait(&self) -> Option<DefId> {
self.items[LangItem::Deref as usize]
}
#[doc =
"Returns the [`DefId`] of the `deref_mut` lang item if it is defined."]
pub fn deref_mut_trait(&self) -> Option<DefId> {
self.items[LangItem::DerefMut as usize]
}
#[doc =
"Returns the [`DefId`] of the `deref_pure` lang item if it is defined."]
pub fn deref_pure_trait(&self) -> Option<DefId> {
self.items[LangItem::DerefPure as usize]
}
#[doc =
"Returns the [`DefId`] of the `deref_target` lang item if it is defined."]
pub fn deref_target(&self) -> Option<DefId> {
self.items[LangItem::DerefTarget as usize]
}
#[doc =
"Returns the [`DefId`] of the `receiver` lang item if it is defined."]
pub fn receiver_trait(&self) -> Option<DefId> {
self.items[LangItem::Receiver as usize]
}
#[doc =
"Returns the [`DefId`] of the `receiver_target` lang item if it is defined."]
pub fn receiver_target(&self) -> Option<DefId> {
self.items[LangItem::ReceiverTarget as usize]
}
#[doc =
"Returns the [`DefId`] of the `legacy_receiver` lang item if it is defined."]
pub fn legacy_receiver_trait(&self) -> Option<DefId> {
self.items[LangItem::LegacyReceiver as usize]
}
#[doc = "Returns the [`DefId`] of the `Fn` lang item if it is defined."]
pub fn fn_trait(&self) -> Option<DefId> {
self.items[LangItem::Fn as usize]
}
#[doc =
"Returns the [`DefId`] of the `fn_mut` lang item if it is defined."]
pub fn fn_mut_trait(&self) -> Option<DefId> {
self.items[LangItem::FnMut as usize]
}
#[doc =
"Returns the [`DefId`] of the `fn_once` lang item if it is defined."]
pub fn fn_once_trait(&self) -> Option<DefId> {
self.items[LangItem::FnOnce as usize]
}
#[doc =
"Returns the [`DefId`] of the `fn_static` lang item if it is defined."]
pub fn fn_static_trait(&self) -> Option<DefId> {
self.items[LangItem::FnStatic as usize]
}
#[doc =
"Returns the [`DefId`] of the `async_fn` lang item if it is defined."]
pub fn async_fn_trait(&self) -> Option<DefId> {
self.items[LangItem::AsyncFn as usize]
}
#[doc =
"Returns the [`DefId`] of the `async_fn_mut` lang item if it is defined."]
pub fn async_fn_mut_trait(&self) -> Option<DefId> {
self.items[LangItem::AsyncFnMut as usize]
}
#[doc =
"Returns the [`DefId`] of the `async_fn_once` lang item if it is defined."]
pub fn async_fn_once_trait(&self) -> Option<DefId> {
self.items[LangItem::AsyncFnOnce as usize]
}
#[doc =
"Returns the [`DefId`] of the `async_fn_once_output` lang item if it is defined."]
pub fn async_fn_once_output(&self) -> Option<DefId> {
self.items[LangItem::AsyncFnOnceOutput as usize]
}
#[doc =
"Returns the [`DefId`] of the `call_once_future` lang item if it is defined."]
pub fn call_once_future(&self) -> Option<DefId> {
self.items[LangItem::CallOnceFuture as usize]
}
#[doc =
"Returns the [`DefId`] of the `call_ref_future` lang item if it is defined."]
pub fn call_ref_future(&self) -> Option<DefId> {
self.items[LangItem::CallRefFuture as usize]
}
#[doc =
"Returns the [`DefId`] of the `async_fn_kind_helper` lang item if it is defined."]
pub fn async_fn_kind_helper(&self) -> Option<DefId> {
self.items[LangItem::AsyncFnKindHelper as usize]
}
#[doc =
"Returns the [`DefId`] of the `async_fn_kind_upvars` lang item if it is defined."]
pub fn async_fn_kind_upvars(&self) -> Option<DefId> {
self.items[LangItem::AsyncFnKindUpvars as usize]
}
#[doc =
"Returns the [`DefId`] of the `fn_once_output` lang item if it is defined."]
pub fn fn_once_output(&self) -> Option<DefId> {
self.items[LangItem::FnOnceOutput as usize]
}
#[doc =
"Returns the [`DefId`] of the `iterator` lang item if it is defined."]
pub fn iterator_trait(&self) -> Option<DefId> {
self.items[LangItem::Iterator as usize]
}
#[doc =
"Returns the [`DefId`] of the `fused_iterator` lang item if it is defined."]
pub fn fused_iterator_trait(&self) -> Option<DefId> {
self.items[LangItem::FusedIterator as usize]
}
#[doc =
"Returns the [`DefId`] of the `future_trait` lang item if it is defined."]
pub fn future_trait(&self) -> Option<DefId> {
self.items[LangItem::Future as usize]
}
#[doc =
"Returns the [`DefId`] of the `future_output` lang item if it is defined."]
pub fn future_output(&self) -> Option<DefId> {
self.items[LangItem::FutureOutput as usize]
}
#[doc =
"Returns the [`DefId`] of the `async_iterator` lang item if it is defined."]
pub fn async_iterator_trait(&self) -> Option<DefId> {
self.items[LangItem::AsyncIterator as usize]
}
#[doc =
"Returns the [`DefId`] of the `coroutine_state` lang item if it is defined."]
pub fn coroutine_state(&self) -> Option<DefId> {
self.items[LangItem::CoroutineState as usize]
}
#[doc =
"Returns the [`DefId`] of the `coroutine` lang item if it is defined."]
pub fn coroutine_trait(&self) -> Option<DefId> {
self.items[LangItem::Coroutine as usize]
}
#[doc =
"Returns the [`DefId`] of the `coroutine_return` lang item if it is defined."]
pub fn coroutine_return(&self) -> Option<DefId> {
self.items[LangItem::CoroutineReturn as usize]
}
#[doc =
"Returns the [`DefId`] of the `coroutine_yield` lang item if it is defined."]
pub fn coroutine_yield(&self) -> Option<DefId> {
self.items[LangItem::CoroutineYield as usize]
}
#[doc =
"Returns the [`DefId`] of the `coroutine_resume` lang item if it is defined."]
pub fn coroutine_resume(&self) -> Option<DefId> {
self.items[LangItem::CoroutineResume as usize]
}
#[doc =
"Returns the [`DefId`] of the `unpin` lang item if it is defined."]
pub fn unpin_trait(&self) -> Option<DefId> {
self.items[LangItem::Unpin as usize]
}
#[doc = "Returns the [`DefId`] of the `Pin` lang item if it is defined."]
pub fn pin_type(&self) -> Option<DefId> {
self.items[LangItem::Pin as usize]
}
#[doc =
"Returns the [`DefId`] of the `Ordering` lang item if it is defined."]
pub fn ordering_enum(&self) -> Option<DefId> {
self.items[LangItem::OrderingEnum as usize]
}
#[doc = "Returns the [`DefId`] of the `eq` lang item if it is defined."]
pub fn eq_trait(&self) -> Option<DefId> {
self.items[LangItem::PartialEq as usize]
}
#[doc =
"Returns the [`DefId`] of the `partial_ord` lang item if it is defined."]
pub fn partial_ord_trait(&self) -> Option<DefId> {
self.items[LangItem::PartialOrd as usize]
}
#[doc =
"Returns the [`DefId`] of the `c_void` lang item if it is defined."]
pub fn c_void(&self) -> Option<DefId> {
self.items[LangItem::CVoid as usize]
}
#[doc = "Returns the [`DefId`] of the `f16b` lang item if it is defined."]
pub fn f16b(&self) -> Option<DefId> {
self.items[LangItem::F16B as usize]
}
#[doc =
"Returns the [`DefId`] of the `type_info` lang item if it is defined."]
pub fn type_struct(&self) -> Option<DefId> {
self.items[LangItem::Type as usize]
}
#[doc =
"Returns the [`DefId`] of the `type_info_generic` lang item if it is defined."]
pub fn type_generic(&self) -> Option<DefId> {
self.items[LangItem::TypeGeneric as usize]
}
#[doc =
"Returns the [`DefId`] of the `type_id` lang item if it is defined."]
pub fn type_id(&self) -> Option<DefId> {
self.items[LangItem::TypeId as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic` lang item if it is defined."]
pub fn panic_fn(&self) -> Option<DefId> {
self.items[LangItem::Panic as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_nounwind` lang item if it is defined."]
pub fn panic_nounwind(&self) -> Option<DefId> {
self.items[LangItem::PanicNounwind as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_fmt` lang item if it is defined."]
pub fn panic_fmt(&self) -> Option<DefId> {
self.items[LangItem::PanicFmt as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_display` lang item if it is defined."]
pub fn panic_display(&self) -> Option<DefId> {
self.items[LangItem::PanicDisplay as usize]
}
#[doc =
"Returns the [`DefId`] of the `const_panic_fmt` lang item if it is defined."]
pub fn const_panic_fmt(&self) -> Option<DefId> {
self.items[LangItem::ConstPanicFmt as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_bounds_check` lang item if it is defined."]
pub fn panic_bounds_check_fn(&self) -> Option<DefId> {
self.items[LangItem::PanicBoundsCheck as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_misaligned_pointer_dereference` lang item if it is defined."]
pub fn panic_misaligned_pointer_dereference_fn(&self) -> Option<DefId> {
self.items[LangItem::PanicMisalignedPointerDereference as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_info` lang item if it is defined."]
pub fn panic_info(&self) -> Option<DefId> {
self.items[LangItem::PanicInfo as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_location` lang item if it is defined."]
pub fn panic_location(&self) -> Option<DefId> {
self.items[LangItem::PanicLocation as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_impl` lang item if it is defined."]
pub fn panic_impl(&self) -> Option<DefId> {
self.items[LangItem::PanicImpl as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_cannot_unwind` lang item if it is defined."]
pub fn panic_cannot_unwind(&self) -> Option<DefId> {
self.items[LangItem::PanicCannotUnwind as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_in_cleanup` lang item if it is defined."]
pub fn panic_in_cleanup(&self) -> Option<DefId> {
self.items[LangItem::PanicInCleanup as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_add_overflow` lang item if it is defined."]
pub fn panic_const_add_overflow(&self) -> Option<DefId> {
self.items[LangItem::PanicAddOverflow as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_sub_overflow` lang item if it is defined."]
pub fn panic_const_sub_overflow(&self) -> Option<DefId> {
self.items[LangItem::PanicSubOverflow as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_mul_overflow` lang item if it is defined."]
pub fn panic_const_mul_overflow(&self) -> Option<DefId> {
self.items[LangItem::PanicMulOverflow as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_div_overflow` lang item if it is defined."]
pub fn panic_const_div_overflow(&self) -> Option<DefId> {
self.items[LangItem::PanicDivOverflow as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_rem_overflow` lang item if it is defined."]
pub fn panic_const_rem_overflow(&self) -> Option<DefId> {
self.items[LangItem::PanicRemOverflow as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_neg_overflow` lang item if it is defined."]
pub fn panic_const_neg_overflow(&self) -> Option<DefId> {
self.items[LangItem::PanicNegOverflow as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_shr_overflow` lang item if it is defined."]
pub fn panic_const_shr_overflow(&self) -> Option<DefId> {
self.items[LangItem::PanicShrOverflow as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_shl_overflow` lang item if it is defined."]
pub fn panic_const_shl_overflow(&self) -> Option<DefId> {
self.items[LangItem::PanicShlOverflow as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_div_by_zero` lang item if it is defined."]
pub fn panic_const_div_by_zero(&self) -> Option<DefId> {
self.items[LangItem::PanicDivZero as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_rem_by_zero` lang item if it is defined."]
pub fn panic_const_rem_by_zero(&self) -> Option<DefId> {
self.items[LangItem::PanicRemZero as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_coroutine_resumed` lang item if it is defined."]
pub fn panic_const_coroutine_resumed(&self) -> Option<DefId> {
self.items[LangItem::PanicCoroutineResumed as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_async_fn_resumed` lang item if it is defined."]
pub fn panic_const_async_fn_resumed(&self) -> Option<DefId> {
self.items[LangItem::PanicAsyncFnResumed as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_async_gen_fn_resumed` lang item if it is defined."]
pub fn panic_const_async_gen_fn_resumed(&self) -> Option<DefId> {
self.items[LangItem::PanicAsyncGenFnResumed as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_gen_fn_none` lang item if it is defined."]
pub fn panic_const_gen_fn_none(&self) -> Option<DefId> {
self.items[LangItem::PanicGenFnNone as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_coroutine_resumed_panic` lang item if it is defined."]
pub fn panic_const_coroutine_resumed_panic(&self) -> Option<DefId> {
self.items[LangItem::PanicCoroutineResumedPanic as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_async_fn_resumed_panic` lang item if it is defined."]
pub fn panic_const_async_fn_resumed_panic(&self) -> Option<DefId> {
self.items[LangItem::PanicAsyncFnResumedPanic as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_async_gen_fn_resumed_panic` lang item if it is defined."]
pub fn panic_const_async_gen_fn_resumed_panic(&self) -> Option<DefId> {
self.items[LangItem::PanicAsyncGenFnResumedPanic as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_gen_fn_none_panic` lang item if it is defined."]
pub fn panic_const_gen_fn_none_panic(&self) -> Option<DefId> {
self.items[LangItem::PanicGenFnNonePanic as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_null_pointer_dereference` lang item if it is defined."]
pub fn panic_null_pointer_dereference(&self) -> Option<DefId> {
self.items[LangItem::PanicNullPointerDereference as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_null_reference_constructed` lang item if it is defined."]
pub fn panic_null_reference_constructed(&self) -> Option<DefId> {
self.items[LangItem::PanicNullReferenceConstructed as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_invalid_enum_construction` lang item if it is defined."]
pub fn panic_invalid_enum_construction(&self) -> Option<DefId> {
self.items[LangItem::PanicInvalidEnumConstruction as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_coroutine_resumed_drop` lang item if it is defined."]
pub fn panic_const_coroutine_resumed_drop(&self) -> Option<DefId> {
self.items[LangItem::PanicCoroutineResumedDrop as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_async_fn_resumed_drop` lang item if it is defined."]
pub fn panic_const_async_fn_resumed_drop(&self) -> Option<DefId> {
self.items[LangItem::PanicAsyncFnResumedDrop as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_async_gen_fn_resumed_drop` lang item if it is defined."]
pub fn panic_const_async_gen_fn_resumed_drop(&self) -> Option<DefId> {
self.items[LangItem::PanicAsyncGenFnResumedDrop as usize]
}
#[doc =
"Returns the [`DefId`] of the `panic_const_gen_fn_none_drop` lang item if it is defined."]
pub fn panic_const_gen_fn_none_drop(&self) -> Option<DefId> {
self.items[LangItem::PanicGenFnNoneDrop as usize]
}
#[doc =
"Returns the [`DefId`] of the `begin_panic` lang item if it is defined."]
pub fn begin_panic_fn(&self) -> Option<DefId> {
self.items[LangItem::BeginPanic as usize]
}
#[doc =
"Returns the [`DefId`] of the `format_argument` lang item if it is defined."]
pub fn format_argument(&self) -> Option<DefId> {
self.items[LangItem::FormatArgument as usize]
}
#[doc =
"Returns the [`DefId`] of the `format_arguments` lang item if it is defined."]
pub fn format_arguments(&self) -> Option<DefId> {
self.items[LangItem::FormatArguments as usize]
}
#[doc =
"Returns the [`DefId`] of the `drop_glue` lang item if it is defined."]
pub fn drop_glue_fn(&self) -> Option<DefId> {
self.items[LangItem::DropGlue as usize]
}
#[doc =
"Returns the [`DefId`] of the `alloc_layout` lang item if it is defined."]
pub fn alloc_layout(&self) -> Option<DefId> {
self.items[LangItem::AllocLayout as usize]
}
#[doc =
"Returns the [`DefId`] of the `start` lang item if it is defined."]
pub fn start_fn(&self) -> Option<DefId> {
self.items[LangItem::Start as usize]
}
#[doc =
"Returns the [`DefId`] of the `eh_personality` lang item if it is defined."]
pub fn eh_personality(&self) -> Option<DefId> {
self.items[LangItem::EhPersonality as usize]
}
#[doc =
"Returns the [`DefId`] of the `compiler_move` lang item if it is defined."]
pub fn compiler_move_fn(&self) -> Option<DefId> {
self.items[LangItem::CompilerMove as usize]
}
#[doc =
"Returns the [`DefId`] of the `compiler_copy` lang item if it is defined."]
pub fn compiler_copy_fn(&self) -> Option<DefId> {
self.items[LangItem::CompilerCopy as usize]
}
#[doc =
"Returns the [`DefId`] of the `owned_box` lang item if it is defined."]
pub fn owned_box(&self) -> Option<DefId> {
self.items[LangItem::OwnedBox as usize]
}
#[doc =
"Returns the [`DefId`] of the `global_alloc_ty` lang item if it is defined."]
pub fn global_alloc_ty(&self) -> Option<DefId> {
self.items[LangItem::GlobalAlloc as usize]
}
#[doc =
"Returns the [`DefId`] of the `phantom_data` lang item if it is defined."]
pub fn phantom_data(&self) -> Option<DefId> {
self.items[LangItem::PhantomData as usize]
}
#[doc =
"Returns the [`DefId`] of the `manually_drop` lang item if it is defined."]
pub fn manually_drop(&self) -> Option<DefId> {
self.items[LangItem::ManuallyDrop as usize]
}
#[doc =
"Returns the [`DefId`] of the `maybe_dangling` lang item if it is defined."]
pub fn maybe_dangling(&self) -> Option<DefId> {
self.items[LangItem::MaybeDangling as usize]
}
#[doc =
"Returns the [`DefId`] of the `bikeshed_guaranteed_no_drop` lang item if it is defined."]
pub fn bikeshed_guaranteed_no_drop(&self) -> Option<DefId> {
self.items[LangItem::BikeshedGuaranteedNoDrop as usize]
}
#[doc =
"Returns the [`DefId`] of the `maybe_uninit` lang item if it is defined."]
pub fn maybe_uninit(&self) -> Option<DefId> {
self.items[LangItem::MaybeUninit as usize]
}
#[doc =
"Returns the [`DefId`] of the `termination` lang item if it is defined."]
pub fn termination(&self) -> Option<DefId> {
self.items[LangItem::Termination as usize]
}
#[doc = "Returns the [`DefId`] of the `Try` lang item if it is defined."]
pub fn try_trait(&self) -> Option<DefId> {
self.items[LangItem::Try as usize]
}
#[doc =
"Returns the [`DefId`] of the `tuple_trait` lang item if it is defined."]
pub fn tuple_trait(&self) -> Option<DefId> {
self.items[LangItem::Tuple as usize]
}
#[doc =
"Returns the [`DefId`] of the `slice_len_fn` lang item if it is defined."]
pub fn slice_len_fn(&self) -> Option<DefId> {
self.items[LangItem::SliceLen as usize]
}
#[doc =
"Returns the [`DefId`] of the `from_residual` lang item if it is defined."]
pub fn from_residual_fn(&self) -> Option<DefId> {
self.items[LangItem::TryTraitFromResidual as usize]
}
#[doc =
"Returns the [`DefId`] of the `from_output` lang item if it is defined."]
pub fn from_output_fn(&self) -> Option<DefId> {
self.items[LangItem::TryTraitFromOutput as usize]
}
#[doc =
"Returns the [`DefId`] of the `branch` lang item if it is defined."]
pub fn branch_fn(&self) -> Option<DefId> {
self.items[LangItem::TryTraitBranch as usize]
}
#[doc =
"Returns the [`DefId`] of the `from_yeet` lang item if it is defined."]
pub fn from_yeet_fn(&self) -> Option<DefId> {
self.items[LangItem::TryTraitFromYeet as usize]
}
#[doc =
"Returns the [`DefId`] of the `into_try_type` lang item if it is defined."]
pub fn into_try_type_fn(&self) -> Option<DefId> {
self.items[LangItem::ResidualIntoTryType as usize]
}
#[doc =
"Returns the [`DefId`] of the `coerce_pointee_validated` lang item if it is defined."]
pub fn coerce_pointee_validated_trait(&self) -> Option<DefId> {
self.items[LangItem::CoercePointeeValidated as usize]
}
#[doc =
"Returns the [`DefId`] of the `const_param_ty` lang item if it is defined."]
pub fn const_param_ty_trait(&self) -> Option<DefId> {
self.items[LangItem::ConstParamTy as usize]
}
#[doc = "Returns the [`DefId`] of the `Poll` lang item if it is defined."]
pub fn poll(&self) -> Option<DefId> {
self.items[LangItem::Poll as usize]
}
#[doc =
"Returns the [`DefId`] of the `Ready` lang item if it is defined."]
pub fn poll_ready_variant(&self) -> Option<DefId> {
self.items[LangItem::PollReady as usize]
}
#[doc =
"Returns the [`DefId`] of the `Pending` lang item if it is defined."]
pub fn poll_pending_variant(&self) -> Option<DefId> {
self.items[LangItem::PollPending as usize]
}
#[doc =
"Returns the [`DefId`] of the `AsyncGenReady` lang item if it is defined."]
pub fn async_gen_ready(&self) -> Option<DefId> {
self.items[LangItem::AsyncGenReady as usize]
}
#[doc =
"Returns the [`DefId`] of the `AsyncGenPending` lang item if it is defined."]
pub fn async_gen_pending(&self) -> Option<DefId> {
self.items[LangItem::AsyncGenPending as usize]
}
#[doc =
"Returns the [`DefId`] of the `AsyncGenFinished` lang item if it is defined."]
pub fn async_gen_finished(&self) -> Option<DefId> {
self.items[LangItem::AsyncGenFinished as usize]
}
#[doc =
"Returns the [`DefId`] of the `ResumeTy` lang item if it is defined."]
pub fn resume_ty(&self) -> Option<DefId> {
self.items[LangItem::ResumeTy as usize]
}
#[doc =
"Returns the [`DefId`] of the `get_context` lang item if it is defined."]
pub fn get_context_fn(&self) -> Option<DefId> {
self.items[LangItem::GetContext as usize]
}
#[doc =
"Returns the [`DefId`] of the `Context` lang item if it is defined."]
pub fn context(&self) -> Option<DefId> {
self.items[LangItem::Context as usize]
}
#[doc = "Returns the [`DefId`] of the `poll` lang item if it is defined."]
pub fn future_poll_fn(&self) -> Option<DefId> {
self.items[LangItem::FuturePoll as usize]
}
#[doc =
"Returns the [`DefId`] of the `async_iterator_poll_next` lang item if it is defined."]
pub fn async_iterator_poll_next(&self) -> Option<DefId> {
self.items[LangItem::AsyncIteratorPollNext as usize]
}
#[doc =
"Returns the [`DefId`] of the `into_async_iter_into_iter` lang item if it is defined."]
pub fn into_async_iter_into_iter(&self) -> Option<DefId> {
self.items[LangItem::IntoAsyncIterIntoIter as usize]
}
#[doc =
"Returns the [`DefId`] of the `Option` lang item if it is defined."]
pub fn option_type(&self) -> Option<DefId> {
self.items[LangItem::Option as usize]
}
#[doc = "Returns the [`DefId`] of the `Some` lang item if it is defined."]
pub fn option_some_variant(&self) -> Option<DefId> {
self.items[LangItem::OptionSome as usize]
}
#[doc = "Returns the [`DefId`] of the `None` lang item if it is defined."]
pub fn option_none_variant(&self) -> Option<DefId> {
self.items[LangItem::OptionNone as usize]
}
#[doc = "Returns the [`DefId`] of the `Ok` lang item if it is defined."]
pub fn result_ok_variant(&self) -> Option<DefId> {
self.items[LangItem::ResultOk as usize]
}
#[doc = "Returns the [`DefId`] of the `Err` lang item if it is defined."]
pub fn result_err_variant(&self) -> Option<DefId> {
self.items[LangItem::ResultErr as usize]
}
#[doc =
"Returns the [`DefId`] of the `Continue` lang item if it is defined."]
pub fn cf_continue_variant(&self) -> Option<DefId> {
self.items[LangItem::ControlFlowContinue as usize]
}
#[doc =
"Returns the [`DefId`] of the `Break` lang item if it is defined."]
pub fn cf_break_variant(&self) -> Option<DefId> {
self.items[LangItem::ControlFlowBreak as usize]
}
#[doc =
"Returns the [`DefId`] of the `into_future` lang item if it is defined."]
pub fn into_future_fn(&self) -> Option<DefId> {
self.items[LangItem::IntoFutureIntoFuture as usize]
}
#[doc =
"Returns the [`DefId`] of the `into_iter` lang item if it is defined."]
pub fn into_iter_fn(&self) -> Option<DefId> {
self.items[LangItem::IntoIterIntoIter as usize]
}
#[doc = "Returns the [`DefId`] of the `next` lang item if it is defined."]
pub fn next_fn(&self) -> Option<DefId> {
self.items[LangItem::IteratorNext as usize]
}
#[doc =
"Returns the [`DefId`] of the `new_unchecked` lang item if it is defined."]
pub fn new_unchecked_fn(&self) -> Option<DefId> {
self.items[LangItem::PinNewUnchecked as usize]
}
#[doc =
"Returns the [`DefId`] of the `RangeFrom` lang item if it is defined."]
pub fn range_from_struct(&self) -> Option<DefId> {
self.items[LangItem::RangeFrom as usize]
}
#[doc =
"Returns the [`DefId`] of the `RangeFull` lang item if it is defined."]
pub fn range_full_struct(&self) -> Option<DefId> {
self.items[LangItem::RangeFull as usize]
}
#[doc =
"Returns the [`DefId`] of the `RangeInclusive` lang item if it is defined."]
pub fn range_inclusive_struct(&self) -> Option<DefId> {
self.items[LangItem::RangeInclusiveStruct as usize]
}
#[doc =
"Returns the [`DefId`] of the `range_inclusive_new` lang item if it is defined."]
pub fn range_inclusive_new_method(&self) -> Option<DefId> {
self.items[LangItem::RangeInclusiveNew as usize]
}
#[doc =
"Returns the [`DefId`] of the `Range` lang item if it is defined."]
pub fn range_struct(&self) -> Option<DefId> {
self.items[LangItem::Range as usize]
}
#[doc =
"Returns the [`DefId`] of the `RangeToInclusive` lang item if it is defined."]
pub fn range_to_inclusive_struct(&self) -> Option<DefId> {
self.items[LangItem::RangeToInclusive as usize]
}
#[doc =
"Returns the [`DefId`] of the `RangeTo` lang item if it is defined."]
pub fn range_to_struct(&self) -> Option<DefId> {
self.items[LangItem::RangeTo as usize]
}
#[doc =
"Returns the [`DefId`] of the `RangeMax` lang item if it is defined."]
pub fn range_max(&self) -> Option<DefId> {
self.items[LangItem::RangeMax as usize]
}
#[doc =
"Returns the [`DefId`] of the `RangeMin` lang item if it is defined."]
pub fn range_min(&self) -> Option<DefId> {
self.items[LangItem::RangeMin as usize]
}
#[doc =
"Returns the [`DefId`] of the `RangeSub` lang item if it is defined."]
pub fn range_sub(&self) -> Option<DefId> {
self.items[LangItem::RangeSub as usize]
}
#[doc =
"Returns the [`DefId`] of the `RangeFromCopy` lang item if it is defined."]
pub fn range_from_copy_struct(&self) -> Option<DefId> {
self.items[LangItem::RangeFromCopy as usize]
}
#[doc =
"Returns the [`DefId`] of the `RangeCopy` lang item if it is defined."]
pub fn range_copy_struct(&self) -> Option<DefId> {
self.items[LangItem::RangeCopy as usize]
}
#[doc =
"Returns the [`DefId`] of the `RangeInclusiveCopy` lang item if it is defined."]
pub fn range_inclusive_copy_struct(&self) -> Option<DefId> {
self.items[LangItem::RangeInclusiveCopy as usize]
}
#[doc =
"Returns the [`DefId`] of the `RangeToInclusiveCopy` lang item if it is defined."]
pub fn range_to_inclusive_copy_struct(&self) -> Option<DefId> {
self.items[LangItem::RangeToInclusiveCopy as usize]
}
#[doc =
"Returns the [`DefId`] of the `String` lang item if it is defined."]
pub fn string(&self) -> Option<DefId> {
self.items[LangItem::String as usize]
}
#[doc = "Returns the [`DefId`] of the `CStr` lang item if it is defined."]
pub fn c_str(&self) -> Option<DefId> {
self.items[LangItem::CStr as usize]
}
#[doc =
"Returns the [`DefId`] of the `contract_build_check_ensures` lang item if it is defined."]
pub fn contract_build_check_ensures_fn(&self) -> Option<DefId> {
self.items[LangItem::ContractBuildCheckEnsures as usize]
}
#[doc =
"Returns the [`DefId`] of the `contract_check_requires` lang item if it is defined."]
pub fn contract_check_requires_fn(&self) -> Option<DefId> {
self.items[LangItem::ContractCheckRequires as usize]
}
#[doc =
"Returns the [`DefId`] of the `default_trait4` lang item if it is defined."]
pub fn default_trait4_trait(&self) -> Option<DefId> {
self.items[LangItem::DefaultTrait4 as usize]
}
#[doc =
"Returns the [`DefId`] of the `default_trait3` lang item if it is defined."]
pub fn default_trait3_trait(&self) -> Option<DefId> {
self.items[LangItem::DefaultTrait3 as usize]
}
#[doc =
"Returns the [`DefId`] of the `default_trait2` lang item if it is defined."]
pub fn default_trait2_trait(&self) -> Option<DefId> {
self.items[LangItem::DefaultTrait2 as usize]
}
#[doc =
"Returns the [`DefId`] of the `default_trait1` lang item if it is defined."]
pub fn default_trait1_trait(&self) -> Option<DefId> {
self.items[LangItem::DefaultTrait1 as usize]
}
#[doc =
"Returns the [`DefId`] of the `contract_check_ensures` lang item if it is defined."]
pub fn contract_check_ensures_fn(&self) -> Option<DefId> {
self.items[LangItem::ContractCheckEnsures as usize]
}
#[doc =
"Returns the [`DefId`] of the `reborrow` lang item if it is defined."]
pub fn reborrow(&self) -> Option<DefId> {
self.items[LangItem::Reborrow as usize]
}
#[doc =
"Returns the [`DefId`] of the `coerce_shared` lang item if it is defined."]
pub fn coerce_shared(&self) -> Option<DefId> {
self.items[LangItem::CoerceShared as usize]
}
#[doc =
"Returns the [`DefId`] of the `field_representing_type` lang item if it is defined."]
pub fn field_representing_type(&self) -> Option<DefId> {
self.items[LangItem::FieldRepresentingType as usize]
}
#[doc =
"Returns the [`DefId`] of the `field` lang item if it is defined."]
pub fn field(&self) -> Option<DefId> {
self.items[LangItem::Field as usize]
}
#[doc =
"Returns the [`DefId`] of the `field_base` lang item if it is defined."]
pub fn field_base(&self) -> Option<DefId> {
self.items[LangItem::FieldBase as usize]
}
#[doc =
"Returns the [`DefId`] of the `field_type` lang item if it is defined."]
pub fn field_type(&self) -> Option<DefId> {
self.items[LangItem::FieldType as usize]
}
#[doc =
"Returns the [`DefId`] of the `field_offset` lang item if it is defined."]
pub fn field_offset(&self) -> Option<DefId> {
self.items[LangItem::FieldOffset as usize]
}
#[doc = "Returns the [`DefId`] of the `From` lang item if it is defined."]
pub fn from_trait(&self) -> Option<DefId> {
self.items[LangItem::From as usize]
}
#[doc = "Returns the [`DefId`] of the `from` lang item if it is defined."]
pub fn from_fn(&self) -> Option<DefId> {
self.items[LangItem::FromFn as usize]
}
#[doc =
"Returns the [`DefId`] of the `FnPtr` lang item if it is defined."]
pub fn fn_ptr(&self) -> Option<DefId> {
self.items[LangItem::FnPtr as usize]
}
}language_item_table! {
159Sized, sym::sized, sized_trait, Target::Trait, GenericRequirement::Exact(0);
161 MetaSized, sym::meta_sized, meta_sized_trait, Target::Trait, GenericRequirement::Exact(0);
162 PointeeSized, sym::pointee_sized, pointee_sized_trait, Target::Trait, GenericRequirement::Exact(0);
163 Unsize, sym::unsize, unsize_trait, Target::Trait, GenericRequirement::Minimum(1);
164 AlignOf, sym::mem_align_const, align_const, Target::AssocConst(AssocCtxt::Trait), GenericRequirement::Exact(0);
165 SizeOf, sym::mem_size_const, size_const, Target::AssocConst(AssocCtxt::Trait), GenericRequirement::Exact(0);
166 OffsetOf, sym::offset_of, offset_of, Target::Fn, GenericRequirement::Exact(1);
167 StructuralPeq, sym::structural_peq, structural_peq_trait, Target::Trait, GenericRequirement::None;
169 Copy, sym::copy, copy_trait, Target::Trait, GenericRequirement::Exact(0);
170 Clone, sym::clone, clone_trait, Target::Trait, GenericRequirement::None;
171 CloneFn, sym::clone_fn, clone_fn, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
172 UseCloned, sym::use_cloned, use_cloned_trait, Target::Trait, GenericRequirement::None;
173 TrivialClone, sym::trivial_clone, trivial_clone_trait, Target::Trait, GenericRequirement::None;
174 Sync, sym::sync, sync_trait, Target::Trait, GenericRequirement::Exact(0);
175 DiscriminantKind, sym::discriminant_kind, discriminant_kind_trait, Target::Trait, GenericRequirement::None;
176 Discriminant, sym::discriminant_type, discriminant_type, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::None;
178
179 PointeeTrait, sym::pointee_trait, pointee_trait, Target::Trait, GenericRequirement::None;
180 Metadata, sym::metadata_type, metadata_type, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::None;
181 DynMetadata, sym::dyn_metadata, dyn_metadata, Target::Struct, GenericRequirement::None;
182
183 NonNull, sym::non_null, non_null_trait, Target::Struct, GenericRequirement::Exact(1);
184
185 Freeze, sym::freeze, freeze_trait, Target::Trait, GenericRequirement::Exact(0);
186 UnsafeUnpin, sym::unsafe_unpin, unsafe_unpin_trait, Target::Trait, GenericRequirement::Exact(0);
187
188 FnPtrTrait, sym::fn_ptr_trait, fn_ptr_trait, Target::Trait, GenericRequirement::Exact(0);
189 FnPtrAsPtr, sym::fn_ptr_as_ptr, fn_ptr_as_ptr, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
190 FnPtrFromPtr, sym::fn_ptr_from_ptr, fn_ptr_from_ptr, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
191 Code, sym::code, code, Target::ForeignTy, GenericRequirement::None;
192
193 Drop, sym::drop, drop_trait, Target::Trait, GenericRequirement::None;
194 Destruct, sym::destruct, destruct_trait, Target::Trait, GenericRequirement::None;
195 AsyncDrop, sym::async_drop, async_drop_trait, Target::Trait, GenericRequirement::None;
196 AsyncDropInPlace, sym::async_drop_in_place, async_drop_in_place_fn, Target::Fn, GenericRequirement::Exact(1);
197
198 CoerceUnsized, sym::coerce_unsized, coerce_unsized_trait, Target::Trait, GenericRequirement::Minimum(1);
199 DispatchFromDyn, sym::dispatch_from_dyn, dispatch_from_dyn_trait, Target::Trait, GenericRequirement::Minimum(1);
200
201 TryAsDyn, sym::try_as_dyn, try_as_dyn, Target::Trait, GenericRequirement::Exact(1);
202
203 TransmuteOpts, sym::transmute_opts, transmute_opts, Target::Struct, GenericRequirement::Exact(0);
205 TransmuteTrait, sym::transmute_trait, transmute_trait, Target::Trait, GenericRequirement::Exact(2);
206
207 Add, sym::add, add_trait, Target::Trait, GenericRequirement::Exact(1);
208 Sub, sym::sub, sub_trait, Target::Trait, GenericRequirement::Exact(1);
209 Mul, sym::mul, mul_trait, Target::Trait, GenericRequirement::Exact(1);
210 Div, sym::div, div_trait, Target::Trait, GenericRequirement::Exact(1);
211 Rem, sym::rem, rem_trait, Target::Trait, GenericRequirement::Exact(1);
212 Neg, sym::neg, neg_trait, Target::Trait, GenericRequirement::Exact(0);
213 Not, sym::not, not_trait, Target::Trait, GenericRequirement::Exact(0);
214 BitXor, sym::bitxor, bitxor_trait, Target::Trait, GenericRequirement::Exact(1);
215 BitAnd, sym::bitand, bitand_trait, Target::Trait, GenericRequirement::Exact(1);
216 BitOr, sym::bitor, bitor_trait, Target::Trait, GenericRequirement::Exact(1);
217 Shl, sym::shl, shl_trait, Target::Trait, GenericRequirement::Exact(1);
218 Shr, sym::shr, shr_trait, Target::Trait, GenericRequirement::Exact(1);
219 AddAssign, sym::add_assign, add_assign_trait, Target::Trait, GenericRequirement::Exact(1);
220 SubAssign, sym::sub_assign, sub_assign_trait, Target::Trait, GenericRequirement::Exact(1);
221 MulAssign, sym::mul_assign, mul_assign_trait, Target::Trait, GenericRequirement::Exact(1);
222 DivAssign, sym::div_assign, div_assign_trait, Target::Trait, GenericRequirement::Exact(1);
223 RemAssign, sym::rem_assign, rem_assign_trait, Target::Trait, GenericRequirement::Exact(1);
224 BitXorAssign, sym::bitxor_assign, bitxor_assign_trait, Target::Trait, GenericRequirement::Exact(1);
225 BitAndAssign, sym::bitand_assign, bitand_assign_trait, Target::Trait, GenericRequirement::Exact(1);
226 BitOrAssign, sym::bitor_assign, bitor_assign_trait, Target::Trait, GenericRequirement::Exact(1);
227 ShlAssign, sym::shl_assign, shl_assign_trait, Target::Trait, GenericRequirement::Exact(1);
228 ShrAssign, sym::shr_assign, shr_assign_trait, Target::Trait, GenericRequirement::Exact(1);
229 Index, sym::index, index_trait, Target::Trait, GenericRequirement::Exact(1);
230 IndexMut, sym::index_mut, index_mut_trait, Target::Trait, GenericRequirement::Exact(1);
231
232 UnsafeCell, sym::unsafe_cell, unsafe_cell_type, Target::Struct, GenericRequirement::None;
233 CovariantUnsafeCell, sym::covariant_unsafe_cell, covariant_unsafe_cell_type, Target::Struct, GenericRequirement::Exact(1);
234 UnsafePinned, sym::unsafe_pinned, unsafe_pinned_type, Target::Struct, GenericRequirement::None;
235
236 VaArgSafe, sym::va_arg_safe, va_arg_safe, Target::Trait, GenericRequirement::None;
237 VaList, sym::va_list, va_list, Target::Struct, GenericRequirement::None;
238
239 Complex, sym::complex, complex, Target::Struct, GenericRequirement::Exact(1);
240 PpcF128, sym::ppcf128, ppcf128, Target::Struct, GenericRequirement::None;
241
242 Deref, sym::deref, deref_trait, Target::Trait, GenericRequirement::Exact(0);
243 DerefMut, sym::deref_mut, deref_mut_trait, Target::Trait, GenericRequirement::Exact(0);
244 DerefPure, sym::deref_pure, deref_pure_trait, Target::Trait, GenericRequirement::Exact(0);
245 DerefTarget, sym::deref_target, deref_target, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::None;
246 Receiver, sym::receiver, receiver_trait, Target::Trait, GenericRequirement::None;
247 ReceiverTarget, sym::receiver_target, receiver_target, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::None;
248 LegacyReceiver, sym::legacy_receiver, legacy_receiver_trait, Target::Trait, GenericRequirement::None;
249
250 Fn, kw::Fn, fn_trait, Target::Trait, GenericRequirement::Exact(1);
251 FnMut, sym::fn_mut, fn_mut_trait, Target::Trait, GenericRequirement::Exact(1);
252 FnOnce, sym::fn_once, fn_once_trait, Target::Trait, GenericRequirement::Exact(1);
253 FnStatic, sym::fn_static, fn_static_trait, Target::Trait, GenericRequirement::Exact(1);
254
255 AsyncFn, sym::async_fn, async_fn_trait, Target::Trait, GenericRequirement::Exact(1);
256 AsyncFnMut, sym::async_fn_mut, async_fn_mut_trait, Target::Trait, GenericRequirement::Exact(1);
257 AsyncFnOnce, sym::async_fn_once, async_fn_once_trait, Target::Trait, GenericRequirement::Exact(1);
258 AsyncFnOnceOutput, sym::async_fn_once_output, async_fn_once_output, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::Exact(1);
259 CallOnceFuture, sym::call_once_future, call_once_future, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::Exact(1);
260 CallRefFuture, sym::call_ref_future, call_ref_future, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::Exact(2);
261 AsyncFnKindHelper, sym::async_fn_kind_helper, async_fn_kind_helper, Target::Trait, GenericRequirement::Exact(1);
262 AsyncFnKindUpvars, sym::async_fn_kind_upvars, async_fn_kind_upvars, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::Exact(5);
263
264 FnOnceOutput, sym::fn_once_output, fn_once_output, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::None;
265
266 Iterator, sym::iterator, iterator_trait, Target::Trait, GenericRequirement::Exact(0);
267 FusedIterator, sym::fused_iterator, fused_iterator_trait, Target::Trait, GenericRequirement::Exact(0);
268 Future, sym::future_trait, future_trait, Target::Trait, GenericRequirement::Exact(0);
269 FutureOutput, sym::future_output, future_output, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::Exact(0);
270 AsyncIterator, sym::async_iterator, async_iterator_trait, Target::Trait, GenericRequirement::Exact(0);
271
272 CoroutineState, sym::coroutine_state, coroutine_state, Target::Enum, GenericRequirement::None;
273 Coroutine, sym::coroutine, coroutine_trait, Target::Trait, GenericRequirement::Exact(1);
274 CoroutineReturn, sym::coroutine_return, coroutine_return, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::Exact(1);
275 CoroutineYield, sym::coroutine_yield, coroutine_yield, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::Exact(1);
276 CoroutineResume, sym::coroutine_resume, coroutine_resume, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
277
278 Unpin, sym::unpin, unpin_trait, Target::Trait, GenericRequirement::None;
279 Pin, kw::Pin, pin_type, Target::Struct, GenericRequirement::None;
280
281 OrderingEnum, sym::Ordering, ordering_enum, Target::Enum, GenericRequirement::Exact(0);
282 PartialEq, sym::eq, eq_trait, Target::Trait, GenericRequirement::Exact(1);
283 PartialOrd, sym::partial_ord, partial_ord_trait, Target::Trait, GenericRequirement::Exact(1);
284 CVoid, sym::c_void, c_void, Target::Enum, GenericRequirement::None;
285 F16B, sym::f16b, f16b, Target::Struct, GenericRequirement::Exact(0);
286
287 Type, sym::type_info, type_struct, Target::Struct, GenericRequirement::None;
288 TypeGeneric, sym::type_info_generic, type_generic, Target::Enum, GenericRequirement::None;
289 TypeId, sym::type_id, type_id, Target::Struct, GenericRequirement::None;
290
291 Panic, sym::panic, panic_fn, Target::Fn, GenericRequirement::Exact(0);
299 PanicNounwind, sym::panic_nounwind, panic_nounwind, Target::Fn, GenericRequirement::Exact(0);
300 PanicFmt, sym::panic_fmt, panic_fmt, Target::Fn, GenericRequirement::None;
301 PanicDisplay, sym::panic_display, panic_display, Target::Fn, GenericRequirement::None;
302 ConstPanicFmt, sym::const_panic_fmt, const_panic_fmt, Target::Fn, GenericRequirement::None;
303 PanicBoundsCheck, sym::panic_bounds_check, panic_bounds_check_fn, Target::Fn, GenericRequirement::Exact(0);
304 PanicMisalignedPointerDereference, sym::panic_misaligned_pointer_dereference, panic_misaligned_pointer_dereference_fn, Target::Fn, GenericRequirement::Exact(0);
305 PanicInfo, sym::panic_info, panic_info, Target::Struct, GenericRequirement::None;
306 PanicLocation, sym::panic_location, panic_location, Target::Struct, GenericRequirement::None;
307 PanicImpl, sym::panic_impl, panic_impl, Target::ForeignFn, GenericRequirement::None;
308 PanicCannotUnwind, sym::panic_cannot_unwind, panic_cannot_unwind, Target::Fn, GenericRequirement::Exact(0);
309 PanicInCleanup, sym::panic_in_cleanup, panic_in_cleanup, Target::Fn, GenericRequirement::Exact(0);
310 PanicAddOverflow, sym::panic_const_add_overflow, panic_const_add_overflow, Target::Fn, GenericRequirement::None;
312 PanicSubOverflow, sym::panic_const_sub_overflow, panic_const_sub_overflow, Target::Fn, GenericRequirement::None;
313 PanicMulOverflow, sym::panic_const_mul_overflow, panic_const_mul_overflow, Target::Fn, GenericRequirement::None;
314 PanicDivOverflow, sym::panic_const_div_overflow, panic_const_div_overflow, Target::Fn, GenericRequirement::None;
315 PanicRemOverflow, sym::panic_const_rem_overflow, panic_const_rem_overflow, Target::Fn, GenericRequirement::None;
316 PanicNegOverflow, sym::panic_const_neg_overflow, panic_const_neg_overflow, Target::Fn, GenericRequirement::None;
317 PanicShrOverflow, sym::panic_const_shr_overflow, panic_const_shr_overflow, Target::Fn, GenericRequirement::None;
318 PanicShlOverflow, sym::panic_const_shl_overflow, panic_const_shl_overflow, Target::Fn, GenericRequirement::None;
319 PanicDivZero, sym::panic_const_div_by_zero, panic_const_div_by_zero, Target::Fn, GenericRequirement::None;
320 PanicRemZero, sym::panic_const_rem_by_zero, panic_const_rem_by_zero, Target::Fn, GenericRequirement::None;
321 PanicCoroutineResumed, sym::panic_const_coroutine_resumed, panic_const_coroutine_resumed, Target::Fn, GenericRequirement::None;
322 PanicAsyncFnResumed, sym::panic_const_async_fn_resumed, panic_const_async_fn_resumed, Target::Fn, GenericRequirement::None;
323 PanicAsyncGenFnResumed, sym::panic_const_async_gen_fn_resumed, panic_const_async_gen_fn_resumed, Target::Fn, GenericRequirement::None;
324 PanicGenFnNone, sym::panic_const_gen_fn_none, panic_const_gen_fn_none, Target::Fn, GenericRequirement::None;
325 PanicCoroutineResumedPanic, sym::panic_const_coroutine_resumed_panic, panic_const_coroutine_resumed_panic, Target::Fn, GenericRequirement::None;
326 PanicAsyncFnResumedPanic, sym::panic_const_async_fn_resumed_panic, panic_const_async_fn_resumed_panic, Target::Fn, GenericRequirement::None;
327 PanicAsyncGenFnResumedPanic, sym::panic_const_async_gen_fn_resumed_panic, panic_const_async_gen_fn_resumed_panic, Target::Fn, GenericRequirement::None;
328 PanicGenFnNonePanic, sym::panic_const_gen_fn_none_panic, panic_const_gen_fn_none_panic, Target::Fn, GenericRequirement::None;
329 PanicNullPointerDereference, sym::panic_null_pointer_dereference, panic_null_pointer_dereference, Target::Fn, GenericRequirement::None;
330 PanicNullReferenceConstructed, sym::panic_null_reference_constructed, panic_null_reference_constructed, Target::Fn, GenericRequirement::None;
331 PanicInvalidEnumConstruction, sym::panic_invalid_enum_construction, panic_invalid_enum_construction, Target::Fn, GenericRequirement::None;
332 PanicCoroutineResumedDrop, sym::panic_const_coroutine_resumed_drop, panic_const_coroutine_resumed_drop, Target::Fn, GenericRequirement::None;
333 PanicAsyncFnResumedDrop, sym::panic_const_async_fn_resumed_drop, panic_const_async_fn_resumed_drop, Target::Fn, GenericRequirement::None;
334 PanicAsyncGenFnResumedDrop, sym::panic_const_async_gen_fn_resumed_drop, panic_const_async_gen_fn_resumed_drop, Target::Fn, GenericRequirement::None;
335 PanicGenFnNoneDrop, sym::panic_const_gen_fn_none_drop, panic_const_gen_fn_none_drop, Target::Fn, GenericRequirement::None;
336 BeginPanic, sym::begin_panic, begin_panic_fn, Target::Fn, GenericRequirement::None;
338
339 FormatArgument, sym::format_argument, format_argument, Target::Struct, GenericRequirement::None;
341 FormatArguments, sym::format_arguments, format_arguments, Target::Struct, GenericRequirement::None;
342
343 DropGlue, sym::drop_glue, drop_glue_fn, Target::Fn, GenericRequirement::Exact(1);
345 AllocLayout, sym::alloc_layout, alloc_layout, Target::Struct, GenericRequirement::None;
346
347 Start, sym::start, start_fn, Target::Fn, GenericRequirement::Exact(1);
352
353 EhPersonality, sym::eh_personality, eh_personality, Target::Fn, GenericRequirement::None;
354
355 CompilerMove, sym::compiler_move, compiler_move_fn, Target::Fn, GenericRequirement::Exact(2);
357 CompilerCopy, sym::compiler_copy, compiler_copy_fn, Target::Fn, GenericRequirement::Exact(2);
358
359 OwnedBox, sym::owned_box, owned_box, Target::Struct, GenericRequirement::Minimum(1);
360 GlobalAlloc, sym::global_alloc_ty, global_alloc_ty, Target::Struct, GenericRequirement::None;
361
362 PhantomData, sym::phantom_data, phantom_data, Target::Struct, GenericRequirement::Exact(1);
363
364 ManuallyDrop, sym::manually_drop, manually_drop, Target::Struct, GenericRequirement::Exact(1);
365 MaybeDangling, sym::maybe_dangling, maybe_dangling, Target::Struct, GenericRequirement::Exact(1);
366 BikeshedGuaranteedNoDrop, sym::bikeshed_guaranteed_no_drop, bikeshed_guaranteed_no_drop, Target::Trait, GenericRequirement::Exact(0);
367
368 MaybeUninit, sym::maybe_uninit, maybe_uninit, Target::Union, GenericRequirement::None;
369
370 Termination, sym::termination, termination, Target::Trait, GenericRequirement::None;
371
372 Try, sym::Try, try_trait, Target::Trait, GenericRequirement::None;
373
374 Tuple, sym::tuple_trait, tuple_trait, Target::Trait, GenericRequirement::Exact(0);
375
376 SliceLen, sym::slice_len_fn, slice_len_fn, Target::Method(MethodKind::Inherent), GenericRequirement::None;
377
378 TryTraitFromResidual, sym::from_residual, from_residual_fn, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
380 TryTraitFromOutput, sym::from_output, from_output_fn, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
381 TryTraitBranch, sym::branch, branch_fn, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
382 TryTraitFromYeet, sym::from_yeet, from_yeet_fn, Target::Fn, GenericRequirement::None;
383 ResidualIntoTryType, sym::into_try_type, into_try_type_fn, Target::Fn, GenericRequirement::None;
384
385 CoercePointeeValidated, sym::coerce_pointee_validated, coerce_pointee_validated_trait, Target::Trait, GenericRequirement::Exact(0);
386
387 ConstParamTy, sym::const_param_ty, const_param_ty_trait, Target::Trait, GenericRequirement::Exact(0);
388
389 Poll, sym::Poll, poll, Target::Enum, GenericRequirement::None;
390 PollReady, sym::Ready, poll_ready_variant, Target::Variant, GenericRequirement::None;
391 PollPending, sym::Pending, poll_pending_variant, Target::Variant, GenericRequirement::None;
392
393 AsyncGenReady, sym::AsyncGenReady, async_gen_ready, Target::Method(MethodKind::Inherent), GenericRequirement::Exact(1);
394 AsyncGenPending, sym::AsyncGenPending, async_gen_pending, Target::AssocConst(AssocCtxt::Impl { of_trait: false }), GenericRequirement::Exact(1);
395 AsyncGenFinished, sym::AsyncGenFinished, async_gen_finished, Target::AssocConst(AssocCtxt::Impl { of_trait: false }), GenericRequirement::Exact(1);
396
397 ResumeTy, sym::ResumeTy, resume_ty, Target::Struct, GenericRequirement::None;
400 GetContext, sym::get_context, get_context_fn, Target::Fn, GenericRequirement::None;
401
402 Context, sym::Context, context, Target::Struct, GenericRequirement::None;
403 FuturePoll, sym::poll, future_poll_fn, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
404
405 AsyncIteratorPollNext, sym::async_iterator_poll_next, async_iterator_poll_next, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::Exact(0);
406 IntoAsyncIterIntoIter, sym::into_async_iter_into_iter, into_async_iter_into_iter, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::Exact(0);
407
408 Option, sym::Option, option_type, Target::Enum, GenericRequirement::None;
409 OptionSome, sym::Some, option_some_variant, Target::Variant, GenericRequirement::None;
410 OptionNone, sym::None, option_none_variant, Target::Variant, GenericRequirement::None;
411
412 ResultOk, sym::Ok, result_ok_variant, Target::Variant, GenericRequirement::None;
413 ResultErr, sym::Err, result_err_variant, Target::Variant, GenericRequirement::None;
414
415 ControlFlowContinue, sym::Continue, cf_continue_variant, Target::Variant, GenericRequirement::None;
416 ControlFlowBreak, sym::Break, cf_break_variant, Target::Variant, GenericRequirement::None;
417
418 IntoFutureIntoFuture, sym::into_future, into_future_fn, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
419 IntoIterIntoIter, sym::into_iter, into_iter_fn, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
420 IteratorNext, sym::next, next_fn, Target::Method(MethodKind::Trait { body: false}), GenericRequirement::None;
421
422 PinNewUnchecked, sym::new_unchecked, new_unchecked_fn, Target::Method(MethodKind::Inherent), GenericRequirement::None;
423
424 RangeFrom, sym::RangeFrom, range_from_struct, Target::Struct, GenericRequirement::None;
425 RangeFull, sym::RangeFull, range_full_struct, Target::Struct, GenericRequirement::None;
426 RangeInclusiveStruct, sym::RangeInclusive, range_inclusive_struct, Target::Struct, GenericRequirement::None;
427 RangeInclusiveNew, sym::range_inclusive_new, range_inclusive_new_method, Target::Method(MethodKind::Inherent), GenericRequirement::None;
428 Range, sym::Range, range_struct, Target::Struct, GenericRequirement::None;
429 RangeToInclusive, sym::RangeToInclusive, range_to_inclusive_struct, Target::Struct, GenericRequirement::None;
430 RangeTo, sym::RangeTo, range_to_struct, Target::Struct, GenericRequirement::None;
431 RangeMax, sym::RangeMax, range_max, Target::AssocConst(AssocCtxt::Trait), GenericRequirement::Exact(0);
432 RangeMin, sym::RangeMin, range_min, Target::AssocConst(AssocCtxt::Trait), GenericRequirement::Exact(0);
433 RangeSub, sym::RangeSub, range_sub, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::Exact(0);
434
435 RangeFromCopy, sym::RangeFromCopy, range_from_copy_struct, Target::Struct, GenericRequirement::None;
437 RangeCopy, sym::RangeCopy, range_copy_struct, Target::Struct, GenericRequirement::None;
438 RangeInclusiveCopy, sym::RangeInclusiveCopy, range_inclusive_copy_struct, Target::Struct, GenericRequirement::None;
439 RangeToInclusiveCopy, sym::RangeToInclusiveCopy, range_to_inclusive_copy_struct, Target::Struct, GenericRequirement::None;
440
441 String, sym::String, string, Target::Struct, GenericRequirement::None;
442 CStr, sym::CStr, c_str, Target::Struct, GenericRequirement::None;
443
444 ContractBuildCheckEnsures, sym::contract_build_check_ensures, contract_build_check_ensures_fn, Target::Fn, GenericRequirement::None;
446 ContractCheckRequires, sym::contract_check_requires, contract_check_requires_fn, Target::Fn, GenericRequirement::None;
447
448 DefaultTrait4, sym::default_trait4, default_trait4_trait, Target::Trait, GenericRequirement::None;
450 DefaultTrait3, sym::default_trait3, default_trait3_trait, Target::Trait, GenericRequirement::None;
451 DefaultTrait2, sym::default_trait2, default_trait2_trait, Target::Trait, GenericRequirement::None;
452 DefaultTrait1, sym::default_trait1, default_trait1_trait, Target::Trait, GenericRequirement::None;
453
454 ContractCheckEnsures, sym::contract_check_ensures, contract_check_ensures_fn, Target::Fn, GenericRequirement::None;
455
456 Reborrow, sym::reborrow, reborrow, Target::Trait, GenericRequirement::Exact(0);
458 CoerceShared, sym::coerce_shared, coerce_shared, Target::Trait, GenericRequirement::Exact(1);
459
460 FieldRepresentingType, sym::field_representing_type, field_representing_type, Target::Struct, GenericRequirement::Exact(3);
462 Field, sym::field, field, Target::Trait, GenericRequirement::Exact(0);
463 FieldBase, sym::field_base, field_base, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::Exact(0);
464 FieldType, sym::field_type, field_type, Target::AssocTy(AssocCtxt::Trait), GenericRequirement::Exact(0);
465 FieldOffset, sym::field_offset, field_offset, Target::AssocConst(AssocCtxt::Trait), GenericRequirement::Exact(0);
466
467 From, sym::From, from_trait, Target::Trait, GenericRequirement::Exact(1);
469 FromFn, sym::from, from_fn, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
470
471 FnPtr, sym::FnPtr, fn_ptr, Target::Struct, GenericRequirement::None;
473}
474
475pub enum GenericRequirement {
477 None,
479 Minimum(usize),
481 Exact(usize),
483}
484
485pub static FN_TRAITS: &'static [LangItem] = &[LangItem::Fn, LangItem::FnMut, LangItem::FnOnce];
486
487pub static OPERATORS: &'static [LangItem] = &[
488 LangItem::Add,
489 LangItem::Sub,
490 LangItem::Mul,
491 LangItem::Div,
492 LangItem::Rem,
493 LangItem::Neg,
494 LangItem::Not,
495 LangItem::BitXor,
496 LangItem::BitAnd,
497 LangItem::BitOr,
498 LangItem::Shl,
499 LangItem::Shr,
500 LangItem::AddAssign,
501 LangItem::SubAssign,
502 LangItem::MulAssign,
503 LangItem::DivAssign,
504 LangItem::RemAssign,
505 LangItem::BitXorAssign,
506 LangItem::BitAndAssign,
507 LangItem::BitOrAssign,
508 LangItem::ShlAssign,
509 LangItem::ShrAssign,
510 LangItem::Index,
511 LangItem::IndexMut,
512 LangItem::PartialEq,
513 LangItem::PartialOrd,
514];
515
516pub static BINARY_OPERATORS: &'static [LangItem] = &[
517 LangItem::Add,
518 LangItem::Sub,
519 LangItem::Mul,
520 LangItem::Div,
521 LangItem::Rem,
522 LangItem::BitXor,
523 LangItem::BitAnd,
524 LangItem::BitOr,
525 LangItem::Shl,
526 LangItem::Shr,
527 LangItem::AddAssign,
528 LangItem::SubAssign,
529 LangItem::MulAssign,
530 LangItem::DivAssign,
531 LangItem::RemAssign,
532 LangItem::BitXorAssign,
533 LangItem::BitAndAssign,
534 LangItem::BitOrAssign,
535 LangItem::ShlAssign,
536 LangItem::ShrAssign,
537 LangItem::Index,
538 LangItem::IndexMut,
539 LangItem::PartialEq,
540 LangItem::PartialOrd,
541];