1use std::fmt::{self, Debug, Display, Formatter};
2use std::ops::Range;
3
4use serde::Serialize;
5
6use super::abi::ReprOptions;
7use super::mir::{Body, Mutability, Safety};
8use super::{DefId, Error, Symbol, with};
9use crate::abi::{FnAbi, Layout};
10use crate::crate_def::{CrateDef, CrateDefItems, CrateDefType};
11use crate::mir::alloc::{AllocId, read_target_int, read_target_uint};
12use crate::mir::mono::StaticDef;
13use crate::target::MachineInfo;
14use crate::{Filename, IndexedVal, Opaque, ThreadLocalIndex};
15
16#[derive(#[automatically_derived]
impl ::core::marker::Copy for Ty { }Copy, #[automatically_derived]
impl ::core::clone::Clone for Ty {
#[inline]
fn clone(&self) -> Ty {
let _: ::core::clone::AssertParamIsClone<usize>;
let _: ::core::clone::AssertParamIsClone<ThreadLocalIndex>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::Eq for Ty {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<usize>;
let _: ::core::cmp::AssertParamIsEq<ThreadLocalIndex>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for Ty {
#[inline]
fn eq(&self, other: &Ty) -> bool {
self.0 == other.0 && self.1 == other.1
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for Ty {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state);
::core::hash::Hash::hash(&self.1, state)
}
}Hash)]
17pub struct Ty(usize, ThreadLocalIndex);
18
19impl Debug for Ty {
20 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
21 f.debug_struct("Ty").field("id", &self.0).field("kind", &self.kind()).finish()
22 }
23}
24
25impl Ty {
27 pub fn from_rigid_kind(kind: RigidTy) -> Ty {
29 with(|cx| cx.new_rigid_ty(kind))
30 }
31
32 pub fn try_new_array(elem_ty: Ty, size: u64) -> Result<Ty, Error> {
34 Ok(Ty::from_rigid_kind(RigidTy::Array(elem_ty, TyConst::try_from_target_usize(size)?)))
35 }
36
37 pub fn new_array_with_const_len(elem_ty: Ty, len: TyConst) -> Ty {
39 Ty::from_rigid_kind(RigidTy::Array(elem_ty, len))
40 }
41
42 pub fn new_ptr(pointee_ty: Ty, mutability: Mutability) -> Ty {
44 Ty::from_rigid_kind(RigidTy::RawPtr(pointee_ty, mutability))
45 }
46
47 pub fn new_ref(reg: Region, pointee_ty: Ty, mutability: Mutability) -> Ty {
49 Ty::from_rigid_kind(RigidTy::Ref(reg, pointee_ty, mutability))
50 }
51
52 pub fn new_tuple(tys: &[Ty]) -> Ty {
54 Ty::from_rigid_kind(RigidTy::Tuple(Vec::from(tys)))
55 }
56
57 pub fn new_closure(def: ClosureDef, args: GenericArgs) -> Ty {
59 Ty::from_rigid_kind(RigidTy::Closure(def, args))
60 }
61
62 pub fn new_coroutine(def: CoroutineDef, args: GenericArgs) -> Ty {
64 Ty::from_rigid_kind(RigidTy::Coroutine(def, args))
65 }
66
67 pub fn new_coroutine_closure(def: CoroutineClosureDef, args: GenericArgs) -> Ty {
69 Ty::from_rigid_kind(RigidTy::CoroutineClosure(def, args))
70 }
71
72 pub fn new_box(inner_ty: Ty) -> Ty {
74 with(|cx| cx.new_box_ty(inner_ty))
75 }
76
77 pub fn usize_ty() -> Ty {
79 Ty::from_rigid_kind(RigidTy::Uint(UintTy::Usize))
80 }
81
82 pub fn bool_ty() -> Ty {
84 Ty::from_rigid_kind(RigidTy::Bool)
85 }
86
87 pub fn signed_ty(inner: IntTy) -> Ty {
89 Ty::from_rigid_kind(RigidTy::Int(inner))
90 }
91
92 pub fn unsigned_ty(inner: UintTy) -> Ty {
94 Ty::from_rigid_kind(RigidTy::Uint(inner))
95 }
96
97 pub fn layout(self) -> Result<Layout, Error> {
99 with(|cx| cx.ty_layout(self))
100 }
101}
102
103impl Ty {
104 pub fn kind(&self) -> TyKind {
105 with(|context| context.ty_kind(*self))
106 }
107}
108
109#[derive(#[automatically_derived]
impl ::core::clone::Clone for Pattern {
#[inline]
fn clone(&self) -> Pattern {
match self {
Pattern::Range {
start: __self_0, end: __self_1, include_end: __self_2 } =>
Pattern::Range {
start: ::core::clone::Clone::clone(__self_0),
end: ::core::clone::Clone::clone(__self_1),
include_end: ::core::clone::Clone::clone(__self_2),
},
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for Pattern {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Pattern::Range {
start: __self_0, end: __self_1, include_end: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f, "Range",
"start", __self_0, "end", __self_1, "include_end",
&__self_2),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for Pattern {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Option<TyConst>>;
let _: ::core::cmp::AssertParamIsEq<Option<TyConst>>;
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for Pattern {
#[inline]
fn eq(&self, other: &Pattern) -> bool {
match (self, other) {
(Pattern::Range {
start: __self_0, end: __self_1, include_end: __self_2 },
Pattern::Range {
start: __arg1_0, end: __arg1_1, include_end: __arg1_2 }) =>
__self_2 == __arg1_2 && __self_0 == __arg1_0 &&
__self_1 == __arg1_1,
}
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for Pattern {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
Pattern::Range { ref start, ref end, ref include_end } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Pattern", 0u32, "Range", 0 + 1 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"start", start)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"end", end)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"include_end", include_end)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
}
}
}
};Serialize)]
111pub enum Pattern {
112 Range { start: Option<TyConst>, end: Option<TyConst>, include_end: bool },
113}
114
115#[derive(#[automatically_derived]
impl ::core::clone::Clone for TyConst {
#[inline]
fn clone(&self) -> TyConst {
TyConst {
kind: ::core::clone::Clone::clone(&self.kind),
id: ::core::clone::Clone::clone(&self.id),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TyConst {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "TyConst",
"kind", &self.kind, "id", &&self.id)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for TyConst {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TyConstKind>;
let _: ::core::cmp::AssertParamIsEq<TyConstId>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for TyConst {
#[inline]
fn eq(&self, other: &TyConst) -> bool {
self.kind == other.kind && self.id == other.id
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for TyConst {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.kind, state);
::core::hash::Hash::hash(&self.id, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for TyConst {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"TyConst", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"kind", &self.kind)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"id", &self.id)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
117pub struct TyConst {
118 pub(crate) kind: TyConstKind,
119 pub id: TyConstId,
120}
121
122impl TyConst {
123 pub fn new(kind: TyConstKind, id: TyConstId) -> TyConst {
124 Self { kind, id }
125 }
126
127 pub fn kind(&self) -> &TyConstKind {
129 &self.kind
130 }
131
132 pub fn try_from_target_usize(val: u64) -> Result<Self, Error> {
134 with(|cx| cx.try_new_ty_const_uint(val.into(), UintTy::Usize))
135 }
136
137 pub fn eval_target_usize(&self) -> Result<u64, Error> {
139 with(|cx| cx.eval_target_usize_ty(self))
140 }
141}
142
143#[derive(#[automatically_derived]
impl ::core::clone::Clone for TyConstKind {
#[inline]
fn clone(&self) -> TyConstKind {
match self {
TyConstKind::Param(__self_0) =>
TyConstKind::Param(::core::clone::Clone::clone(__self_0)),
TyConstKind::Bound(__self_0, __self_1) =>
TyConstKind::Bound(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyConstKind::Unevaluated(__self_0, __self_1) =>
TyConstKind::Unevaluated(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyConstKind::Value(__self_0, __self_1) =>
TyConstKind::Value(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyConstKind::ZSTValue(__self_0) =>
TyConstKind::ZSTValue(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TyConstKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
TyConstKind::Param(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Param",
&__self_0),
TyConstKind::Bound(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Bound",
__self_0, &__self_1),
TyConstKind::Unevaluated(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Unevaluated", __self_0, &__self_1),
TyConstKind::Value(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Value",
__self_0, &__self_1),
TyConstKind::ZSTValue(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ZSTValue", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for TyConstKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ParamConst>;
let _: ::core::cmp::AssertParamIsEq<DebruijnIndex>;
let _: ::core::cmp::AssertParamIsEq<BoundVar>;
let _: ::core::cmp::AssertParamIsEq<ConstDef>;
let _: ::core::cmp::AssertParamIsEq<GenericArgs>;
let _: ::core::cmp::AssertParamIsEq<Ty>;
let _: ::core::cmp::AssertParamIsEq<Allocation>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for TyConstKind {
#[inline]
fn eq(&self, other: &TyConstKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(TyConstKind::Param(__self_0), TyConstKind::Param(__arg1_0))
=> __self_0 == __arg1_0,
(TyConstKind::Bound(__self_0, __self_1),
TyConstKind::Bound(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(TyConstKind::Unevaluated(__self_0, __self_1),
TyConstKind::Unevaluated(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(TyConstKind::Value(__self_0, __self_1),
TyConstKind::Value(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(TyConstKind::ZSTValue(__self_0),
TyConstKind::ZSTValue(__arg1_0)) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for TyConstKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
TyConstKind::Param(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
TyConstKind::Bound(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
TyConstKind::Unevaluated(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
TyConstKind::Value(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
TyConstKind::ZSTValue(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for TyConstKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
TyConstKind::Param(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"TyConstKind", 0u32, "Param", __field0),
TyConstKind::Bound(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"TyConstKind", 1u32, "Bound", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
TyConstKind::Unevaluated(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"TyConstKind", 2u32, "Unevaluated", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
TyConstKind::Value(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"TyConstKind", 3u32, "Value", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
TyConstKind::ZSTValue(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"TyConstKind", 4u32, "ZSTValue", __field0),
}
}
}
};Serialize)]
144pub enum TyConstKind {
145 Param(ParamConst),
146 Bound(DebruijnIndex, BoundVar),
147 Unevaluated(ConstDef, GenericArgs),
148
149 Value(Ty, Allocation),
151 ZSTValue(Ty),
152}
153
154#[derive(#[automatically_derived]
impl ::core::marker::Copy for TyConstId { }Copy, #[automatically_derived]
impl ::core::clone::Clone for TyConstId {
#[inline]
fn clone(&self) -> TyConstId {
let _: ::core::clone::AssertParamIsClone<usize>;
let _: ::core::clone::AssertParamIsClone<ThreadLocalIndex>;
*self
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TyConstId {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field2_finish(f, "TyConstId",
&self.0, &&self.1)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for TyConstId {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<usize>;
let _: ::core::cmp::AssertParamIsEq<ThreadLocalIndex>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for TyConstId {
#[inline]
fn eq(&self, other: &TyConstId) -> bool {
self.0 == other.0 && self.1 == other.1
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for TyConstId {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state);
::core::hash::Hash::hash(&self.1, state)
}
}Hash)]
155pub struct TyConstId(usize, ThreadLocalIndex);
156
157#[derive(#[automatically_derived]
impl ::core::clone::Clone for MirConst {
#[inline]
fn clone(&self) -> MirConst {
MirConst {
kind: ::core::clone::Clone::clone(&self.kind),
ty: ::core::clone::Clone::clone(&self.ty),
id: ::core::clone::Clone::clone(&self.id),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for MirConst {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "MirConst",
"kind", &self.kind, "ty", &self.ty, "id", &&self.id)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for MirConst {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ConstantKind>;
let _: ::core::cmp::AssertParamIsEq<Ty>;
let _: ::core::cmp::AssertParamIsEq<MirConstId>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for MirConst {
#[inline]
fn eq(&self, other: &MirConst) -> bool {
self.kind == other.kind && self.ty == other.ty && self.id == other.id
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for MirConst {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.kind, state);
::core::hash::Hash::hash(&self.ty, state);
::core::hash::Hash::hash(&self.id, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for MirConst {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"MirConst", false as usize + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"kind", &self.kind)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"ty", &self.ty)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"id", &self.id)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
159pub struct MirConst {
160 pub(crate) kind: ConstantKind,
162 pub(crate) ty: Ty,
164 pub id: MirConstId,
166}
167
168impl MirConst {
169 pub fn new(kind: ConstantKind, ty: Ty, id: MirConstId) -> MirConst {
171 MirConst { kind, ty, id }
172 }
173
174 pub fn kind(&self) -> &ConstantKind {
176 &self.kind
177 }
178
179 pub fn ty(&self) -> Ty {
181 self.ty
182 }
183
184 pub fn eval_target_usize(&self) -> Result<u64, Error> {
186 with(|cx| cx.eval_target_usize(self))
187 }
188
189 pub fn try_new_zero_sized(ty: Ty) -> Result<MirConst, Error> {
192 with(|cx| cx.try_new_const_zst(ty))
193 }
194
195 pub fn from_str(value: &str) -> MirConst {
201 with(|cx| cx.new_const_str(value))
202 }
203
204 pub fn from_bool(value: bool) -> MirConst {
206 with(|cx| cx.new_const_bool(value))
207 }
208
209 pub fn try_from_uint(value: u128, uint_ty: UintTy) -> Result<MirConst, Error> {
211 with(|cx| cx.try_new_const_uint(value, uint_ty))
212 }
213}
214
215#[derive(#[automatically_derived]
impl ::core::clone::Clone for MirConstId {
#[inline]
fn clone(&self) -> MirConstId {
let _: ::core::clone::AssertParamIsClone<usize>;
let _: ::core::clone::AssertParamIsClone<ThreadLocalIndex>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for MirConstId { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for MirConstId {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field2_finish(f, "MirConstId",
&self.0, &&self.1)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for MirConstId {
#[inline]
fn eq(&self, other: &MirConstId) -> bool {
self.0 == other.0 && self.1 == other.1
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for MirConstId {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<usize>;
let _: ::core::cmp::AssertParamIsEq<ThreadLocalIndex>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for MirConstId {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state);
::core::hash::Hash::hash(&self.1, state)
}
}Hash)]
216pub struct MirConstId(usize, ThreadLocalIndex);
217
218type Ident = Opaque;
219
220#[derive(#[automatically_derived]
impl ::core::clone::Clone for Region {
#[inline]
fn clone(&self) -> Region {
Region { kind: ::core::clone::Clone::clone(&self.kind) }
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for Region {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "Region",
"kind", &&self.kind)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for Region {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<RegionKind>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for Region {
#[inline]
fn eq(&self, other: &Region) -> bool { self.kind == other.kind }
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for Region {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.kind, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for Region {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer, "Region",
false as usize + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"kind", &self.kind)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
221pub struct Region {
222 pub kind: RegionKind,
223}
224
225#[derive(#[automatically_derived]
impl ::core::clone::Clone for RegionKind {
#[inline]
fn clone(&self) -> RegionKind {
match self {
RegionKind::ReEarlyParam(__self_0) =>
RegionKind::ReEarlyParam(::core::clone::Clone::clone(__self_0)),
RegionKind::ReBound(__self_0, __self_1) =>
RegionKind::ReBound(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
RegionKind::ReStatic => RegionKind::ReStatic,
RegionKind::RePlaceholder(__self_0) =>
RegionKind::RePlaceholder(::core::clone::Clone::clone(__self_0)),
RegionKind::ReErased => RegionKind::ReErased,
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for RegionKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
RegionKind::ReEarlyParam(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ReEarlyParam", &__self_0),
RegionKind::ReBound(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"ReBound", __self_0, &__self_1),
RegionKind::ReStatic =>
::core::fmt::Formatter::write_str(f, "ReStatic"),
RegionKind::RePlaceholder(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"RePlaceholder", &__self_0),
RegionKind::ReErased =>
::core::fmt::Formatter::write_str(f, "ReErased"),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for RegionKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<EarlyParamRegion>;
let _: ::core::cmp::AssertParamIsEq<DebruijnIndex>;
let _: ::core::cmp::AssertParamIsEq<BoundRegion>;
let _: ::core::cmp::AssertParamIsEq<Placeholder<BoundRegion>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for RegionKind {
#[inline]
fn eq(&self, other: &RegionKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(RegionKind::ReEarlyParam(__self_0),
RegionKind::ReEarlyParam(__arg1_0)) => __self_0 == __arg1_0,
(RegionKind::ReBound(__self_0, __self_1),
RegionKind::ReBound(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(RegionKind::RePlaceholder(__self_0),
RegionKind::RePlaceholder(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for RegionKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
RegionKind::ReEarlyParam(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
RegionKind::ReBound(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
RegionKind::RePlaceholder(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for RegionKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
RegionKind::ReEarlyParam(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"RegionKind", 0u32, "ReEarlyParam", __field0),
RegionKind::ReBound(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"RegionKind", 1u32, "ReBound", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
RegionKind::ReStatic =>
_serde::Serializer::serialize_unit_variant(__serializer,
"RegionKind", 2u32, "ReStatic"),
RegionKind::RePlaceholder(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"RegionKind", 3u32, "RePlaceholder", __field0),
RegionKind::ReErased =>
_serde::Serializer::serialize_unit_variant(__serializer,
"RegionKind", 4u32, "ReErased"),
}
}
}
};Serialize)]
226pub enum RegionKind {
227 ReEarlyParam(EarlyParamRegion),
228 ReBound(DebruijnIndex, BoundRegion),
229 ReStatic,
230 RePlaceholder(Placeholder<BoundRegion>),
231 ReErased,
232}
233
234pub(crate) type DebruijnIndex = u32;
235
236#[derive(#[automatically_derived]
impl ::core::clone::Clone for EarlyParamRegion {
#[inline]
fn clone(&self) -> EarlyParamRegion {
EarlyParamRegion {
index: ::core::clone::Clone::clone(&self.index),
name: ::core::clone::Clone::clone(&self.name),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for EarlyParamRegion {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"EarlyParamRegion", "index", &self.index, "name", &&self.name)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for EarlyParamRegion {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u32>;
let _: ::core::cmp::AssertParamIsEq<Symbol>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for EarlyParamRegion {
#[inline]
fn eq(&self, other: &EarlyParamRegion) -> bool {
self.index == other.index && self.name == other.name
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for EarlyParamRegion {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.index, state);
::core::hash::Hash::hash(&self.name, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for EarlyParamRegion {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"EarlyParamRegion", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"index", &self.index)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"name", &self.name)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
237pub struct EarlyParamRegion {
238 pub index: u32,
239 pub name: Symbol,
240}
241
242pub(crate) type BoundVar = u32;
243
244#[derive(#[automatically_derived]
impl ::core::clone::Clone for BoundRegion {
#[inline]
fn clone(&self) -> BoundRegion {
BoundRegion {
var: ::core::clone::Clone::clone(&self.var),
kind: ::core::clone::Clone::clone(&self.kind),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for BoundRegion {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "BoundRegion",
"var", &self.var, "kind", &&self.kind)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for BoundRegion {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<BoundVar>;
let _: ::core::cmp::AssertParamIsEq<BoundRegionKind>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for BoundRegion {
#[inline]
fn eq(&self, other: &BoundRegion) -> bool {
self.var == other.var && self.kind == other.kind
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for BoundRegion {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.var, state);
::core::hash::Hash::hash(&self.kind, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for BoundRegion {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"BoundRegion", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"var", &self.var)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"kind", &self.kind)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
245pub struct BoundRegion {
246 pub var: BoundVar,
247 pub kind: BoundRegionKind,
248}
249
250pub(crate) type UniverseIndex = u32;
251
252#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone> ::core::clone::Clone for Placeholder<T> {
#[inline]
fn clone(&self) -> Placeholder<T> {
Placeholder {
universe: ::core::clone::Clone::clone(&self.universe),
bound: ::core::clone::Clone::clone(&self.bound),
}
}
}Clone, #[automatically_derived]
impl<T: ::core::fmt::Debug> ::core::fmt::Debug for Placeholder<T> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Placeholder",
"universe", &self.universe, "bound", &&self.bound)
}
}Debug, #[automatically_derived]
impl<T: ::core::cmp::Eq> ::core::cmp::Eq for Placeholder<T> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<UniverseIndex>;
let _: ::core::cmp::AssertParamIsEq<T>;
}
}Eq, #[automatically_derived]
impl<T: ::core::cmp::PartialEq> ::core::cmp::PartialEq for Placeholder<T> {
#[inline]
fn eq(&self, other: &Placeholder<T>) -> bool {
self.universe == other.universe && self.bound == other.bound
}
}PartialEq, #[automatically_derived]
impl<T: ::core::hash::Hash> ::core::hash::Hash for Placeholder<T> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.universe, state);
::core::hash::Hash::hash(&self.bound, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T> _serde::Serialize for Placeholder<T> where
T: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"Placeholder", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"universe", &self.universe)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"bound", &self.bound)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
253pub struct Placeholder<T> {
254 pub universe: UniverseIndex,
255 pub bound: T,
256}
257
258#[derive(#[automatically_derived]
impl ::core::clone::Clone for Span {
#[inline]
fn clone(&self) -> Span {
let _: ::core::clone::AssertParamIsClone<usize>;
let _: ::core::clone::AssertParamIsClone<ThreadLocalIndex>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Span { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for Span {
#[inline]
fn eq(&self, other: &Span) -> bool {
self.0 == other.0 && self.1 == other.1
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Span {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<usize>;
let _: ::core::cmp::AssertParamIsEq<ThreadLocalIndex>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for Span {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state);
::core::hash::Hash::hash(&self.1, state)
}
}Hash)]
259pub struct Span(usize, ThreadLocalIndex);
260
261impl Debug for Span {
262 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
263 f.debug_struct("Span")
264 .field("id", &self.0)
265 .field("repr", &with(|cx| cx.span_to_string(*self)))
266 .finish()
267 }
268}
269
270impl Span {
271 pub fn get_filename(&self) -> Filename {
273 with(|c| c.get_filename(self))
274 }
275
276 pub fn get_lines(&self) -> LineInfo {
278 with(|c| c.get_lines(self))
279 }
280
281 pub fn diagnostic(&self) -> String {
286 with(|c| c.span_to_string(*self))
287 }
288}
289
290#[derive(#[automatically_derived]
impl ::core::clone::Clone for LineInfo {
#[inline]
fn clone(&self) -> LineInfo {
let _: ::core::clone::AssertParamIsClone<usize>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for LineInfo { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for LineInfo {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "LineInfo",
"start_line", &self.start_line, "start_col", &self.start_col,
"end_line", &self.end_line, "end_col", &&self.end_col)
}
}Debug, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for LineInfo {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"LineInfo", false as usize + 1 + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"start_line", &self.start_line)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"start_col", &self.start_col)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"end_line", &self.end_line)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"end_col", &self.end_col)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
291pub struct LineInfo {
294 pub start_line: usize,
295 pub start_col: usize,
296 pub end_line: usize,
297 pub end_col: usize,
298}
299
300impl LineInfo {
301 pub fn from(lines: (usize, usize, usize, usize)) -> Self {
302 LineInfo { start_line: lines.0, start_col: lines.1, end_line: lines.2, end_col: lines.3 }
303 }
304}
305
306#[derive(#[automatically_derived]
impl ::core::clone::Clone for TyKind {
#[inline]
fn clone(&self) -> TyKind {
match self {
TyKind::RigidTy(__self_0) =>
TyKind::RigidTy(::core::clone::Clone::clone(__self_0)),
TyKind::Alias(__self_0, __self_1) =>
TyKind::Alias(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::Param(__self_0) =>
TyKind::Param(::core::clone::Clone::clone(__self_0)),
TyKind::Bound(__self_0, __self_1) =>
TyKind::Bound(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TyKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
TyKind::RigidTy(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"RigidTy", &__self_0),
TyKind::Alias(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Alias",
__self_0, &__self_1),
TyKind::Param(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Param",
&__self_0),
TyKind::Bound(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Bound",
__self_0, &__self_1),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for TyKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<RigidTy>;
let _: ::core::cmp::AssertParamIsEq<AliasKind>;
let _: ::core::cmp::AssertParamIsEq<AliasTy>;
let _: ::core::cmp::AssertParamIsEq<ParamTy>;
let _: ::core::cmp::AssertParamIsEq<usize>;
let _: ::core::cmp::AssertParamIsEq<BoundTy>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for TyKind {
#[inline]
fn eq(&self, other: &TyKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(TyKind::RigidTy(__self_0), TyKind::RigidTy(__arg1_0)) =>
__self_0 == __arg1_0,
(TyKind::Alias(__self_0, __self_1),
TyKind::Alias(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(TyKind::Param(__self_0), TyKind::Param(__arg1_0)) =>
__self_0 == __arg1_0,
(TyKind::Bound(__self_0, __self_1),
TyKind::Bound(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for TyKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
TyKind::RigidTy(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"TyKind", 0u32, "RigidTy", __field0),
TyKind::Alias(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"TyKind", 1u32, "Alias", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
TyKind::Param(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"TyKind", 2u32, "Param", __field0),
TyKind::Bound(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"TyKind", 3u32, "Bound", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
}
}
}
};Serialize)]
307pub enum TyKind {
308 RigidTy(RigidTy),
309 Alias(AliasKind, AliasTy),
310 Param(ParamTy),
311 Bound(usize, BoundTy),
312}
313
314impl TyKind {
315 pub fn rigid(&self) -> Option<&RigidTy> {
316 if let TyKind::RigidTy(inner) = self { Some(inner) } else { None }
317 }
318
319 #[inline]
320 pub fn is_unit(&self) -> bool {
321 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Tuple(data)) if data.is_empty() => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Tuple(data)) if data.is_empty())
322 }
323
324 #[inline]
325 pub fn is_bool(&self) -> bool {
326 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Bool) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Bool))
327 }
328
329 #[inline]
330 pub fn is_char(&self) -> bool {
331 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Char) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Char))
332 }
333
334 #[inline]
335 pub fn is_trait(&self) -> bool {
336 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Dynamic(_, _)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Dynamic(_, _)))
337 }
338
339 #[inline]
340 pub fn is_enum(&self) -> bool {
341 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Adt(def, _)) if def.kind() == AdtKind::Enum =>
true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Adt(def, _)) if def.kind() == AdtKind::Enum)
342 }
343
344 #[inline]
345 pub fn is_struct(&self) -> bool {
346 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Adt(def, _)) if def.kind() == AdtKind::Struct =>
true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Adt(def, _)) if def.kind() == AdtKind::Struct)
347 }
348
349 #[inline]
350 pub fn is_union(&self) -> bool {
351 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Adt(def, _)) if def.kind() == AdtKind::Union =>
true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Adt(def, _)) if def.kind() == AdtKind::Union)
352 }
353
354 #[inline]
355 pub fn is_adt(&self) -> bool {
356 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Adt(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Adt(..)))
357 }
358
359 #[inline]
360 pub fn is_ref(&self) -> bool {
361 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Ref(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Ref(..)))
362 }
363
364 #[inline]
365 pub fn is_fn(&self) -> bool {
366 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::FnDef(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::FnDef(..)))
367 }
368
369 #[inline]
370 pub fn is_fn_ptr(&self) -> bool {
371 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::FnPtr(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::FnPtr(..)))
372 }
373
374 #[inline]
375 pub fn is_primitive(&self) -> bool {
376 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Bool | RigidTy::Char | RigidTy::Int(_) |
RigidTy::Uint(_) | RigidTy::Float(_)) => true,
_ => false,
}matches!(
377 self,
378 TyKind::RigidTy(
379 RigidTy::Bool
380 | RigidTy::Char
381 | RigidTy::Int(_)
382 | RigidTy::Uint(_)
383 | RigidTy::Float(_)
384 )
385 )
386 }
387
388 #[inline]
389 pub fn is_float(&self) -> bool {
390 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Float(_)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Float(_)))
391 }
392
393 #[inline]
394 pub fn is_integral(&self) -> bool {
395 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Int(_) | RigidTy::Uint(_)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Int(_) | RigidTy::Uint(_)))
396 }
397
398 #[inline]
399 pub fn is_numeric(&self) -> bool {
400 self.is_integral() || self.is_float()
401 }
402
403 #[inline]
404 pub fn is_signed(&self) -> bool {
405 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Int(_)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Int(_)))
406 }
407
408 #[inline]
409 pub fn is_str(&self) -> bool {
410 *self == TyKind::RigidTy(RigidTy::Str)
411 }
412
413 #[inline]
414 pub fn is_cstr(&self) -> bool {
415 let TyKind::RigidTy(RigidTy::Adt(def, _)) = self else {
416 return false;
417 };
418 with(|cx| cx.adt_is_cstr(*def))
419 }
420
421 #[inline]
422 pub fn is_slice(&self) -> bool {
423 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Slice(_)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Slice(_)))
424 }
425
426 #[inline]
427 pub fn is_array(&self) -> bool {
428 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Array(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Array(..)))
429 }
430
431 #[inline]
432 pub fn is_mutable_ptr(&self) -> bool {
433 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::RawPtr(_, Mutability::Mut)) |
TyKind::RigidTy(RigidTy::Ref(_, _, Mutability::Mut)) => true,
_ => false,
}matches!(
434 self,
435 TyKind::RigidTy(RigidTy::RawPtr(_, Mutability::Mut))
436 | TyKind::RigidTy(RigidTy::Ref(_, _, Mutability::Mut))
437 )
438 }
439
440 #[inline]
441 pub fn is_raw_ptr(&self) -> bool {
442 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::RawPtr(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::RawPtr(..)))
443 }
444
445 #[inline]
447 pub fn is_any_ptr(&self) -> bool {
448 self.is_ref() || self.is_raw_ptr() || self.is_fn_ptr()
449 }
450
451 #[inline]
452 pub fn is_coroutine(&self) -> bool {
453 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Coroutine(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Coroutine(..)))
454 }
455
456 #[inline]
457 pub fn is_closure(&self) -> bool {
458 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Closure(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Closure(..)))
459 }
460
461 #[inline]
462 pub fn is_box(&self) -> bool {
463 match self {
464 TyKind::RigidTy(RigidTy::Adt(def, _)) => def.is_box(),
465 _ => false,
466 }
467 }
468
469 #[inline]
470 pub fn is_simd(&self) -> bool {
471 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Adt(def, _)) if def.is_simd() => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Adt(def, _)) if def.is_simd())
472 }
473
474 pub fn trait_principal(&self) -> Option<Binder<ExistentialTraitRef>> {
475 if let TyKind::RigidTy(RigidTy::Dynamic(predicates, _)) = self {
476 if let Some(Binder { value: ExistentialPredicate::Trait(trait_ref), bound_vars }) =
477 predicates.first()
478 {
479 Some(Binder { value: trait_ref.clone(), bound_vars: bound_vars.clone() })
480 } else {
481 None
482 }
483 } else {
484 None
485 }
486 }
487
488 pub fn builtin_index(&self) -> Option<Ty> {
490 match self.rigid()? {
491 RigidTy::Array(ty, _) | RigidTy::Slice(ty) => Some(*ty),
492 _ => None,
493 }
494 }
495
496 pub fn builtin_deref(&self, explicit: bool) -> Option<TypeAndMut> {
501 match self.rigid()? {
502 RigidTy::Adt(def, args) if def.is_box() => {
503 Some(TypeAndMut { ty: *args.0.first()?.ty()?, mutability: Mutability::Not })
504 }
505 RigidTy::Ref(_, ty, mutability) => {
506 Some(TypeAndMut { ty: *ty, mutability: *mutability })
507 }
508 RigidTy::RawPtr(ty, mutability) if explicit => {
509 Some(TypeAndMut { ty: *ty, mutability: *mutability })
510 }
511 _ => None,
512 }
513 }
514
515 pub fn fn_sig(&self) -> Option<PolyFnSig> {
517 match self {
518 TyKind::RigidTy(RigidTy::FnDef(def, args)) => Some(with(|cx| cx.fn_sig(*def, args))),
519 TyKind::RigidTy(RigidTy::FnPtr(sig)) => Some(sig.clone()),
520 TyKind::RigidTy(RigidTy::Closure(_def, args)) => Some(with(|cx| cx.closure_sig(args))),
521 _ => None,
522 }
523 }
524
525 pub fn discriminant_ty(&self) -> Option<Ty> {
527 self.rigid().map(|ty| with(|cx| cx.rigid_ty_discriminant_ty(ty)))
528 }
529
530 pub fn fn_def(&self) -> Option<(FnDef, &GenericArgs)> {
532 if let TyKind::RigidTy(RigidTy::FnDef(def, args)) = self {
533 Some((*def, args))
534 } else {
535 None
536 }
537 }
538}
539
540pub struct TypeAndMut {
541 pub ty: Ty,
542 pub mutability: Mutability,
543}
544
545#[derive(#[automatically_derived]
impl ::core::clone::Clone for RigidTy {
#[inline]
fn clone(&self) -> RigidTy {
match self {
RigidTy::Bool => RigidTy::Bool,
RigidTy::Char => RigidTy::Char,
RigidTy::Int(__self_0) =>
RigidTy::Int(::core::clone::Clone::clone(__self_0)),
RigidTy::Uint(__self_0) =>
RigidTy::Uint(::core::clone::Clone::clone(__self_0)),
RigidTy::Float(__self_0) =>
RigidTy::Float(::core::clone::Clone::clone(__self_0)),
RigidTy::Adt(__self_0, __self_1) =>
RigidTy::Adt(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
RigidTy::Foreign(__self_0) =>
RigidTy::Foreign(::core::clone::Clone::clone(__self_0)),
RigidTy::Str => RigidTy::Str,
RigidTy::Array(__self_0, __self_1) =>
RigidTy::Array(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
RigidTy::Pat(__self_0, __self_1) =>
RigidTy::Pat(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
RigidTy::Slice(__self_0) =>
RigidTy::Slice(::core::clone::Clone::clone(__self_0)),
RigidTy::RawPtr(__self_0, __self_1) =>
RigidTy::RawPtr(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
RigidTy::Ref(__self_0, __self_1, __self_2) =>
RigidTy::Ref(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
RigidTy::FnDef(__self_0, __self_1) =>
RigidTy::FnDef(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
RigidTy::FnPtr(__self_0) =>
RigidTy::FnPtr(::core::clone::Clone::clone(__self_0)),
RigidTy::Closure(__self_0, __self_1) =>
RigidTy::Closure(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
RigidTy::Coroutine(__self_0, __self_1) =>
RigidTy::Coroutine(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
RigidTy::CoroutineClosure(__self_0, __self_1) =>
RigidTy::CoroutineClosure(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
RigidTy::Dynamic(__self_0, __self_1) =>
RigidTy::Dynamic(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
RigidTy::Never => RigidTy::Never,
RigidTy::Tuple(__self_0) =>
RigidTy::Tuple(::core::clone::Clone::clone(__self_0)),
RigidTy::CoroutineWitness(__self_0, __self_1) =>
RigidTy::CoroutineWitness(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for RigidTy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
RigidTy::Bool => ::core::fmt::Formatter::write_str(f, "Bool"),
RigidTy::Char => ::core::fmt::Formatter::write_str(f, "Char"),
RigidTy::Int(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Int",
&__self_0),
RigidTy::Uint(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Uint",
&__self_0),
RigidTy::Float(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Float",
&__self_0),
RigidTy::Adt(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Adt",
__self_0, &__self_1),
RigidTy::Foreign(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Foreign", &__self_0),
RigidTy::Str => ::core::fmt::Formatter::write_str(f, "Str"),
RigidTy::Array(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Array",
__self_0, &__self_1),
RigidTy::Pat(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Pat",
__self_0, &__self_1),
RigidTy::Slice(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Slice",
&__self_0),
RigidTy::RawPtr(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "RawPtr",
__self_0, &__self_1),
RigidTy::Ref(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Ref",
__self_0, __self_1, &__self_2),
RigidTy::FnDef(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "FnDef",
__self_0, &__self_1),
RigidTy::FnPtr(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "FnPtr",
&__self_0),
RigidTy::Closure(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Closure", __self_0, &__self_1),
RigidTy::Coroutine(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Coroutine", __self_0, &__self_1),
RigidTy::CoroutineClosure(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"CoroutineClosure", __self_0, &__self_1),
RigidTy::Dynamic(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Dynamic", __self_0, &__self_1),
RigidTy::Never => ::core::fmt::Formatter::write_str(f, "Never"),
RigidTy::Tuple(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Tuple",
&__self_0),
RigidTy::CoroutineWitness(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"CoroutineWitness", __self_0, &__self_1),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for RigidTy {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<IntTy>;
let _: ::core::cmp::AssertParamIsEq<UintTy>;
let _: ::core::cmp::AssertParamIsEq<FloatTy>;
let _: ::core::cmp::AssertParamIsEq<AdtDef>;
let _: ::core::cmp::AssertParamIsEq<GenericArgs>;
let _: ::core::cmp::AssertParamIsEq<ForeignDef>;
let _: ::core::cmp::AssertParamIsEq<Ty>;
let _: ::core::cmp::AssertParamIsEq<TyConst>;
let _: ::core::cmp::AssertParamIsEq<Pattern>;
let _: ::core::cmp::AssertParamIsEq<Mutability>;
let _: ::core::cmp::AssertParamIsEq<Region>;
let _: ::core::cmp::AssertParamIsEq<FnDef>;
let _: ::core::cmp::AssertParamIsEq<PolyFnSig>;
let _: ::core::cmp::AssertParamIsEq<ClosureDef>;
let _: ::core::cmp::AssertParamIsEq<CoroutineDef>;
let _: ::core::cmp::AssertParamIsEq<CoroutineClosureDef>;
let _:
::core::cmp::AssertParamIsEq<Vec<Binder<ExistentialPredicate>>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Ty>>;
let _: ::core::cmp::AssertParamIsEq<CoroutineWitnessDef>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for RigidTy {
#[inline]
fn eq(&self, other: &RigidTy) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(RigidTy::Int(__self_0), RigidTy::Int(__arg1_0)) =>
__self_0 == __arg1_0,
(RigidTy::Uint(__self_0), RigidTy::Uint(__arg1_0)) =>
__self_0 == __arg1_0,
(RigidTy::Float(__self_0), RigidTy::Float(__arg1_0)) =>
__self_0 == __arg1_0,
(RigidTy::Adt(__self_0, __self_1),
RigidTy::Adt(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(RigidTy::Foreign(__self_0), RigidTy::Foreign(__arg1_0)) =>
__self_0 == __arg1_0,
(RigidTy::Array(__self_0, __self_1),
RigidTy::Array(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(RigidTy::Pat(__self_0, __self_1),
RigidTy::Pat(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(RigidTy::Slice(__self_0), RigidTy::Slice(__arg1_0)) =>
__self_0 == __arg1_0,
(RigidTy::RawPtr(__self_0, __self_1),
RigidTy::RawPtr(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(RigidTy::Ref(__self_0, __self_1, __self_2),
RigidTy::Ref(__arg1_0, __arg1_1, __arg1_2)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(RigidTy::FnDef(__self_0, __self_1),
RigidTy::FnDef(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(RigidTy::FnPtr(__self_0), RigidTy::FnPtr(__arg1_0)) =>
__self_0 == __arg1_0,
(RigidTy::Closure(__self_0, __self_1),
RigidTy::Closure(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(RigidTy::Coroutine(__self_0, __self_1),
RigidTy::Coroutine(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(RigidTy::CoroutineClosure(__self_0, __self_1),
RigidTy::CoroutineClosure(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(RigidTy::Dynamic(__self_0, __self_1),
RigidTy::Dynamic(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(RigidTy::Tuple(__self_0), RigidTy::Tuple(__arg1_0)) =>
__self_0 == __arg1_0,
(RigidTy::CoroutineWitness(__self_0, __self_1),
RigidTy::CoroutineWitness(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => true,
}
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for RigidTy {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
RigidTy::Bool =>
_serde::Serializer::serialize_unit_variant(__serializer,
"RigidTy", 0u32, "Bool"),
RigidTy::Char =>
_serde::Serializer::serialize_unit_variant(__serializer,
"RigidTy", 1u32, "Char"),
RigidTy::Int(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"RigidTy", 2u32, "Int", __field0),
RigidTy::Uint(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"RigidTy", 3u32, "Uint", __field0),
RigidTy::Float(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"RigidTy", 4u32, "Float", __field0),
RigidTy::Adt(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"RigidTy", 5u32, "Adt", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
RigidTy::Foreign(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"RigidTy", 6u32, "Foreign", __field0),
RigidTy::Str =>
_serde::Serializer::serialize_unit_variant(__serializer,
"RigidTy", 7u32, "Str"),
RigidTy::Array(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"RigidTy", 8u32, "Array", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
RigidTy::Pat(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"RigidTy", 9u32, "Pat", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
RigidTy::Slice(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"RigidTy", 10u32, "Slice", __field0),
RigidTy::RawPtr(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"RigidTy", 11u32, "RawPtr", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
RigidTy::Ref(ref __field0, ref __field1, ref __field2) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"RigidTy", 12u32, "Ref", 0 + 1 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field2)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
RigidTy::FnDef(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"RigidTy", 13u32, "FnDef", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
RigidTy::FnPtr(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"RigidTy", 14u32, "FnPtr", __field0),
RigidTy::Closure(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"RigidTy", 15u32, "Closure", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
RigidTy::Coroutine(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"RigidTy", 16u32, "Coroutine", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
RigidTy::CoroutineClosure(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"RigidTy", 17u32, "CoroutineClosure", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
RigidTy::Dynamic(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"RigidTy", 18u32, "Dynamic", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
RigidTy::Never =>
_serde::Serializer::serialize_unit_variant(__serializer,
"RigidTy", 19u32, "Never"),
RigidTy::Tuple(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"RigidTy", 20u32, "Tuple", __field0),
RigidTy::CoroutineWitness(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"RigidTy", 21u32, "CoroutineWitness", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
}
}
}
};Serialize)]
546pub enum RigidTy {
547 Bool,
548 Char,
549 Int(IntTy),
550 Uint(UintTy),
551 Float(FloatTy),
552 Adt(AdtDef, GenericArgs),
553 Foreign(ForeignDef),
554 Str,
555 Array(Ty, TyConst),
556 Pat(Ty, Pattern),
557 Slice(Ty),
558 RawPtr(Ty, Mutability),
559 Ref(Region, Ty, Mutability),
560 FnDef(FnDef, GenericArgs),
561 FnPtr(PolyFnSig),
562 Closure(ClosureDef, GenericArgs),
563 Coroutine(CoroutineDef, GenericArgs),
564 CoroutineClosure(CoroutineClosureDef, GenericArgs),
565 Dynamic(Vec<Binder<ExistentialPredicate>>, Region),
566 Never,
567 Tuple(Vec<Ty>),
568 CoroutineWitness(CoroutineWitnessDef, GenericArgs),
569}
570
571impl RigidTy {
572 pub fn discriminant_ty(&self) -> Ty {
574 with(|cx| cx.rigid_ty_discriminant_ty(self))
575 }
576}
577
578impl From<RigidTy> for TyKind {
579 fn from(value: RigidTy) -> Self {
580 TyKind::RigidTy(value)
581 }
582}
583
584#[derive(#[automatically_derived]
impl ::core::clone::Clone for IntTy {
#[inline]
fn clone(&self) -> IntTy { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for IntTy { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for IntTy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
IntTy::Isize => "Isize",
IntTy::I8 => "I8",
IntTy::I16 => "I16",
IntTy::I32 => "I32",
IntTy::I64 => "I64",
IntTy::I128 => "I128",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for IntTy {
#[inline]
fn eq(&self, other: &IntTy) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for IntTy {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for IntTy {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
IntTy::Isize =>
_serde::Serializer::serialize_unit_variant(__serializer,
"IntTy", 0u32, "Isize"),
IntTy::I8 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"IntTy", 1u32, "I8"),
IntTy::I16 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"IntTy", 2u32, "I16"),
IntTy::I32 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"IntTy", 3u32, "I32"),
IntTy::I64 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"IntTy", 4u32, "I64"),
IntTy::I128 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"IntTy", 5u32, "I128"),
}
}
}
};Serialize)]
585pub enum IntTy {
586 Isize,
587 I8,
588 I16,
589 I32,
590 I64,
591 I128,
592}
593
594impl IntTy {
595 pub fn num_bytes(self) -> usize {
596 match self {
597 IntTy::Isize => MachineInfo::target_pointer_width().bytes(),
598 IntTy::I8 => 1,
599 IntTy::I16 => 2,
600 IntTy::I32 => 4,
601 IntTy::I64 => 8,
602 IntTy::I128 => 16,
603 }
604 }
605}
606
607#[derive(#[automatically_derived]
impl ::core::clone::Clone for UintTy {
#[inline]
fn clone(&self) -> UintTy { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for UintTy { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for UintTy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
UintTy::Usize => "Usize",
UintTy::U8 => "U8",
UintTy::U16 => "U16",
UintTy::U32 => "U32",
UintTy::U64 => "U64",
UintTy::U128 => "U128",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for UintTy {
#[inline]
fn eq(&self, other: &UintTy) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for UintTy {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for UintTy {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
UintTy::Usize =>
_serde::Serializer::serialize_unit_variant(__serializer,
"UintTy", 0u32, "Usize"),
UintTy::U8 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"UintTy", 1u32, "U8"),
UintTy::U16 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"UintTy", 2u32, "U16"),
UintTy::U32 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"UintTy", 3u32, "U32"),
UintTy::U64 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"UintTy", 4u32, "U64"),
UintTy::U128 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"UintTy", 5u32, "U128"),
}
}
}
};Serialize)]
608pub enum UintTy {
609 Usize,
610 U8,
611 U16,
612 U32,
613 U64,
614 U128,
615}
616
617impl UintTy {
618 pub fn num_bytes(self) -> usize {
619 match self {
620 UintTy::Usize => MachineInfo::target_pointer_width().bytes(),
621 UintTy::U8 => 1,
622 UintTy::U16 => 2,
623 UintTy::U32 => 4,
624 UintTy::U64 => 8,
625 UintTy::U128 => 16,
626 }
627 }
628}
629
630#[derive(#[automatically_derived]
impl ::core::clone::Clone for FloatTy {
#[inline]
fn clone(&self) -> FloatTy { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for FloatTy { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for FloatTy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
FloatTy::F16 => "F16",
FloatTy::F32 => "F32",
FloatTy::F64 => "F64",
FloatTy::F128 => "F128",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for FloatTy {
#[inline]
fn eq(&self, other: &FloatTy) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for FloatTy {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for FloatTy {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
FloatTy::F16 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"FloatTy", 0u32, "F16"),
FloatTy::F32 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"FloatTy", 1u32, "F32"),
FloatTy::F64 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"FloatTy", 2u32, "F64"),
FloatTy::F128 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"FloatTy", 3u32, "F128"),
}
}
}
};Serialize)]
631pub enum FloatTy {
632 F16,
633 F32,
634 F64,
635 F128,
636}
637
638#[derive(#[automatically_derived]
impl ::core::clone::Clone for Movability {
#[inline]
fn clone(&self) -> Movability { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Movability { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for Movability {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
Movability::Static => "Static",
Movability::Movable => "Movable",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for Movability {
#[inline]
fn eq(&self, other: &Movability) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Movability {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for Movability {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
Movability::Static =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Movability", 0u32, "Static"),
Movability::Movable =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Movability", 1u32, "Movable"),
}
}
}
};Serialize)]
639pub enum Movability {
640 Static,
641 Movable,
642}
643
644#[automatically_derived]
impl ::core::clone::Clone for ForeignModuleDef {
#[inline]
fn clone(&self) -> ForeignModuleDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for ForeignModuleDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for ForeignModuleDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for ForeignModuleDef {
#[inline]
fn eq(&self, other: &ForeignModuleDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for ForeignModuleDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for ForeignModuleDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ForeignModuleDef", &&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for ForeignModuleDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ForeignModuleDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"ForeignModuleDef", &self.0)
}
}
};
impl CrateDef for ForeignModuleDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
645 #[derive(Serialize)]
646 pub ForeignModuleDef;
647}
648
649impl ForeignModuleDef {
650 pub fn module(&self) -> ForeignModule {
651 with(|cx| cx.foreign_module(*self))
652 }
653}
654
655pub struct ForeignModule {
656 pub def_id: ForeignModuleDef,
657 pub abi: Abi,
658}
659
660impl ForeignModule {
661 pub fn items(&self) -> Vec<ForeignDef> {
662 with(|cx| cx.foreign_items(self.def_id))
663 }
664}
665
666#[automatically_derived]
impl ::core::clone::Clone for ForeignDef {
#[inline]
fn clone(&self) -> ForeignDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for ForeignDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for ForeignDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for ForeignDef {
#[inline]
fn eq(&self, other: &ForeignDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for ForeignDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for ForeignDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "ForeignDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for ForeignDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ForeignDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"ForeignDef", &self.0)
}
}
};
impl CrateDef for ForeignDef {
fn def_id(&self) -> DefId { self.0 }
}
impl CrateDefType for ForeignDef {}crate_def_with_ty! {
667 #[derive(Serialize)]
669 pub ForeignDef;
670}
671
672impl ForeignDef {
673 pub fn kind(&self) -> ForeignItemKind {
674 with(|cx| cx.foreign_item_kind(*self))
675 }
676}
677
678#[derive(#[automatically_derived]
impl ::core::clone::Clone for ForeignItemKind {
#[inline]
fn clone(&self) -> ForeignItemKind {
let _: ::core::clone::AssertParamIsClone<FnDef>;
let _: ::core::clone::AssertParamIsClone<StaticDef>;
let _: ::core::clone::AssertParamIsClone<Ty>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for ForeignItemKind { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for ForeignItemKind {
#[inline]
fn eq(&self, other: &ForeignItemKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ForeignItemKind::Fn(__self_0), ForeignItemKind::Fn(__arg1_0))
=> __self_0 == __arg1_0,
(ForeignItemKind::Static(__self_0),
ForeignItemKind::Static(__arg1_0)) => __self_0 == __arg1_0,
(ForeignItemKind::Type(__self_0),
ForeignItemKind::Type(__arg1_0)) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for ForeignItemKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<FnDef>;
let _: ::core::cmp::AssertParamIsEq<StaticDef>;
let _: ::core::cmp::AssertParamIsEq<Ty>;
}
}Eq, #[automatically_derived]
impl ::core::fmt::Debug for ForeignItemKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ForeignItemKind::Fn(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Fn",
&__self_0),
ForeignItemKind::Static(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Static",
&__self_0),
ForeignItemKind::Type(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Type",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::hash::Hash for ForeignItemKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
ForeignItemKind::Fn(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
ForeignItemKind::Static(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
ForeignItemKind::Type(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ForeignItemKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
ForeignItemKind::Fn(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ForeignItemKind", 0u32, "Fn", __field0),
ForeignItemKind::Static(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ForeignItemKind", 1u32, "Static", __field0),
ForeignItemKind::Type(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ForeignItemKind", 2u32, "Type", __field0),
}
}
}
};Serialize)]
679pub enum ForeignItemKind {
680 Fn(FnDef),
681 Static(StaticDef),
682 Type(Ty),
683}
684
685#[automatically_derived]
impl ::core::clone::Clone for FnDef {
#[inline]
fn clone(&self) -> FnDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for FnDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for FnDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for FnDef {
#[inline]
fn eq(&self, other: &FnDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for FnDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for FnDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "FnDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for FnDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for FnDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"FnDef", &self.0)
}
}
};
impl CrateDef for FnDef {
fn def_id(&self) -> DefId { self.0 }
}
impl CrateDefType for FnDef {}crate_def_with_ty! {
686 #[derive(Serialize)]
688 pub FnDef;
689}
690
691impl FnDef {
692 pub fn body(&self) -> Option<Body> {
694 with(|ctx| ctx.has_body(self.0).then(|| ctx.mir_body(self.0)))
695 }
696
697 pub fn has_body(&self) -> bool {
699 with(|ctx| ctx.has_body(self.0))
700 }
701
702 pub fn as_intrinsic(&self) -> Option<IntrinsicDef> {
704 with(|cx| cx.intrinsic(self.def_id()))
705 }
706
707 #[inline]
709 pub fn is_intrinsic(&self) -> bool {
710 self.as_intrinsic().is_some()
711 }
712
713 pub fn fn_sig(&self) -> PolyFnSig {
715 let kind = self.ty().kind();
716 kind.fn_sig().unwrap()
717 }
718}
719
720#[automatically_derived]
impl ::core::clone::Clone for IntrinsicDef {
#[inline]
fn clone(&self) -> IntrinsicDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for IntrinsicDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for IntrinsicDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for IntrinsicDef {
#[inline]
fn eq(&self, other: &IntrinsicDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for IntrinsicDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for IntrinsicDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "IntrinsicDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for IntrinsicDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for IntrinsicDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"IntrinsicDef", &self.0)
}
}
};
impl CrateDef for IntrinsicDef {
fn def_id(&self) -> DefId { self.0 }
}
impl CrateDefType for IntrinsicDef {}crate_def_with_ty! {
721 #[derive(Serialize)]
722 pub IntrinsicDef;
723}
724
725impl IntrinsicDef {
726 pub fn fn_name(&self) -> Symbol {
729 with(|cx| cx.intrinsic_name(*self))
730 }
731
732 pub fn must_be_overridden(&self) -> bool {
735 with(|cx| !cx.has_body(self.0))
736 }
737}
738
739impl From<IntrinsicDef> for FnDef {
740 fn from(def: IntrinsicDef) -> Self {
741 FnDef(def.0)
742 }
743}
744
745#[automatically_derived]
impl ::core::clone::Clone for ClosureDef {
#[inline]
fn clone(&self) -> ClosureDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for ClosureDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for ClosureDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for ClosureDef {
#[inline]
fn eq(&self, other: &ClosureDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for ClosureDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for ClosureDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "ClosureDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for ClosureDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ClosureDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"ClosureDef", &self.0)
}
}
};
impl CrateDef for ClosureDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
746 #[derive(Serialize)]
747 pub ClosureDef;
748}
749
750impl ClosureDef {
751 pub fn body(&self) -> Option<Body> {
754 with(|ctx| ctx.has_body(self.0).then(|| ctx.mir_body(self.0)))
755 }
756}
757
758#[automatically_derived]
impl ::core::clone::Clone for CoroutineDef {
#[inline]
fn clone(&self) -> CoroutineDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for CoroutineDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for CoroutineDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for CoroutineDef {
#[inline]
fn eq(&self, other: &CoroutineDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for CoroutineDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for CoroutineDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "CoroutineDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for CoroutineDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for CoroutineDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"CoroutineDef", &self.0)
}
}
};
impl CrateDef for CoroutineDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
759 #[derive(Serialize)]
760 pub CoroutineDef;
761}
762
763impl CoroutineDef {
764 pub fn body(&self) -> Option<Body> {
767 with(|cx| cx.has_body(self.0).then(|| cx.mir_body(self.0)))
768 }
769
770 pub fn discriminant_for_variant(&self, args: &GenericArgs, idx: VariantIdx) -> Discr {
771 with(|cx| cx.coroutine_discr_for_variant(*self, args, idx))
772 }
773}
774
775#[automatically_derived]
impl ::core::clone::Clone for CoroutineClosureDef {
#[inline]
fn clone(&self) -> CoroutineClosureDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for CoroutineClosureDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for CoroutineClosureDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for CoroutineClosureDef {
#[inline]
fn eq(&self, other: &CoroutineClosureDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for CoroutineClosureDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for CoroutineClosureDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"CoroutineClosureDef", &&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for CoroutineClosureDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for CoroutineClosureDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"CoroutineClosureDef", &self.0)
}
}
};
impl CrateDef for CoroutineClosureDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
776 #[derive(Serialize)]
777 pub CoroutineClosureDef;
778}
779
780#[automatically_derived]
impl ::core::clone::Clone for ParamDef {
#[inline]
fn clone(&self) -> ParamDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for ParamDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for ParamDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for ParamDef {
#[inline]
fn eq(&self, other: &ParamDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for ParamDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for ParamDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "ParamDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for ParamDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ParamDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"ParamDef", &self.0)
}
}
};
impl CrateDef for ParamDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
781 #[derive(Serialize)]
782 pub ParamDef;
783}
784
785#[automatically_derived]
impl ::core::clone::Clone for BrNamedDef {
#[inline]
fn clone(&self) -> BrNamedDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for BrNamedDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for BrNamedDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for BrNamedDef {
#[inline]
fn eq(&self, other: &BrNamedDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for BrNamedDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for BrNamedDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "BrNamedDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for BrNamedDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for BrNamedDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"BrNamedDef", &self.0)
}
}
};
impl CrateDef for BrNamedDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
786 #[derive(Serialize)]
787 pub BrNamedDef;
788}
789
790#[automatically_derived]
impl ::core::clone::Clone for AdtDef {
#[inline]
fn clone(&self) -> AdtDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for AdtDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for AdtDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for AdtDef {
#[inline]
fn eq(&self, other: &AdtDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for AdtDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for AdtDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "AdtDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for AdtDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for AdtDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"AdtDef", &self.0)
}
}
};
impl CrateDef for AdtDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
791 #[derive(Serialize)]
792 pub AdtDef;
793}
794
795#[derive(#[automatically_derived]
impl ::core::clone::Clone for AdtKind {
#[inline]
fn clone(&self) -> AdtKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for AdtKind { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for AdtKind {
#[inline]
fn eq(&self, other: &AdtKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for AdtKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::fmt::Debug for AdtKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
AdtKind::Enum => "Enum",
AdtKind::Union => "Union",
AdtKind::Struct => "Struct",
})
}
}Debug, #[automatically_derived]
impl ::core::hash::Hash for AdtKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for AdtKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
AdtKind::Enum =>
_serde::Serializer::serialize_unit_variant(__serializer,
"AdtKind", 0u32, "Enum"),
AdtKind::Union =>
_serde::Serializer::serialize_unit_variant(__serializer,
"AdtKind", 1u32, "Union"),
AdtKind::Struct =>
_serde::Serializer::serialize_unit_variant(__serializer,
"AdtKind", 2u32, "Struct"),
}
}
}
};Serialize)]
796pub enum AdtKind {
797 Enum,
798 Union,
799 Struct,
800}
801
802impl AdtDef {
803 pub fn kind(&self) -> AdtKind {
804 with(|cx| cx.adt_kind(*self))
805 }
806
807 pub fn ty(&self) -> Ty {
809 with(|cx| cx.def_ty(self.0))
810 }
811
812 pub fn ty_with_args(&self, args: &GenericArgs) -> Ty {
816 with(|cx| cx.def_ty_with_args(self.0, args))
817 }
818
819 pub fn is_box(&self) -> bool {
820 with(|cx| cx.adt_is_box(*self))
821 }
822
823 pub fn is_simd(&self) -> bool {
824 with(|cx| cx.adt_is_simd(*self))
825 }
826
827 pub fn num_variants(&self) -> usize {
829 with(|cx| cx.adt_variants_len(*self))
830 }
831
832 pub fn variants(&self) -> Vec<VariantDef> {
834 self.variants_iter().collect()
835 }
836
837 pub fn variants_iter(&self) -> impl Iterator<Item = VariantDef> {
839 (0..self.num_variants())
840 .map(|idx| VariantDef { idx: VariantIdx::to_val(idx), adt_def: *self })
841 }
842
843 pub fn variant(&self, idx: VariantIdx) -> Option<VariantDef> {
844 (idx.to_index() < self.num_variants()).then_some(VariantDef { idx, adt_def: *self })
845 }
846
847 pub fn repr(&self) -> ReprOptions {
848 with(|cx| cx.adt_repr(*self))
849 }
850
851 pub fn discriminant_for_variant(&self, idx: VariantIdx) -> Discr {
852 with(|cx| cx.adt_discr_for_variant(*self, idx))
853 }
854}
855
856pub struct Discr {
857 pub val: u128,
858 pub ty: Ty,
859}
860
861#[derive(#[automatically_derived]
impl ::core::clone::Clone for VariantDef {
#[inline]
fn clone(&self) -> VariantDef {
let _: ::core::clone::AssertParamIsClone<VariantIdx>;
let _: ::core::clone::AssertParamIsClone<AdtDef>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for VariantDef { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for VariantDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "VariantDef",
"idx", &self.idx, "adt_def", &&self.adt_def)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for VariantDef {
#[inline]
fn eq(&self, other: &VariantDef) -> bool {
self.idx == other.idx && self.adt_def == other.adt_def
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for VariantDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<VariantIdx>;
let _: ::core::cmp::AssertParamIsEq<AdtDef>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for VariantDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.idx, state);
::core::hash::Hash::hash(&self.adt_def, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for VariantDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"VariantDef", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"idx", &self.idx)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"adt_def", &self.adt_def)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
863pub struct VariantDef {
864 pub idx: VariantIdx,
869 pub adt_def: AdtDef,
876}
877
878impl VariantDef {
879 pub fn name(&self) -> Symbol {
883 with(|cx| cx.variant_name(*self))
884 }
885
886 pub fn fields(&self) -> Vec<FieldDef> {
890 with(|cx| cx.variant_fields(*self))
891 }
892}
893
894#[derive(#[automatically_derived]
impl ::core::clone::Clone for FieldDef {
#[inline]
fn clone(&self) -> FieldDef {
FieldDef {
def: ::core::clone::Clone::clone(&self.def),
name: ::core::clone::Clone::clone(&self.name),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for FieldDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "FieldDef",
"def", &self.def, "name", &&self.name)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for FieldDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
let _: ::core::cmp::AssertParamIsEq<Symbol>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for FieldDef {
#[inline]
fn eq(&self, other: &FieldDef) -> bool {
self.def == other.def && self.name == other.name
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for FieldDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"FieldDef", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"def", &self.def)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"name", &self.name)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
895pub struct FieldDef {
896 pub def: DefId,
901
902 pub name: Symbol,
904}
905
906impl FieldDef {
907 pub fn ty_with_args(&self, args: &GenericArgs) -> Ty {
911 with(|cx| cx.def_ty_with_args(self.def, args))
912 }
913
914 pub fn ty(&self) -> Ty {
916 with(|cx| cx.def_ty(self.def))
917 }
918}
919
920impl Display for AdtKind {
921 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
922 f.write_str(match self {
923 AdtKind::Enum => "enum",
924 AdtKind::Union => "union",
925 AdtKind::Struct => "struct",
926 })
927 }
928}
929
930impl AdtKind {
931 pub fn is_enum(&self) -> bool {
932 #[allow(non_exhaustive_omitted_patterns)] match self {
AdtKind::Enum => true,
_ => false,
}matches!(self, AdtKind::Enum)
933 }
934
935 pub fn is_struct(&self) -> bool {
936 #[allow(non_exhaustive_omitted_patterns)] match self {
AdtKind::Struct => true,
_ => false,
}matches!(self, AdtKind::Struct)
937 }
938
939 pub fn is_union(&self) -> bool {
940 #[allow(non_exhaustive_omitted_patterns)] match self {
AdtKind::Union => true,
_ => false,
}matches!(self, AdtKind::Union)
941 }
942}
943
944#[automatically_derived]
impl ::core::clone::Clone for AliasDef {
#[inline]
fn clone(&self) -> AliasDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for AliasDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for AliasDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for AliasDef {
#[inline]
fn eq(&self, other: &AliasDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for AliasDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for AliasDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "AliasDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for AliasDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for AliasDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"AliasDef", &self.0)
}
}
};
impl CrateDef for AliasDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
945 #[derive(Serialize)]
946 pub AliasDef;
947}
948
949#[automatically_derived]
impl ::core::clone::Clone for TraitDef {
#[inline]
fn clone(&self) -> TraitDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for TraitDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for TraitDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for TraitDef {
#[inline]
fn eq(&self, other: &TraitDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for TraitDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for TraitDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "TraitDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for TraitDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for TraitDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"TraitDef", &self.0)
}
}
};
impl CrateDef for TraitDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
950 #[derive(Serialize)]
952 pub TraitDef;
953}
954
955impl CrateDefItems for TraitDef {}impl_crate_def_items! {
956 TraitDef;
957}
958
959impl TraitDef {
960 pub fn declaration(trait_def: &TraitDef) -> TraitDecl {
961 with(|cx| cx.trait_decl(trait_def))
962 }
963}
964
965#[automatically_derived]
impl ::core::clone::Clone for GenericDef {
#[inline]
fn clone(&self) -> GenericDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for GenericDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for GenericDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for GenericDef {
#[inline]
fn eq(&self, other: &GenericDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for GenericDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for GenericDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "GenericDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for GenericDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for GenericDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"GenericDef", &self.0)
}
}
};
impl CrateDef for GenericDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
966 #[derive(Serialize)]
967 pub GenericDef;
968}
969
970#[automatically_derived]
impl ::core::clone::Clone for ConstDef {
#[inline]
fn clone(&self) -> ConstDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for ConstDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for ConstDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for ConstDef {
#[inline]
fn eq(&self, other: &ConstDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for ConstDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for ConstDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "ConstDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for ConstDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ConstDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"ConstDef", &self.0)
}
}
};
impl CrateDef for ConstDef {
fn def_id(&self) -> DefId { self.0 }
}
impl CrateDefType for ConstDef {}crate_def_with_ty! {
971 #[derive(Serialize)]
972 pub ConstDef;
973}
974
975#[automatically_derived]
impl ::core::clone::Clone for ImplDef {
#[inline]
fn clone(&self) -> ImplDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for ImplDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for ImplDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for ImplDef {
#[inline]
fn eq(&self, other: &ImplDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for ImplDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for ImplDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "ImplDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for ImplDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ImplDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"ImplDef", &self.0)
}
}
};
impl CrateDef for ImplDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
976 #[derive(Serialize)]
978 pub ImplDef;
979}
980
981impl CrateDefItems for ImplDef {}impl_crate_def_items! {
982 ImplDef;
983}
984
985impl ImplDef {
986 pub fn trait_impl(&self) -> ImplTrait {
988 with(|cx| cx.trait_impl(self))
989 }
990}
991
992#[automatically_derived]
impl ::core::clone::Clone for RegionDef {
#[inline]
fn clone(&self) -> RegionDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for RegionDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for RegionDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for RegionDef {
#[inline]
fn eq(&self, other: &RegionDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for RegionDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for RegionDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "RegionDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for RegionDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for RegionDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"RegionDef", &self.0)
}
}
};
impl CrateDef for RegionDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
993 #[derive(Serialize)]
994 pub RegionDef;
995}
996
997#[automatically_derived]
impl ::core::clone::Clone for CoroutineWitnessDef {
#[inline]
fn clone(&self) -> CoroutineWitnessDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for CoroutineWitnessDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for CoroutineWitnessDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for CoroutineWitnessDef {
#[inline]
fn eq(&self, other: &CoroutineWitnessDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for CoroutineWitnessDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for CoroutineWitnessDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"CoroutineWitnessDef", &&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for CoroutineWitnessDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for CoroutineWitnessDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"CoroutineWitnessDef", &self.0)
}
}
};
impl CrateDef for CoroutineWitnessDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
998 #[derive(Serialize)]
999 pub CoroutineWitnessDef;
1000}
1001
1002#[derive(#[automatically_derived]
impl ::core::clone::Clone for GenericArgs {
#[inline]
fn clone(&self) -> GenericArgs {
GenericArgs(::core::clone::Clone::clone(&self.0))
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for GenericArgs {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "GenericArgs",
&&self.0)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for GenericArgs {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Vec<GenericArgKind>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for GenericArgs {
#[inline]
fn eq(&self, other: &GenericArgs) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for GenericArgs {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for GenericArgs {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"GenericArgs", &self.0)
}
}
};Serialize)]
1004pub struct GenericArgs(pub Vec<GenericArgKind>);
1005
1006impl std::ops::Index<ParamTy> for GenericArgs {
1007 type Output = Ty;
1008
1009 fn index(&self, index: ParamTy) -> &Self::Output {
1010 self.0[index.index as usize].expect_ty()
1011 }
1012}
1013
1014impl std::ops::Index<ParamConst> for GenericArgs {
1015 type Output = TyConst;
1016
1017 fn index(&self, index: ParamConst) -> &Self::Output {
1018 self.0[index.index as usize].expect_const()
1019 }
1020}
1021
1022#[derive(#[automatically_derived]
impl ::core::clone::Clone for GenericArgKind {
#[inline]
fn clone(&self) -> GenericArgKind {
match self {
GenericArgKind::Lifetime(__self_0) =>
GenericArgKind::Lifetime(::core::clone::Clone::clone(__self_0)),
GenericArgKind::Type(__self_0) =>
GenericArgKind::Type(::core::clone::Clone::clone(__self_0)),
GenericArgKind::Const(__self_0) =>
GenericArgKind::Const(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for GenericArgKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
GenericArgKind::Lifetime(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Lifetime", &__self_0),
GenericArgKind::Type(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Type",
&__self_0),
GenericArgKind::Const(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Const",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for GenericArgKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Region>;
let _: ::core::cmp::AssertParamIsEq<Ty>;
let _: ::core::cmp::AssertParamIsEq<TyConst>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for GenericArgKind {
#[inline]
fn eq(&self, other: &GenericArgKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(GenericArgKind::Lifetime(__self_0),
GenericArgKind::Lifetime(__arg1_0)) => __self_0 == __arg1_0,
(GenericArgKind::Type(__self_0),
GenericArgKind::Type(__arg1_0)) => __self_0 == __arg1_0,
(GenericArgKind::Const(__self_0),
GenericArgKind::Const(__arg1_0)) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for GenericArgKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
GenericArgKind::Lifetime(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
GenericArgKind::Type(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
GenericArgKind::Const(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for GenericArgKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
GenericArgKind::Lifetime(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"GenericArgKind", 0u32, "Lifetime", __field0),
GenericArgKind::Type(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"GenericArgKind", 1u32, "Type", __field0),
GenericArgKind::Const(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"GenericArgKind", 2u32, "Const", __field0),
}
}
}
};Serialize)]
1023pub enum GenericArgKind {
1024 Lifetime(Region),
1025 Type(Ty),
1026 Const(TyConst),
1027}
1028
1029impl GenericArgKind {
1030 #[track_caller]
1033 pub fn expect_ty(&self) -> &Ty {
1034 match self {
1035 GenericArgKind::Type(ty) => ty,
1036 _ => { ::core::panicking::panic_fmt(format_args!("{0:?}", self)); }panic!("{self:?}"),
1037 }
1038 }
1039
1040 #[track_caller]
1043 pub fn expect_const(&self) -> &TyConst {
1044 match self {
1045 GenericArgKind::Const(c) => c,
1046 _ => { ::core::panicking::panic_fmt(format_args!("{0:?}", self)); }panic!("{self:?}"),
1047 }
1048 }
1049
1050 pub fn ty(&self) -> Option<&Ty> {
1052 match self {
1053 GenericArgKind::Type(ty) => Some(ty),
1054 _ => None,
1055 }
1056 }
1057}
1058
1059#[derive(#[automatically_derived]
impl ::core::clone::Clone for TermKind {
#[inline]
fn clone(&self) -> TermKind {
match self {
TermKind::Type(__self_0) =>
TermKind::Type(::core::clone::Clone::clone(__self_0)),
TermKind::Const(__self_0) =>
TermKind::Const(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TermKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
TermKind::Type(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Type",
&__self_0),
TermKind::Const(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Const",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for TermKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ty>;
let _: ::core::cmp::AssertParamIsEq<TyConst>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for TermKind {
#[inline]
fn eq(&self, other: &TermKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(TermKind::Type(__self_0), TermKind::Type(__arg1_0)) =>
__self_0 == __arg1_0,
(TermKind::Const(__self_0), TermKind::Const(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for TermKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
TermKind::Type(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"TermKind", 0u32, "Type", __field0),
TermKind::Const(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"TermKind", 1u32, "Const", __field0),
}
}
}
};Serialize)]
1060pub enum TermKind {
1061 Type(Ty),
1062 Const(TyConst),
1063}
1064
1065#[derive(#[automatically_derived]
impl ::core::clone::Clone for AliasKind {
#[inline]
fn clone(&self) -> AliasKind {
match self {
AliasKind::Projection => AliasKind::Projection,
AliasKind::Inherent => AliasKind::Inherent,
AliasKind::Opaque => AliasKind::Opaque,
AliasKind::Free => AliasKind::Free,
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for AliasKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
AliasKind::Projection => "Projection",
AliasKind::Inherent => "Inherent",
AliasKind::Opaque => "Opaque",
AliasKind::Free => "Free",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for AliasKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for AliasKind {
#[inline]
fn eq(&self, other: &AliasKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for AliasKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
AliasKind::Projection =>
_serde::Serializer::serialize_unit_variant(__serializer,
"AliasKind", 0u32, "Projection"),
AliasKind::Inherent =>
_serde::Serializer::serialize_unit_variant(__serializer,
"AliasKind", 1u32, "Inherent"),
AliasKind::Opaque =>
_serde::Serializer::serialize_unit_variant(__serializer,
"AliasKind", 2u32, "Opaque"),
AliasKind::Free =>
_serde::Serializer::serialize_unit_variant(__serializer,
"AliasKind", 3u32, "Free"),
}
}
}
};Serialize)]
1066pub enum AliasKind {
1067 Projection,
1068 Inherent,
1069 Opaque,
1070 Free,
1071}
1072
1073#[derive(#[automatically_derived]
impl ::core::clone::Clone for AliasTy {
#[inline]
fn clone(&self) -> AliasTy {
AliasTy {
def_id: ::core::clone::Clone::clone(&self.def_id),
args: ::core::clone::Clone::clone(&self.args),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for AliasTy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "AliasTy",
"def_id", &self.def_id, "args", &&self.args)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for AliasTy {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<AliasDef>;
let _: ::core::cmp::AssertParamIsEq<GenericArgs>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for AliasTy {
#[inline]
fn eq(&self, other: &AliasTy) -> bool {
self.def_id == other.def_id && self.args == other.args
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for AliasTy {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"AliasTy", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"def_id", &self.def_id)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"args", &self.args)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1074pub struct AliasTy {
1075 pub def_id: AliasDef,
1076 pub args: GenericArgs,
1077}
1078
1079#[derive(#[automatically_derived]
impl ::core::clone::Clone for AliasTerm {
#[inline]
fn clone(&self) -> AliasTerm {
AliasTerm {
def_id: ::core::clone::Clone::clone(&self.def_id),
args: ::core::clone::Clone::clone(&self.args),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for AliasTerm {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "AliasTerm",
"def_id", &self.def_id, "args", &&self.args)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for AliasTerm {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<AliasDef>;
let _: ::core::cmp::AssertParamIsEq<GenericArgs>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for AliasTerm {
#[inline]
fn eq(&self, other: &AliasTerm) -> bool {
self.def_id == other.def_id && self.args == other.args
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for AliasTerm {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"AliasTerm", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"def_id", &self.def_id)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"args", &self.args)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1080pub struct AliasTerm {
1081 pub def_id: AliasDef,
1082 pub args: GenericArgs,
1083}
1084
1085pub type PolyFnSig = Binder<FnSig>;
1086
1087impl PolyFnSig {
1088 pub fn fn_ptr_abi(self) -> Result<FnAbi, Error> {
1093 with(|cx| cx.fn_ptr_abi(self))
1094 }
1095}
1096
1097#[derive(#[automatically_derived]
impl ::core::clone::Clone for FnSig {
#[inline]
fn clone(&self) -> FnSig {
FnSig {
inputs_and_output: ::core::clone::Clone::clone(&self.inputs_and_output),
c_variadic: ::core::clone::Clone::clone(&self.c_variadic),
safety: ::core::clone::Clone::clone(&self.safety),
abi: ::core::clone::Clone::clone(&self.abi),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for FnSig {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "FnSig",
"inputs_and_output", &self.inputs_and_output, "c_variadic",
&self.c_variadic, "safety", &self.safety, "abi", &&self.abi)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for FnSig {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Vec<Ty>>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Safety>;
let _: ::core::cmp::AssertParamIsEq<Abi>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for FnSig {
#[inline]
fn eq(&self, other: &FnSig) -> bool {
self.c_variadic == other.c_variadic &&
self.inputs_and_output == other.inputs_and_output &&
self.safety == other.safety && self.abi == other.abi
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for FnSig {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer, "FnSig",
false as usize + 1 + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"inputs_and_output", &self.inputs_and_output)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"c_variadic", &self.c_variadic)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"safety", &self.safety)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"abi", &self.abi)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1098pub struct FnSig {
1099 pub inputs_and_output: Vec<Ty>,
1100 pub c_variadic: bool,
1101 pub safety: Safety,
1102 pub abi: Abi,
1103}
1104
1105impl FnSig {
1106 pub fn output(&self) -> Ty {
1107 self.inputs_and_output[self.inputs_and_output.len() - 1]
1108 }
1109
1110 pub fn inputs(&self) -> &[Ty] {
1111 &self.inputs_and_output[..self.inputs_and_output.len() - 1]
1112 }
1113}
1114
1115#[derive(#[automatically_derived]
impl ::core::clone::Clone for Abi {
#[inline]
fn clone(&self) -> Abi {
match self {
Abi::Rust => Abi::Rust,
Abi::C { unwind: __self_0 } =>
Abi::C { unwind: ::core::clone::Clone::clone(__self_0) },
Abi::Cdecl { unwind: __self_0 } =>
Abi::Cdecl { unwind: ::core::clone::Clone::clone(__self_0) },
Abi::Stdcall { unwind: __self_0 } =>
Abi::Stdcall {
unwind: ::core::clone::Clone::clone(__self_0),
},
Abi::Fastcall { unwind: __self_0 } =>
Abi::Fastcall {
unwind: ::core::clone::Clone::clone(__self_0),
},
Abi::Vectorcall { unwind: __self_0 } =>
Abi::Vectorcall {
unwind: ::core::clone::Clone::clone(__self_0),
},
Abi::Thiscall { unwind: __self_0 } =>
Abi::Thiscall {
unwind: ::core::clone::Clone::clone(__self_0),
},
Abi::Aapcs { unwind: __self_0 } =>
Abi::Aapcs { unwind: ::core::clone::Clone::clone(__self_0) },
Abi::Win64 { unwind: __self_0 } =>
Abi::Win64 { unwind: ::core::clone::Clone::clone(__self_0) },
Abi::SysV64 { unwind: __self_0 } =>
Abi::SysV64 { unwind: ::core::clone::Clone::clone(__self_0) },
Abi::PtxKernel => Abi::PtxKernel,
Abi::Msp430Interrupt => Abi::Msp430Interrupt,
Abi::X86Interrupt => Abi::X86Interrupt,
Abi::GpuKernel => Abi::GpuKernel,
Abi::EfiApi => Abi::EfiApi,
Abi::AvrInterrupt => Abi::AvrInterrupt,
Abi::AvrNonBlockingInterrupt => Abi::AvrNonBlockingInterrupt,
Abi::CCmseNonSecureCall => Abi::CCmseNonSecureCall,
Abi::CCmseNonSecureEntry => Abi::CCmseNonSecureEntry,
Abi::System { unwind: __self_0 } =>
Abi::System { unwind: ::core::clone::Clone::clone(__self_0) },
Abi::RustCall => Abi::RustCall,
Abi::Unadjusted => Abi::Unadjusted,
Abi::RustCold => Abi::RustCold,
Abi::RiscvInterruptM => Abi::RiscvInterruptM,
Abi::RiscvInterruptS => Abi::RiscvInterruptS,
Abi::RustPreserveNone => Abi::RustPreserveNone,
Abi::RustInvalid => Abi::RustInvalid,
Abi::Custom => Abi::Custom,
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Abi {
#[inline]
fn eq(&self, other: &Abi) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(Abi::C { unwind: __self_0 }, Abi::C { unwind: __arg1_0 }) =>
__self_0 == __arg1_0,
(Abi::Cdecl { unwind: __self_0 }, Abi::Cdecl {
unwind: __arg1_0 }) => __self_0 == __arg1_0,
(Abi::Stdcall { unwind: __self_0 }, Abi::Stdcall {
unwind: __arg1_0 }) => __self_0 == __arg1_0,
(Abi::Fastcall { unwind: __self_0 }, Abi::Fastcall {
unwind: __arg1_0 }) => __self_0 == __arg1_0,
(Abi::Vectorcall { unwind: __self_0 }, Abi::Vectorcall {
unwind: __arg1_0 }) => __self_0 == __arg1_0,
(Abi::Thiscall { unwind: __self_0 }, Abi::Thiscall {
unwind: __arg1_0 }) => __self_0 == __arg1_0,
(Abi::Aapcs { unwind: __self_0 }, Abi::Aapcs {
unwind: __arg1_0 }) => __self_0 == __arg1_0,
(Abi::Win64 { unwind: __self_0 }, Abi::Win64 {
unwind: __arg1_0 }) => __self_0 == __arg1_0,
(Abi::SysV64 { unwind: __self_0 }, Abi::SysV64 {
unwind: __arg1_0 }) => __self_0 == __arg1_0,
(Abi::System { unwind: __self_0 }, Abi::System {
unwind: __arg1_0 }) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Abi {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, #[automatically_derived]
impl ::core::fmt::Debug for Abi {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Abi::Rust => ::core::fmt::Formatter::write_str(f, "Rust"),
Abi::C { unwind: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "C",
"unwind", &__self_0),
Abi::Cdecl { unwind: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Cdecl",
"unwind", &__self_0),
Abi::Stdcall { unwind: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Stdcall", "unwind", &__self_0),
Abi::Fastcall { unwind: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Fastcall", "unwind", &__self_0),
Abi::Vectorcall { unwind: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Vectorcall", "unwind", &__self_0),
Abi::Thiscall { unwind: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Thiscall", "unwind", &__self_0),
Abi::Aapcs { unwind: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Aapcs",
"unwind", &__self_0),
Abi::Win64 { unwind: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Win64",
"unwind", &__self_0),
Abi::SysV64 { unwind: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"SysV64", "unwind", &__self_0),
Abi::PtxKernel =>
::core::fmt::Formatter::write_str(f, "PtxKernel"),
Abi::Msp430Interrupt =>
::core::fmt::Formatter::write_str(f, "Msp430Interrupt"),
Abi::X86Interrupt =>
::core::fmt::Formatter::write_str(f, "X86Interrupt"),
Abi::GpuKernel =>
::core::fmt::Formatter::write_str(f, "GpuKernel"),
Abi::EfiApi => ::core::fmt::Formatter::write_str(f, "EfiApi"),
Abi::AvrInterrupt =>
::core::fmt::Formatter::write_str(f, "AvrInterrupt"),
Abi::AvrNonBlockingInterrupt =>
::core::fmt::Formatter::write_str(f,
"AvrNonBlockingInterrupt"),
Abi::CCmseNonSecureCall =>
::core::fmt::Formatter::write_str(f, "CCmseNonSecureCall"),
Abi::CCmseNonSecureEntry =>
::core::fmt::Formatter::write_str(f, "CCmseNonSecureEntry"),
Abi::System { unwind: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"System", "unwind", &__self_0),
Abi::RustCall => ::core::fmt::Formatter::write_str(f, "RustCall"),
Abi::Unadjusted =>
::core::fmt::Formatter::write_str(f, "Unadjusted"),
Abi::RustCold => ::core::fmt::Formatter::write_str(f, "RustCold"),
Abi::RiscvInterruptM =>
::core::fmt::Formatter::write_str(f, "RiscvInterruptM"),
Abi::RiscvInterruptS =>
::core::fmt::Formatter::write_str(f, "RiscvInterruptS"),
Abi::RustPreserveNone =>
::core::fmt::Formatter::write_str(f, "RustPreserveNone"),
Abi::RustInvalid =>
::core::fmt::Formatter::write_str(f, "RustInvalid"),
Abi::Custom => ::core::fmt::Formatter::write_str(f, "Custom"),
}
}
}Debug, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for Abi {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
Abi::Rust =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 0u32, "Rust"),
Abi::C { ref unwind } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Abi", 1u32, "C", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"unwind", unwind)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
Abi::Cdecl { ref unwind } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Abi", 2u32, "Cdecl", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"unwind", unwind)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
Abi::Stdcall { ref unwind } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Abi", 3u32, "Stdcall", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"unwind", unwind)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
Abi::Fastcall { ref unwind } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Abi", 4u32, "Fastcall", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"unwind", unwind)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
Abi::Vectorcall { ref unwind } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Abi", 5u32, "Vectorcall", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"unwind", unwind)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
Abi::Thiscall { ref unwind } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Abi", 6u32, "Thiscall", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"unwind", unwind)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
Abi::Aapcs { ref unwind } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Abi", 7u32, "Aapcs", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"unwind", unwind)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
Abi::Win64 { ref unwind } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Abi", 8u32, "Win64", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"unwind", unwind)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
Abi::SysV64 { ref unwind } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Abi", 9u32, "SysV64", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"unwind", unwind)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
Abi::PtxKernel =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 10u32, "PtxKernel"),
Abi::Msp430Interrupt =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 11u32, "Msp430Interrupt"),
Abi::X86Interrupt =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 12u32, "X86Interrupt"),
Abi::GpuKernel =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 13u32, "GpuKernel"),
Abi::EfiApi =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 14u32, "EfiApi"),
Abi::AvrInterrupt =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 15u32, "AvrInterrupt"),
Abi::AvrNonBlockingInterrupt =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 16u32, "AvrNonBlockingInterrupt"),
Abi::CCmseNonSecureCall =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 17u32, "CCmseNonSecureCall"),
Abi::CCmseNonSecureEntry =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 18u32, "CCmseNonSecureEntry"),
Abi::System { ref unwind } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Abi", 19u32, "System", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"unwind", unwind)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
Abi::RustCall =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 20u32, "RustCall"),
Abi::Unadjusted =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 21u32, "Unadjusted"),
Abi::RustCold =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 22u32, "RustCold"),
Abi::RiscvInterruptM =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 23u32, "RiscvInterruptM"),
Abi::RiscvInterruptS =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 24u32, "RiscvInterruptS"),
Abi::RustPreserveNone =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 25u32, "RustPreserveNone"),
Abi::RustInvalid =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 26u32, "RustInvalid"),
Abi::Custom =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 27u32, "Custom"),
}
}
}
};Serialize)]
1116pub enum Abi {
1117 Rust,
1118 C { unwind: bool },
1119 Cdecl { unwind: bool },
1120 Stdcall { unwind: bool },
1121 Fastcall { unwind: bool },
1122 Vectorcall { unwind: bool },
1123 Thiscall { unwind: bool },
1124 Aapcs { unwind: bool },
1125 Win64 { unwind: bool },
1126 SysV64 { unwind: bool },
1127 PtxKernel,
1128 Msp430Interrupt,
1129 X86Interrupt,
1130 GpuKernel,
1131 EfiApi,
1132 AvrInterrupt,
1133 AvrNonBlockingInterrupt,
1134 CCmseNonSecureCall,
1135 CCmseNonSecureEntry,
1136 System { unwind: bool },
1137 RustCall,
1138 Unadjusted,
1139 RustCold,
1140 RiscvInterruptM,
1141 RiscvInterruptS,
1142 RustPreserveNone,
1143 RustInvalid,
1144 Custom,
1145}
1146
1147#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone> ::core::clone::Clone for Binder<T> {
#[inline]
fn clone(&self) -> Binder<T> {
Binder {
value: ::core::clone::Clone::clone(&self.value),
bound_vars: ::core::clone::Clone::clone(&self.bound_vars),
}
}
}Clone, #[automatically_derived]
impl<T: ::core::fmt::Debug> ::core::fmt::Debug for Binder<T> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Binder",
"value", &self.value, "bound_vars", &&self.bound_vars)
}
}Debug, #[automatically_derived]
impl<T: ::core::cmp::Eq> ::core::cmp::Eq for Binder<T> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<T>;
let _: ::core::cmp::AssertParamIsEq<Vec<BoundVariableKind>>;
}
}Eq, #[automatically_derived]
impl<T: ::core::cmp::PartialEq> ::core::cmp::PartialEq for Binder<T> {
#[inline]
fn eq(&self, other: &Binder<T>) -> bool {
self.value == other.value && self.bound_vars == other.bound_vars
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T> _serde::Serialize for Binder<T> where T: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer, "Binder",
false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"value", &self.value)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"bound_vars", &self.bound_vars)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1149pub struct Binder<T> {
1150 pub value: T,
1151 pub bound_vars: Vec<BoundVariableKind>,
1152}
1153
1154impl<T> Binder<T> {
1155 pub fn bind_with_vars(value: T, bound_vars: Vec<BoundVariableKind>) -> Self {
1157 Binder { value, bound_vars }
1158 }
1159
1160 pub fn dummy(value: T) -> Self {
1162 Binder { value, bound_vars: ::alloc::vec::Vec::new()vec![] }
1163 }
1164
1165 pub fn skip_binder(self) -> T {
1166 self.value
1167 }
1168
1169 pub fn map_bound_ref<F, U>(&self, f: F) -> Binder<U>
1170 where
1171 F: FnOnce(&T) -> U,
1172 {
1173 let Binder { value, bound_vars } = self;
1174 let new_value = f(value);
1175 Binder { value: new_value, bound_vars: bound_vars.clone() }
1176 }
1177
1178 pub fn map_bound<F, U>(self, f: F) -> Binder<U>
1179 where
1180 F: FnOnce(T) -> U,
1181 {
1182 let Binder { value, bound_vars } = self;
1183 let new_value = f(value);
1184 Binder { value: new_value, bound_vars }
1185 }
1186}
1187
1188#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone> ::core::clone::Clone for EarlyBinder<T> {
#[inline]
fn clone(&self) -> EarlyBinder<T> {
EarlyBinder { value: ::core::clone::Clone::clone(&self.value) }
}
}Clone, #[automatically_derived]
impl<T: ::core::fmt::Debug> ::core::fmt::Debug for EarlyBinder<T> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "EarlyBinder",
"value", &&self.value)
}
}Debug, #[automatically_derived]
impl<T: ::core::cmp::Eq> ::core::cmp::Eq for EarlyBinder<T> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<T>;
}
}Eq, #[automatically_derived]
impl<T: ::core::cmp::PartialEq> ::core::cmp::PartialEq for EarlyBinder<T> {
#[inline]
fn eq(&self, other: &EarlyBinder<T>) -> bool { self.value == other.value }
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T> _serde::Serialize for EarlyBinder<T> where
T: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"EarlyBinder", false as usize + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"value", &self.value)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1189pub struct EarlyBinder<T> {
1190 pub value: T,
1191}
1192
1193#[derive(#[automatically_derived]
impl ::core::clone::Clone for BoundVariableKind {
#[inline]
fn clone(&self) -> BoundVariableKind {
match self {
BoundVariableKind::Ty(__self_0) =>
BoundVariableKind::Ty(::core::clone::Clone::clone(__self_0)),
BoundVariableKind::Region(__self_0) =>
BoundVariableKind::Region(::core::clone::Clone::clone(__self_0)),
BoundVariableKind::Const => BoundVariableKind::Const,
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for BoundVariableKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
BoundVariableKind::Ty(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Ty",
&__self_0),
BoundVariableKind::Region(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Region",
&__self_0),
BoundVariableKind::Const =>
::core::fmt::Formatter::write_str(f, "Const"),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for BoundVariableKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<BoundTyKind>;
let _: ::core::cmp::AssertParamIsEq<BoundRegionKind>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for BoundVariableKind {
#[inline]
fn eq(&self, other: &BoundVariableKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(BoundVariableKind::Ty(__self_0),
BoundVariableKind::Ty(__arg1_0)) => __self_0 == __arg1_0,
(BoundVariableKind::Region(__self_0),
BoundVariableKind::Region(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for BoundVariableKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
BoundVariableKind::Ty(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"BoundVariableKind", 0u32, "Ty", __field0),
BoundVariableKind::Region(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"BoundVariableKind", 1u32, "Region", __field0),
BoundVariableKind::Const =>
_serde::Serializer::serialize_unit_variant(__serializer,
"BoundVariableKind", 2u32, "Const"),
}
}
}
};Serialize)]
1194pub enum BoundVariableKind {
1195 Ty(BoundTyKind),
1196 Region(BoundRegionKind),
1197 Const,
1198}
1199
1200#[derive(#[automatically_derived]
impl ::core::clone::Clone for BoundTyKind {
#[inline]
fn clone(&self) -> BoundTyKind {
match self {
BoundTyKind::Anon => BoundTyKind::Anon,
BoundTyKind::Param(__self_0, __self_1) =>
BoundTyKind::Param(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for BoundTyKind {
#[inline]
fn eq(&self, other: &BoundTyKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(BoundTyKind::Param(__self_0, __self_1),
BoundTyKind::Param(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for BoundTyKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ParamDef>;
let _: ::core::cmp::AssertParamIsEq<String>;
}
}Eq, #[automatically_derived]
impl ::core::fmt::Debug for BoundTyKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
BoundTyKind::Anon => ::core::fmt::Formatter::write_str(f, "Anon"),
BoundTyKind::Param(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Param",
__self_0, &__self_1),
}
}
}Debug, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for BoundTyKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
BoundTyKind::Anon =>
_serde::Serializer::serialize_unit_variant(__serializer,
"BoundTyKind", 0u32, "Anon"),
BoundTyKind::Param(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"BoundTyKind", 1u32, "Param", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
}
}
}
};Serialize)]
1201pub enum BoundTyKind {
1202 Anon,
1203 Param(ParamDef, String),
1204}
1205
1206#[derive(#[automatically_derived]
impl ::core::clone::Clone for BoundRegionKind {
#[inline]
fn clone(&self) -> BoundRegionKind {
match self {
BoundRegionKind::BrAnon => BoundRegionKind::BrAnon,
BoundRegionKind::BrNamed(__self_0, __self_1) =>
BoundRegionKind::BrNamed(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
BoundRegionKind::BrEnv => BoundRegionKind::BrEnv,
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for BoundRegionKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
BoundRegionKind::BrAnon =>
::core::fmt::Formatter::write_str(f, "BrAnon"),
BoundRegionKind::BrNamed(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"BrNamed", __self_0, &__self_1),
BoundRegionKind::BrEnv =>
::core::fmt::Formatter::write_str(f, "BrEnv"),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for BoundRegionKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<BrNamedDef>;
let _: ::core::cmp::AssertParamIsEq<String>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for BoundRegionKind {
#[inline]
fn eq(&self, other: &BoundRegionKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(BoundRegionKind::BrNamed(__self_0, __self_1),
BoundRegionKind::BrNamed(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for BoundRegionKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
BoundRegionKind::BrNamed(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
_ => {}
}
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for BoundRegionKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
BoundRegionKind::BrAnon =>
_serde::Serializer::serialize_unit_variant(__serializer,
"BoundRegionKind", 0u32, "BrAnon"),
BoundRegionKind::BrNamed(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"BoundRegionKind", 1u32, "BrNamed", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
BoundRegionKind::BrEnv =>
_serde::Serializer::serialize_unit_variant(__serializer,
"BoundRegionKind", 2u32, "BrEnv"),
}
}
}
};Serialize)]
1207pub enum BoundRegionKind {
1208 BrAnon,
1209 BrNamed(BrNamedDef, String),
1210 BrEnv,
1211}
1212
1213#[derive(#[automatically_derived]
impl ::core::clone::Clone for ExistentialPredicate {
#[inline]
fn clone(&self) -> ExistentialPredicate {
match self {
ExistentialPredicate::Trait(__self_0) =>
ExistentialPredicate::Trait(::core::clone::Clone::clone(__self_0)),
ExistentialPredicate::Projection(__self_0) =>
ExistentialPredicate::Projection(::core::clone::Clone::clone(__self_0)),
ExistentialPredicate::AutoTrait(__self_0) =>
ExistentialPredicate::AutoTrait(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ExistentialPredicate {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ExistentialPredicate::Trait(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Trait",
&__self_0),
ExistentialPredicate::Projection(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Projection", &__self_0),
ExistentialPredicate::AutoTrait(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"AutoTrait", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ExistentialPredicate {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ExistentialTraitRef>;
let _: ::core::cmp::AssertParamIsEq<ExistentialProjection>;
let _: ::core::cmp::AssertParamIsEq<TraitDef>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ExistentialPredicate {
#[inline]
fn eq(&self, other: &ExistentialPredicate) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ExistentialPredicate::Trait(__self_0),
ExistentialPredicate::Trait(__arg1_0)) =>
__self_0 == __arg1_0,
(ExistentialPredicate::Projection(__self_0),
ExistentialPredicate::Projection(__arg1_0)) =>
__self_0 == __arg1_0,
(ExistentialPredicate::AutoTrait(__self_0),
ExistentialPredicate::AutoTrait(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ExistentialPredicate {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
ExistentialPredicate::Trait(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ExistentialPredicate", 0u32, "Trait", __field0),
ExistentialPredicate::Projection(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ExistentialPredicate", 1u32, "Projection", __field0),
ExistentialPredicate::AutoTrait(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ExistentialPredicate", 2u32, "AutoTrait", __field0),
}
}
}
};Serialize)]
1214pub enum ExistentialPredicate {
1215 Trait(ExistentialTraitRef),
1216 Projection(ExistentialProjection),
1217 AutoTrait(TraitDef),
1218}
1219
1220#[derive(#[automatically_derived]
impl ::core::clone::Clone for ExistentialTraitRef {
#[inline]
fn clone(&self) -> ExistentialTraitRef {
ExistentialTraitRef {
def_id: ::core::clone::Clone::clone(&self.def_id),
generic_args: ::core::clone::Clone::clone(&self.generic_args),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ExistentialTraitRef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"ExistentialTraitRef", "def_id", &self.def_id, "generic_args",
&&self.generic_args)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ExistentialTraitRef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TraitDef>;
let _: ::core::cmp::AssertParamIsEq<GenericArgs>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ExistentialTraitRef {
#[inline]
fn eq(&self, other: &ExistentialTraitRef) -> bool {
self.def_id == other.def_id && self.generic_args == other.generic_args
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ExistentialTraitRef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"ExistentialTraitRef", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"def_id", &self.def_id)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"generic_args", &self.generic_args)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1224pub struct ExistentialTraitRef {
1225 pub def_id: TraitDef,
1226 pub generic_args: GenericArgs,
1227}
1228
1229impl Binder<ExistentialTraitRef> {
1230 pub fn with_self_ty(&self, self_ty: Ty) -> Binder<TraitRef> {
1231 self.map_bound_ref(|trait_ref| trait_ref.with_self_ty(self_ty))
1232 }
1233}
1234
1235impl ExistentialTraitRef {
1236 pub fn with_self_ty(&self, self_ty: Ty) -> TraitRef {
1237 TraitRef::new(self.def_id, self_ty, &self.generic_args)
1238 }
1239}
1240
1241#[derive(#[automatically_derived]
impl ::core::clone::Clone for ExistentialProjection {
#[inline]
fn clone(&self) -> ExistentialProjection {
ExistentialProjection {
def_id: ::core::clone::Clone::clone(&self.def_id),
generic_args: ::core::clone::Clone::clone(&self.generic_args),
term: ::core::clone::Clone::clone(&self.term),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ExistentialProjection {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"ExistentialProjection", "def_id", &self.def_id, "generic_args",
&self.generic_args, "term", &&self.term)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ExistentialProjection {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TraitDef>;
let _: ::core::cmp::AssertParamIsEq<GenericArgs>;
let _: ::core::cmp::AssertParamIsEq<TermKind>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ExistentialProjection {
#[inline]
fn eq(&self, other: &ExistentialProjection) -> bool {
self.def_id == other.def_id && self.generic_args == other.generic_args
&& self.term == other.term
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ExistentialProjection {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"ExistentialProjection", false as usize + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"def_id", &self.def_id)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"generic_args", &self.generic_args)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"term", &self.term)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1242pub struct ExistentialProjection {
1243 pub def_id: TraitDef,
1244 pub generic_args: GenericArgs,
1245 pub term: TermKind,
1246}
1247
1248#[derive(#[automatically_derived]
impl ::core::clone::Clone for ParamTy {
#[inline]
fn clone(&self) -> ParamTy {
ParamTy {
index: ::core::clone::Clone::clone(&self.index),
name: ::core::clone::Clone::clone(&self.name),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ParamTy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "ParamTy",
"index", &self.index, "name", &&self.name)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ParamTy {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u32>;
let _: ::core::cmp::AssertParamIsEq<String>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ParamTy {
#[inline]
fn eq(&self, other: &ParamTy) -> bool {
self.index == other.index && self.name == other.name
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ParamTy {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"ParamTy", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"index", &self.index)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"name", &self.name)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1249pub struct ParamTy {
1250 pub index: u32,
1251 pub name: String,
1252}
1253
1254#[derive(#[automatically_derived]
impl ::core::clone::Clone for BoundTy {
#[inline]
fn clone(&self) -> BoundTy {
BoundTy {
var: ::core::clone::Clone::clone(&self.var),
kind: ::core::clone::Clone::clone(&self.kind),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for BoundTy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "BoundTy",
"var", &self.var, "kind", &&self.kind)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for BoundTy {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<usize>;
let _: ::core::cmp::AssertParamIsEq<BoundTyKind>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for BoundTy {
#[inline]
fn eq(&self, other: &BoundTy) -> bool {
self.var == other.var && self.kind == other.kind
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for BoundTy {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"BoundTy", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"var", &self.var)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"kind", &self.kind)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1255pub struct BoundTy {
1256 pub var: usize,
1257 pub kind: BoundTyKind,
1258}
1259
1260pub type Bytes = Vec<Option<u8>>;
1261
1262pub type Size = usize;
1264
1265#[derive(#[automatically_derived]
impl ::core::clone::Clone for Prov {
#[inline]
fn clone(&self) -> Prov {
let _: ::core::clone::AssertParamIsClone<AllocId>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Prov { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for Prov {
#[inline]
fn eq(&self, other: &Prov) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Prov {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<AllocId>;
}
}Eq, #[automatically_derived]
impl ::core::fmt::Debug for Prov {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Prov", &&self.0)
}
}Debug, #[automatically_derived]
impl ::core::hash::Hash for Prov {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for Prov {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"Prov", &self.0)
}
}
};Serialize)]
1266pub struct Prov(pub AllocId);
1267
1268pub type Align = u64;
1269pub type Promoted = u32;
1270pub type InitMaskMaterialized = Vec<u64>;
1271
1272#[derive(#[automatically_derived]
impl ::core::clone::Clone for ProvenanceMap {
#[inline]
fn clone(&self) -> ProvenanceMap {
ProvenanceMap { ptrs: ::core::clone::Clone::clone(&self.ptrs) }
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ProvenanceMap {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "ProvenanceMap",
"ptrs", &&self.ptrs)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ProvenanceMap {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Vec<(Size, Prov)>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ProvenanceMap {
#[inline]
fn eq(&self, other: &ProvenanceMap) -> bool { self.ptrs == other.ptrs }
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for ProvenanceMap {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.ptrs, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ProvenanceMap {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"ProvenanceMap", false as usize + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"ptrs", &self.ptrs)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1274pub struct ProvenanceMap {
1275 pub ptrs: Vec<(Size, Prov)>,
1278}
1279
1280#[derive(#[automatically_derived]
impl ::core::clone::Clone for Allocation {
#[inline]
fn clone(&self) -> Allocation {
Allocation {
bytes: ::core::clone::Clone::clone(&self.bytes),
provenance: ::core::clone::Clone::clone(&self.provenance),
align: ::core::clone::Clone::clone(&self.align),
mutability: ::core::clone::Clone::clone(&self.mutability),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for Allocation {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "Allocation",
"bytes", &self.bytes, "provenance", &self.provenance, "align",
&self.align, "mutability", &&self.mutability)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for Allocation {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Bytes>;
let _: ::core::cmp::AssertParamIsEq<ProvenanceMap>;
let _: ::core::cmp::AssertParamIsEq<Align>;
let _: ::core::cmp::AssertParamIsEq<Mutability>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for Allocation {
#[inline]
fn eq(&self, other: &Allocation) -> bool {
self.bytes == other.bytes && self.provenance == other.provenance &&
self.align == other.align &&
self.mutability == other.mutability
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for Allocation {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.bytes, state);
::core::hash::Hash::hash(&self.provenance, state);
::core::hash::Hash::hash(&self.align, state);
::core::hash::Hash::hash(&self.mutability, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for Allocation {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"Allocation", false as usize + 1 + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"bytes", &self.bytes)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"provenance", &self.provenance)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"align", &self.align)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"mutability", &self.mutability)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1281pub struct Allocation {
1282 pub bytes: Bytes,
1283 pub provenance: ProvenanceMap,
1284 pub align: Align,
1285 pub mutability: Mutability,
1286}
1287
1288impl Allocation {
1289 pub fn raw_bytes(&self) -> Result<Vec<u8>, Error> {
1291 self.bytes
1292 .iter()
1293 .copied()
1294 .collect::<Option<Vec<_>>>()
1295 .ok_or_else(|| Error(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Found uninitialized bytes: `{0:?}`",
self.bytes))
}))error!("Found uninitialized bytes: `{:?}`", self.bytes))
1296 }
1297
1298 pub fn read_partial_uint(&self, range: Range<usize>) -> Result<u128, Error> {
1300 if range.end - range.start > 16 {
1301 return Err(Error(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Allocation is bigger than largest integer"))
}))error!("Allocation is bigger than largest integer"));
1302 }
1303 if range.end > self.bytes.len() {
1304 return Err(Error(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Range is out of bounds. Allocation length is `{0}`, but requested range `{1:?}`",
self.bytes.len(), range))
}))error!(
1305 "Range is out of bounds. Allocation length is `{}`, but requested range `{:?}`",
1306 self.bytes.len(),
1307 range
1308 ));
1309 }
1310 let raw = self.bytes[range]
1311 .iter()
1312 .copied()
1313 .collect::<Option<Vec<_>>>()
1314 .ok_or_else(|| Error(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Found uninitialized bytes: `{0:?}`",
self.bytes))
}))error!("Found uninitialized bytes: `{:?}`", self.bytes))?;
1315 read_target_uint(&raw)
1316 }
1317
1318 pub fn read_uint(&self) -> Result<u128, Error> {
1320 if self.bytes.len() > 16 {
1321 return Err(Error(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Allocation is bigger than largest integer"))
}))error!("Allocation is bigger than largest integer"));
1322 }
1323 let raw = self.raw_bytes()?;
1324 read_target_uint(&raw)
1325 }
1326
1327 pub fn read_int(&self) -> Result<i128, Error> {
1329 if self.bytes.len() > 16 {
1330 return Err(Error(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Allocation is bigger than largest integer"))
}))error!("Allocation is bigger than largest integer"));
1331 }
1332 let raw = self.raw_bytes()?;
1333 read_target_int(&raw)
1334 }
1335
1336 pub fn read_bool(&self) -> Result<bool, Error> {
1338 match self.read_int()? {
1339 0 => Ok(false),
1340 1 => Ok(true),
1341 val => Err(Error(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Unexpected value for bool: `{0}`",
val))
}))error!("Unexpected value for bool: `{val}`")),
1342 }
1343 }
1344
1345 pub fn is_null(&self) -> Result<bool, Error> {
1347 let len = self.bytes.len();
1348 let ptr_len = MachineInfo::target_pointer_width().bytes();
1349 if len != ptr_len {
1350 return Err(Error(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Expected width of pointer (`{0}`), but found: `{1}`",
ptr_len, len))
}))error!("Expected width of pointer (`{ptr_len}`), but found: `{len}`"));
1351 }
1352 Ok(self.read_uint()? == 0 && self.provenance.ptrs.is_empty())
1353 }
1354}
1355
1356#[derive(#[automatically_derived]
impl ::core::clone::Clone for ConstantKind {
#[inline]
fn clone(&self) -> ConstantKind {
match self {
ConstantKind::Ty(__self_0) =>
ConstantKind::Ty(::core::clone::Clone::clone(__self_0)),
ConstantKind::Allocated(__self_0) =>
ConstantKind::Allocated(::core::clone::Clone::clone(__self_0)),
ConstantKind::Unevaluated(__self_0) =>
ConstantKind::Unevaluated(::core::clone::Clone::clone(__self_0)),
ConstantKind::Param(__self_0) =>
ConstantKind::Param(::core::clone::Clone::clone(__self_0)),
ConstantKind::ZeroSized => ConstantKind::ZeroSized,
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ConstantKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ConstantKind::Ty(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Ty",
&__self_0),
ConstantKind::Allocated(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Allocated", &__self_0),
ConstantKind::Unevaluated(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Unevaluated", &__self_0),
ConstantKind::Param(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Param",
&__self_0),
ConstantKind::ZeroSized =>
::core::fmt::Formatter::write_str(f, "ZeroSized"),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ConstantKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TyConst>;
let _: ::core::cmp::AssertParamIsEq<Allocation>;
let _: ::core::cmp::AssertParamIsEq<UnevaluatedConst>;
let _: ::core::cmp::AssertParamIsEq<ParamConst>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ConstantKind {
#[inline]
fn eq(&self, other: &ConstantKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ConstantKind::Ty(__self_0), ConstantKind::Ty(__arg1_0)) =>
__self_0 == __arg1_0,
(ConstantKind::Allocated(__self_0),
ConstantKind::Allocated(__arg1_0)) => __self_0 == __arg1_0,
(ConstantKind::Unevaluated(__self_0),
ConstantKind::Unevaluated(__arg1_0)) =>
__self_0 == __arg1_0,
(ConstantKind::Param(__self_0), ConstantKind::Param(__arg1_0))
=> __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for ConstantKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
ConstantKind::Ty(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
ConstantKind::Allocated(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
ConstantKind::Unevaluated(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
ConstantKind::Param(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ConstantKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
ConstantKind::Ty(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ConstantKind", 0u32, "Ty", __field0),
ConstantKind::Allocated(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ConstantKind", 1u32, "Allocated", __field0),
ConstantKind::Unevaluated(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ConstantKind", 2u32, "Unevaluated", __field0),
ConstantKind::Param(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ConstantKind", 3u32, "Param", __field0),
ConstantKind::ZeroSized =>
_serde::Serializer::serialize_unit_variant(__serializer,
"ConstantKind", 4u32, "ZeroSized"),
}
}
}
};Serialize)]
1357pub enum ConstantKind {
1358 Ty(TyConst),
1359 Allocated(Allocation),
1360 Unevaluated(UnevaluatedConst),
1361 Param(ParamConst),
1362 ZeroSized,
1365}
1366
1367#[derive(#[automatically_derived]
impl ::core::clone::Clone for ParamConst {
#[inline]
fn clone(&self) -> ParamConst {
ParamConst {
index: ::core::clone::Clone::clone(&self.index),
name: ::core::clone::Clone::clone(&self.name),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ParamConst {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "ParamConst",
"index", &self.index, "name", &&self.name)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ParamConst {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u32>;
let _: ::core::cmp::AssertParamIsEq<String>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ParamConst {
#[inline]
fn eq(&self, other: &ParamConst) -> bool {
self.index == other.index && self.name == other.name
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for ParamConst {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.index, state);
::core::hash::Hash::hash(&self.name, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ParamConst {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"ParamConst", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"index", &self.index)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"name", &self.name)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1368pub struct ParamConst {
1369 pub index: u32,
1370 pub name: String,
1371}
1372
1373#[derive(#[automatically_derived]
impl ::core::clone::Clone for UnevaluatedConst {
#[inline]
fn clone(&self) -> UnevaluatedConst {
UnevaluatedConst {
def: ::core::clone::Clone::clone(&self.def),
args: ::core::clone::Clone::clone(&self.args),
promoted: ::core::clone::Clone::clone(&self.promoted),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for UnevaluatedConst {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"UnevaluatedConst", "def", &self.def, "args", &self.args,
"promoted", &&self.promoted)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for UnevaluatedConst {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ConstDef>;
let _: ::core::cmp::AssertParamIsEq<GenericArgs>;
let _: ::core::cmp::AssertParamIsEq<Option<Promoted>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for UnevaluatedConst {
#[inline]
fn eq(&self, other: &UnevaluatedConst) -> bool {
self.def == other.def && self.args == other.args &&
self.promoted == other.promoted
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for UnevaluatedConst {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.def, state);
::core::hash::Hash::hash(&self.args, state);
::core::hash::Hash::hash(&self.promoted, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for UnevaluatedConst {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"UnevaluatedConst", false as usize + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"def", &self.def)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"args", &self.args)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"promoted", &self.promoted)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1374pub struct UnevaluatedConst {
1375 pub def: ConstDef,
1376 pub args: GenericArgs,
1377 pub promoted: Option<Promoted>,
1378}
1379
1380#[derive(#[automatically_derived]
impl ::core::clone::Clone for TraitSpecializationKind {
#[inline]
fn clone(&self) -> TraitSpecializationKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for TraitSpecializationKind { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for TraitSpecializationKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
TraitSpecializationKind::None => "None",
TraitSpecializationKind::Marker => "Marker",
TraitSpecializationKind::AlwaysApplicable =>
"AlwaysApplicable",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for TraitSpecializationKind {
#[inline]
fn eq(&self, other: &TraitSpecializationKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for TraitSpecializationKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for TraitSpecializationKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
TraitSpecializationKind::None =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TraitSpecializationKind", 0u32, "None"),
TraitSpecializationKind::Marker =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TraitSpecializationKind", 1u32, "Marker"),
TraitSpecializationKind::AlwaysApplicable =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TraitSpecializationKind", 2u32, "AlwaysApplicable"),
}
}
}
};Serialize)]
1381pub enum TraitSpecializationKind {
1382 None,
1383 Marker,
1384 AlwaysApplicable,
1385}
1386
1387#[derive(#[automatically_derived]
impl ::core::clone::Clone for TraitDecl {
#[inline]
fn clone(&self) -> TraitDecl {
TraitDecl {
def_id: ::core::clone::Clone::clone(&self.def_id),
safety: ::core::clone::Clone::clone(&self.safety),
paren_sugar: ::core::clone::Clone::clone(&self.paren_sugar),
has_auto_impl: ::core::clone::Clone::clone(&self.has_auto_impl),
is_marker: ::core::clone::Clone::clone(&self.is_marker),
is_coinductive: ::core::clone::Clone::clone(&self.is_coinductive),
skip_array_during_method_dispatch: ::core::clone::Clone::clone(&self.skip_array_during_method_dispatch),
skip_boxed_slice_during_method_dispatch: ::core::clone::Clone::clone(&self.skip_boxed_slice_during_method_dispatch),
specialization_kind: ::core::clone::Clone::clone(&self.specialization_kind),
must_implement_one_of: ::core::clone::Clone::clone(&self.must_implement_one_of),
force_dyn_incompatible: ::core::clone::Clone::clone(&self.force_dyn_incompatible),
deny_explicit_impl: ::core::clone::Clone::clone(&self.deny_explicit_impl),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TraitDecl {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["def_id", "safety", "paren_sugar", "has_auto_impl", "is_marker",
"is_coinductive", "skip_array_during_method_dispatch",
"skip_boxed_slice_during_method_dispatch",
"specialization_kind", "must_implement_one_of",
"force_dyn_incompatible", "deny_explicit_impl"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.def_id, &self.safety, &self.paren_sugar,
&self.has_auto_impl, &self.is_marker, &self.is_coinductive,
&self.skip_array_during_method_dispatch,
&self.skip_boxed_slice_during_method_dispatch,
&self.specialization_kind, &self.must_implement_one_of,
&self.force_dyn_incompatible, &&self.deny_explicit_impl];
::core::fmt::Formatter::debug_struct_fields_finish(f, "TraitDecl",
names, values)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for TraitDecl {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TraitDef>;
let _: ::core::cmp::AssertParamIsEq<Safety>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<TraitSpecializationKind>;
let _: ::core::cmp::AssertParamIsEq<Option<Vec<Ident>>>;
let _: ::core::cmp::AssertParamIsEq<Option<Span>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for TraitDecl {
#[inline]
fn eq(&self, other: &TraitDecl) -> bool {
self.paren_sugar == other.paren_sugar &&
self.has_auto_impl == other.has_auto_impl &&
self.is_marker == other.is_marker &&
self.is_coinductive == other.is_coinductive &&
self.skip_array_during_method_dispatch ==
other.skip_array_during_method_dispatch &&
self.skip_boxed_slice_during_method_dispatch ==
other.skip_boxed_slice_during_method_dispatch &&
self.deny_explicit_impl == other.deny_explicit_impl &&
self.def_id == other.def_id && self.safety == other.safety
&& self.specialization_kind == other.specialization_kind &&
self.must_implement_one_of == other.must_implement_one_of &&
self.force_dyn_incompatible == other.force_dyn_incompatible
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for TraitDecl {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"TraitDecl",
false as usize + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 +
1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"def_id", &self.def_id)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"safety", &self.safety)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"paren_sugar", &self.paren_sugar)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"has_auto_impl", &self.has_auto_impl)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"is_marker", &self.is_marker)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"is_coinductive", &self.is_coinductive)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"skip_array_during_method_dispatch",
&self.skip_array_during_method_dispatch)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"skip_boxed_slice_during_method_dispatch",
&self.skip_boxed_slice_during_method_dispatch)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"specialization_kind", &self.specialization_kind)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"must_implement_one_of", &self.must_implement_one_of)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"force_dyn_incompatible", &self.force_dyn_incompatible)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"deny_explicit_impl", &self.deny_explicit_impl)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1388pub struct TraitDecl {
1389 pub def_id: TraitDef,
1390 pub safety: Safety,
1391 pub paren_sugar: bool,
1392 pub has_auto_impl: bool,
1393 pub is_marker: bool,
1394 pub is_coinductive: bool,
1395 pub skip_array_during_method_dispatch: bool,
1396 pub skip_boxed_slice_during_method_dispatch: bool,
1397 pub specialization_kind: TraitSpecializationKind,
1398 pub must_implement_one_of: Option<Vec<Ident>>,
1399 pub force_dyn_incompatible: Option<Span>,
1400 pub deny_explicit_impl: bool,
1401}
1402
1403impl TraitDecl {
1404 pub fn generics_of(&self) -> Generics {
1405 with(|cx| cx.generics_of(self.def_id.0))
1406 }
1407
1408 pub fn predicates_of(&self) -> GenericPredicates {
1409 with(|cx| cx.predicates_of(self.def_id.0))
1410 }
1411
1412 pub fn explicit_predicates_of(&self) -> GenericPredicates {
1413 with(|cx| cx.explicit_predicates_of(self.def_id.0))
1414 }
1415}
1416
1417pub type ImplTrait = EarlyBinder<TraitRef>;
1418
1419#[derive(#[automatically_derived]
impl ::core::clone::Clone for TraitRef {
#[inline]
fn clone(&self) -> TraitRef {
TraitRef {
def_id: ::core::clone::Clone::clone(&self.def_id),
args: ::core::clone::Clone::clone(&self.args),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TraitRef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "TraitRef",
"def_id", &self.def_id, "args", &&self.args)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for TraitRef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TraitDef>;
let _: ::core::cmp::AssertParamIsEq<GenericArgs>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for TraitRef {
#[inline]
fn eq(&self, other: &TraitRef) -> bool {
self.def_id == other.def_id && self.args == other.args
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for TraitRef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"TraitRef", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"def_id", &self.def_id)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"args", &self.args)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1421pub struct TraitRef {
1422 pub def_id: TraitDef,
1423 args: GenericArgs,
1426}
1427
1428impl TraitRef {
1429 pub fn new(def_id: TraitDef, self_ty: Ty, gen_args: &GenericArgs) -> TraitRef {
1430 let mut args = <[_]>::into_vec(::alloc::boxed::box_new([GenericArgKind::Type(self_ty)]))vec![GenericArgKind::Type(self_ty)];
1431 args.extend_from_slice(&gen_args.0);
1432 TraitRef { def_id, args: GenericArgs(args) }
1433 }
1434
1435 pub fn try_new(def_id: TraitDef, args: GenericArgs) -> Result<TraitRef, ()> {
1436 match &args.0[..] {
1437 [GenericArgKind::Type(_), ..] => Ok(TraitRef { def_id, args }),
1438 _ => Err(()),
1439 }
1440 }
1441
1442 pub fn args(&self) -> &GenericArgs {
1443 &self.args
1444 }
1445
1446 pub fn self_ty(&self) -> Ty {
1447 let GenericArgKind::Type(self_ty) = self.args.0[0] else {
1448 {
::core::panicking::panic_fmt(format_args!("Self must be a type, but found: {0:?}",
self.args.0[0]));
}panic!("Self must be a type, but found: {:?}", self.args.0[0])
1449 };
1450 self_ty
1451 }
1452}
1453
1454#[derive(#[automatically_derived]
impl ::core::clone::Clone for Generics {
#[inline]
fn clone(&self) -> Generics {
Generics {
parent: ::core::clone::Clone::clone(&self.parent),
parent_count: ::core::clone::Clone::clone(&self.parent_count),
params: ::core::clone::Clone::clone(&self.params),
param_def_id_to_index: ::core::clone::Clone::clone(&self.param_def_id_to_index),
has_self: ::core::clone::Clone::clone(&self.has_self),
has_late_bound_regions: ::core::clone::Clone::clone(&self.has_late_bound_regions),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for Generics {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["parent", "parent_count", "params", "param_def_id_to_index",
"has_self", "has_late_bound_regions"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.parent, &self.parent_count, &self.params,
&self.param_def_id_to_index, &self.has_self,
&&self.has_late_bound_regions];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Generics",
names, values)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for Generics {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Option<GenericDef>>;
let _: ::core::cmp::AssertParamIsEq<usize>;
let _: ::core::cmp::AssertParamIsEq<Vec<GenericParamDef>>;
let _: ::core::cmp::AssertParamIsEq<Vec<(GenericDef, u32)>>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Option<Span>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for Generics {
#[inline]
fn eq(&self, other: &Generics) -> bool {
self.has_self == other.has_self && self.parent == other.parent &&
self.parent_count == other.parent_count &&
self.params == other.params &&
self.param_def_id_to_index == other.param_def_id_to_index &&
self.has_late_bound_regions == other.has_late_bound_regions
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for Generics {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"Generics", false as usize + 1 + 1 + 1 + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"parent", &self.parent)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"parent_count", &self.parent_count)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"params", &self.params)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"param_def_id_to_index", &self.param_def_id_to_index)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"has_self", &self.has_self)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"has_late_bound_regions", &self.has_late_bound_regions)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1455pub struct Generics {
1456 pub parent: Option<GenericDef>,
1457 pub parent_count: usize,
1458 pub params: Vec<GenericParamDef>,
1459 pub param_def_id_to_index: Vec<(GenericDef, u32)>,
1460 pub has_self: bool,
1461 pub has_late_bound_regions: Option<Span>,
1462}
1463
1464#[derive(#[automatically_derived]
impl ::core::clone::Clone for GenericParamDefKind {
#[inline]
fn clone(&self) -> GenericParamDefKind {
match self {
GenericParamDefKind::Lifetime => GenericParamDefKind::Lifetime,
GenericParamDefKind::Type {
has_default: __self_0, synthetic: __self_1 } =>
GenericParamDefKind::Type {
has_default: ::core::clone::Clone::clone(__self_0),
synthetic: ::core::clone::Clone::clone(__self_1),
},
GenericParamDefKind::Const { has_default: __self_0 } =>
GenericParamDefKind::Const {
has_default: ::core::clone::Clone::clone(__self_0),
},
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for GenericParamDefKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
GenericParamDefKind::Lifetime =>
::core::fmt::Formatter::write_str(f, "Lifetime"),
GenericParamDefKind::Type {
has_default: __self_0, synthetic: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "Type",
"has_default", __self_0, "synthetic", &__self_1),
GenericParamDefKind::Const { has_default: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Const",
"has_default", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for GenericParamDefKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for GenericParamDefKind {
#[inline]
fn eq(&self, other: &GenericParamDefKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(GenericParamDefKind::Type {
has_default: __self_0, synthetic: __self_1 },
GenericParamDefKind::Type {
has_default: __arg1_0, synthetic: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(GenericParamDefKind::Const { has_default: __self_0 },
GenericParamDefKind::Const { has_default: __arg1_0 }) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for GenericParamDefKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
GenericParamDefKind::Lifetime =>
_serde::Serializer::serialize_unit_variant(__serializer,
"GenericParamDefKind", 0u32, "Lifetime"),
GenericParamDefKind::Type { ref has_default, ref synthetic }
=> {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"GenericParamDefKind", 1u32, "Type", 0 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"has_default", has_default)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"synthetic", synthetic)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
GenericParamDefKind::Const { ref has_default } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"GenericParamDefKind", 2u32, "Const", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"has_default", has_default)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
}
}
}
};Serialize)]
1465pub enum GenericParamDefKind {
1466 Lifetime,
1467 Type { has_default: bool, synthetic: bool },
1468 Const { has_default: bool },
1469}
1470
1471#[derive(#[automatically_derived]
impl ::core::clone::Clone for GenericParamDef {
#[inline]
fn clone(&self) -> GenericParamDef {
GenericParamDef {
name: ::core::clone::Clone::clone(&self.name),
def_id: ::core::clone::Clone::clone(&self.def_id),
index: ::core::clone::Clone::clone(&self.index),
pure_wrt_drop: ::core::clone::Clone::clone(&self.pure_wrt_drop),
kind: ::core::clone::Clone::clone(&self.kind),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for GenericParamDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f,
"GenericParamDef", "name", &self.name, "def_id", &self.def_id,
"index", &self.index, "pure_wrt_drop", &self.pure_wrt_drop,
"kind", &&self.kind)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for GenericParamDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<super::Symbol>;
let _: ::core::cmp::AssertParamIsEq<GenericDef>;
let _: ::core::cmp::AssertParamIsEq<u32>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<GenericParamDefKind>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for GenericParamDef {
#[inline]
fn eq(&self, other: &GenericParamDef) -> bool {
self.index == other.index && self.pure_wrt_drop == other.pure_wrt_drop
&& self.name == other.name && self.def_id == other.def_id &&
self.kind == other.kind
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for GenericParamDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"GenericParamDef", false as usize + 1 + 1 + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"name", &self.name)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"def_id", &self.def_id)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"index", &self.index)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"pure_wrt_drop", &self.pure_wrt_drop)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"kind", &self.kind)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1472pub struct GenericParamDef {
1473 pub name: super::Symbol,
1474 pub def_id: GenericDef,
1475 pub index: u32,
1476 pub pure_wrt_drop: bool,
1477 pub kind: GenericParamDefKind,
1478}
1479
1480pub struct GenericPredicates {
1481 pub parent: Option<TraitDef>,
1482 pub predicates: Vec<(PredicateKind, Span)>,
1483}
1484
1485#[derive(#[automatically_derived]
impl ::core::clone::Clone for PredicateKind {
#[inline]
fn clone(&self) -> PredicateKind {
match self {
PredicateKind::Clause(__self_0) =>
PredicateKind::Clause(::core::clone::Clone::clone(__self_0)),
PredicateKind::DynCompatible(__self_0) =>
PredicateKind::DynCompatible(::core::clone::Clone::clone(__self_0)),
PredicateKind::SubType(__self_0) =>
PredicateKind::SubType(::core::clone::Clone::clone(__self_0)),
PredicateKind::Coerce(__self_0) =>
PredicateKind::Coerce(::core::clone::Clone::clone(__self_0)),
PredicateKind::ConstEquate(__self_0, __self_1) =>
PredicateKind::ConstEquate(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
PredicateKind::Ambiguous => PredicateKind::Ambiguous,
PredicateKind::AliasRelate(__self_0, __self_1, __self_2) =>
PredicateKind::AliasRelate(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for PredicateKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
PredicateKind::Clause(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Clause",
&__self_0),
PredicateKind::DynCompatible(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"DynCompatible", &__self_0),
PredicateKind::SubType(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"SubType", &__self_0),
PredicateKind::Coerce(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Coerce",
&__self_0),
PredicateKind::ConstEquate(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"ConstEquate", __self_0, &__self_1),
PredicateKind::Ambiguous =>
::core::fmt::Formatter::write_str(f, "Ambiguous"),
PredicateKind::AliasRelate(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f,
"AliasRelate", __self_0, __self_1, &__self_2),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for PredicateKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ClauseKind>;
let _: ::core::cmp::AssertParamIsEq<TraitDef>;
let _: ::core::cmp::AssertParamIsEq<SubtypePredicate>;
let _: ::core::cmp::AssertParamIsEq<CoercePredicate>;
let _: ::core::cmp::AssertParamIsEq<TyConst>;
let _: ::core::cmp::AssertParamIsEq<TermKind>;
let _: ::core::cmp::AssertParamIsEq<AliasRelationDirection>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for PredicateKind {
#[inline]
fn eq(&self, other: &PredicateKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(PredicateKind::Clause(__self_0),
PredicateKind::Clause(__arg1_0)) => __self_0 == __arg1_0,
(PredicateKind::DynCompatible(__self_0),
PredicateKind::DynCompatible(__arg1_0)) =>
__self_0 == __arg1_0,
(PredicateKind::SubType(__self_0),
PredicateKind::SubType(__arg1_0)) => __self_0 == __arg1_0,
(PredicateKind::Coerce(__self_0),
PredicateKind::Coerce(__arg1_0)) => __self_0 == __arg1_0,
(PredicateKind::ConstEquate(__self_0, __self_1),
PredicateKind::ConstEquate(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(PredicateKind::AliasRelate(__self_0, __self_1, __self_2),
PredicateKind::AliasRelate(__arg1_0, __arg1_1, __arg1_2)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
_ => true,
}
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for PredicateKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
PredicateKind::Clause(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"PredicateKind", 0u32, "Clause", __field0),
PredicateKind::DynCompatible(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"PredicateKind", 1u32, "DynCompatible", __field0),
PredicateKind::SubType(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"PredicateKind", 2u32, "SubType", __field0),
PredicateKind::Coerce(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"PredicateKind", 3u32, "Coerce", __field0),
PredicateKind::ConstEquate(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"PredicateKind", 4u32, "ConstEquate", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
PredicateKind::Ambiguous =>
_serde::Serializer::serialize_unit_variant(__serializer,
"PredicateKind", 5u32, "Ambiguous"),
PredicateKind::AliasRelate(ref __field0, ref __field1,
ref __field2) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"PredicateKind", 6u32, "AliasRelate", 0 + 1 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field2)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
}
}
}
};Serialize)]
1486pub enum PredicateKind {
1487 Clause(ClauseKind),
1488 DynCompatible(TraitDef),
1489 SubType(SubtypePredicate),
1490 Coerce(CoercePredicate),
1491 ConstEquate(TyConst, TyConst),
1492 Ambiguous,
1493 AliasRelate(TermKind, TermKind, AliasRelationDirection),
1494}
1495
1496#[derive(#[automatically_derived]
impl ::core::clone::Clone for ClauseKind {
#[inline]
fn clone(&self) -> ClauseKind {
match self {
ClauseKind::Trait(__self_0) =>
ClauseKind::Trait(::core::clone::Clone::clone(__self_0)),
ClauseKind::RegionOutlives(__self_0) =>
ClauseKind::RegionOutlives(::core::clone::Clone::clone(__self_0)),
ClauseKind::TypeOutlives(__self_0) =>
ClauseKind::TypeOutlives(::core::clone::Clone::clone(__self_0)),
ClauseKind::Projection(__self_0) =>
ClauseKind::Projection(::core::clone::Clone::clone(__self_0)),
ClauseKind::ConstArgHasType(__self_0, __self_1) =>
ClauseKind::ConstArgHasType(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ClauseKind::WellFormed(__self_0) =>
ClauseKind::WellFormed(::core::clone::Clone::clone(__self_0)),
ClauseKind::ConstEvaluatable(__self_0) =>
ClauseKind::ConstEvaluatable(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ClauseKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ClauseKind::Trait(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Trait",
&__self_0),
ClauseKind::RegionOutlives(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"RegionOutlives", &__self_0),
ClauseKind::TypeOutlives(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TypeOutlives", &__self_0),
ClauseKind::Projection(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Projection", &__self_0),
ClauseKind::ConstArgHasType(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"ConstArgHasType", __self_0, &__self_1),
ClauseKind::WellFormed(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"WellFormed", &__self_0),
ClauseKind::ConstEvaluatable(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ConstEvaluatable", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ClauseKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TraitPredicate>;
let _: ::core::cmp::AssertParamIsEq<RegionOutlivesPredicate>;
let _: ::core::cmp::AssertParamIsEq<TypeOutlivesPredicate>;
let _: ::core::cmp::AssertParamIsEq<ProjectionPredicate>;
let _: ::core::cmp::AssertParamIsEq<TyConst>;
let _: ::core::cmp::AssertParamIsEq<Ty>;
let _: ::core::cmp::AssertParamIsEq<TermKind>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ClauseKind {
#[inline]
fn eq(&self, other: &ClauseKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ClauseKind::Trait(__self_0), ClauseKind::Trait(__arg1_0)) =>
__self_0 == __arg1_0,
(ClauseKind::RegionOutlives(__self_0),
ClauseKind::RegionOutlives(__arg1_0)) =>
__self_0 == __arg1_0,
(ClauseKind::TypeOutlives(__self_0),
ClauseKind::TypeOutlives(__arg1_0)) => __self_0 == __arg1_0,
(ClauseKind::Projection(__self_0),
ClauseKind::Projection(__arg1_0)) => __self_0 == __arg1_0,
(ClauseKind::ConstArgHasType(__self_0, __self_1),
ClauseKind::ConstArgHasType(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(ClauseKind::WellFormed(__self_0),
ClauseKind::WellFormed(__arg1_0)) => __self_0 == __arg1_0,
(ClauseKind::ConstEvaluatable(__self_0),
ClauseKind::ConstEvaluatable(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ClauseKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
ClauseKind::Trait(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ClauseKind", 0u32, "Trait", __field0),
ClauseKind::RegionOutlives(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ClauseKind", 1u32, "RegionOutlives", __field0),
ClauseKind::TypeOutlives(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ClauseKind", 2u32, "TypeOutlives", __field0),
ClauseKind::Projection(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ClauseKind", 3u32, "Projection", __field0),
ClauseKind::ConstArgHasType(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"ClauseKind", 4u32, "ConstArgHasType", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
ClauseKind::WellFormed(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ClauseKind", 5u32, "WellFormed", __field0),
ClauseKind::ConstEvaluatable(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ClauseKind", 6u32, "ConstEvaluatable", __field0),
}
}
}
};Serialize)]
1497pub enum ClauseKind {
1498 Trait(TraitPredicate),
1499 RegionOutlives(RegionOutlivesPredicate),
1500 TypeOutlives(TypeOutlivesPredicate),
1501 Projection(ProjectionPredicate),
1502 ConstArgHasType(TyConst, Ty),
1503 WellFormed(TermKind),
1504 ConstEvaluatable(TyConst),
1505}
1506
1507#[derive(#[automatically_derived]
impl ::core::clone::Clone for ClosureKind {
#[inline]
fn clone(&self) -> ClosureKind {
match self {
ClosureKind::Fn => ClosureKind::Fn,
ClosureKind::FnMut => ClosureKind::FnMut,
ClosureKind::FnOnce => ClosureKind::FnOnce,
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ClosureKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
ClosureKind::Fn => "Fn",
ClosureKind::FnMut => "FnMut",
ClosureKind::FnOnce => "FnOnce",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ClosureKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ClosureKind {
#[inline]
fn eq(&self, other: &ClosureKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ClosureKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
ClosureKind::Fn =>
_serde::Serializer::serialize_unit_variant(__serializer,
"ClosureKind", 0u32, "Fn"),
ClosureKind::FnMut =>
_serde::Serializer::serialize_unit_variant(__serializer,
"ClosureKind", 1u32, "FnMut"),
ClosureKind::FnOnce =>
_serde::Serializer::serialize_unit_variant(__serializer,
"ClosureKind", 2u32, "FnOnce"),
}
}
}
};Serialize)]
1508pub enum ClosureKind {
1509 Fn,
1510 FnMut,
1511 FnOnce,
1512}
1513
1514#[derive(#[automatically_derived]
impl ::core::clone::Clone for SubtypePredicate {
#[inline]
fn clone(&self) -> SubtypePredicate {
SubtypePredicate {
a: ::core::clone::Clone::clone(&self.a),
b: ::core::clone::Clone::clone(&self.b),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for SubtypePredicate {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"SubtypePredicate", "a", &self.a, "b", &&self.b)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for SubtypePredicate {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ty>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for SubtypePredicate {
#[inline]
fn eq(&self, other: &SubtypePredicate) -> bool {
self.a == other.a && self.b == other.b
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for SubtypePredicate {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"SubtypePredicate", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"a", &self.a)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"b", &self.b)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1515pub struct SubtypePredicate {
1516 pub a: Ty,
1517 pub b: Ty,
1518}
1519
1520#[derive(#[automatically_derived]
impl ::core::clone::Clone for CoercePredicate {
#[inline]
fn clone(&self) -> CoercePredicate {
CoercePredicate {
a: ::core::clone::Clone::clone(&self.a),
b: ::core::clone::Clone::clone(&self.b),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for CoercePredicate {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"CoercePredicate", "a", &self.a, "b", &&self.b)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for CoercePredicate {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ty>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for CoercePredicate {
#[inline]
fn eq(&self, other: &CoercePredicate) -> bool {
self.a == other.a && self.b == other.b
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for CoercePredicate {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"CoercePredicate", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"a", &self.a)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"b", &self.b)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1521pub struct CoercePredicate {
1522 pub a: Ty,
1523 pub b: Ty,
1524}
1525
1526#[derive(#[automatically_derived]
impl ::core::clone::Clone for AliasRelationDirection {
#[inline]
fn clone(&self) -> AliasRelationDirection {
match self {
AliasRelationDirection::Equate => AliasRelationDirection::Equate,
AliasRelationDirection::Subtype =>
AliasRelationDirection::Subtype,
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for AliasRelationDirection {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
AliasRelationDirection::Equate => "Equate",
AliasRelationDirection::Subtype => "Subtype",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for AliasRelationDirection {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for AliasRelationDirection {
#[inline]
fn eq(&self, other: &AliasRelationDirection) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for AliasRelationDirection {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
AliasRelationDirection::Equate =>
_serde::Serializer::serialize_unit_variant(__serializer,
"AliasRelationDirection", 0u32, "Equate"),
AliasRelationDirection::Subtype =>
_serde::Serializer::serialize_unit_variant(__serializer,
"AliasRelationDirection", 1u32, "Subtype"),
}
}
}
};Serialize)]
1527pub enum AliasRelationDirection {
1528 Equate,
1529 Subtype,
1530}
1531
1532#[derive(#[automatically_derived]
impl ::core::clone::Clone for TraitPredicate {
#[inline]
fn clone(&self) -> TraitPredicate {
TraitPredicate {
trait_ref: ::core::clone::Clone::clone(&self.trait_ref),
polarity: ::core::clone::Clone::clone(&self.polarity),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TraitPredicate {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"TraitPredicate", "trait_ref", &self.trait_ref, "polarity",
&&self.polarity)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for TraitPredicate {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TraitRef>;
let _: ::core::cmp::AssertParamIsEq<PredicatePolarity>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for TraitPredicate {
#[inline]
fn eq(&self, other: &TraitPredicate) -> bool {
self.trait_ref == other.trait_ref && self.polarity == other.polarity
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for TraitPredicate {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"TraitPredicate", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"trait_ref", &self.trait_ref)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"polarity", &self.polarity)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1533pub struct TraitPredicate {
1534 pub trait_ref: TraitRef,
1535 pub polarity: PredicatePolarity,
1536}
1537
1538#[derive(#[automatically_derived]
impl<A: ::core::clone::Clone, B: ::core::clone::Clone> ::core::clone::Clone
for OutlivesPredicate<A, B> {
#[inline]
fn clone(&self) -> OutlivesPredicate<A, B> {
OutlivesPredicate(::core::clone::Clone::clone(&self.0),
::core::clone::Clone::clone(&self.1))
}
}Clone, #[automatically_derived]
impl<A: ::core::fmt::Debug, B: ::core::fmt::Debug> ::core::fmt::Debug for
OutlivesPredicate<A, B> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"OutlivesPredicate", &self.0, &&self.1)
}
}Debug, #[automatically_derived]
impl<A: ::core::cmp::Eq, B: ::core::cmp::Eq> ::core::cmp::Eq for
OutlivesPredicate<A, B> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<A>;
let _: ::core::cmp::AssertParamIsEq<B>;
}
}Eq, #[automatically_derived]
impl<A: ::core::cmp::PartialEq, B: ::core::cmp::PartialEq>
::core::cmp::PartialEq for OutlivesPredicate<A, B> {
#[inline]
fn eq(&self, other: &OutlivesPredicate<A, B>) -> bool {
self.0 == other.0 && self.1 == other.1
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<A, B> _serde::Serialize for OutlivesPredicate<A, B> where
A: _serde::Serialize, B: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_tuple_struct(__serializer,
"OutlivesPredicate", 0 + 1 + 1)?;
_serde::ser::SerializeTupleStruct::serialize_field(&mut __serde_state,
&self.0)?;
_serde::ser::SerializeTupleStruct::serialize_field(&mut __serde_state,
&self.1)?;
_serde::ser::SerializeTupleStruct::end(__serde_state)
}
}
};Serialize)]
1539pub struct OutlivesPredicate<A, B>(pub A, pub B);
1540
1541pub type RegionOutlivesPredicate = OutlivesPredicate<Region, Region>;
1542pub type TypeOutlivesPredicate = OutlivesPredicate<Ty, Region>;
1543
1544#[derive(#[automatically_derived]
impl ::core::clone::Clone for ProjectionPredicate {
#[inline]
fn clone(&self) -> ProjectionPredicate {
ProjectionPredicate {
projection_term: ::core::clone::Clone::clone(&self.projection_term),
term: ::core::clone::Clone::clone(&self.term),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ProjectionPredicate {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"ProjectionPredicate", "projection_term", &self.projection_term,
"term", &&self.term)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ProjectionPredicate {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<AliasTerm>;
let _: ::core::cmp::AssertParamIsEq<TermKind>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ProjectionPredicate {
#[inline]
fn eq(&self, other: &ProjectionPredicate) -> bool {
self.projection_term == other.projection_term &&
self.term == other.term
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ProjectionPredicate {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"ProjectionPredicate", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"projection_term", &self.projection_term)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"term", &self.term)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1545pub struct ProjectionPredicate {
1546 pub projection_term: AliasTerm,
1547 pub term: TermKind,
1548}
1549
1550#[derive(#[automatically_derived]
impl ::core::clone::Clone for ImplPolarity {
#[inline]
fn clone(&self) -> ImplPolarity {
match self {
ImplPolarity::Positive => ImplPolarity::Positive,
ImplPolarity::Negative => ImplPolarity::Negative,
ImplPolarity::Reservation => ImplPolarity::Reservation,
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ImplPolarity {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
ImplPolarity::Positive => "Positive",
ImplPolarity::Negative => "Negative",
ImplPolarity::Reservation => "Reservation",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ImplPolarity {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ImplPolarity {
#[inline]
fn eq(&self, other: &ImplPolarity) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ImplPolarity {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
ImplPolarity::Positive =>
_serde::Serializer::serialize_unit_variant(__serializer,
"ImplPolarity", 0u32, "Positive"),
ImplPolarity::Negative =>
_serde::Serializer::serialize_unit_variant(__serializer,
"ImplPolarity", 1u32, "Negative"),
ImplPolarity::Reservation =>
_serde::Serializer::serialize_unit_variant(__serializer,
"ImplPolarity", 2u32, "Reservation"),
}
}
}
};Serialize)]
1551pub enum ImplPolarity {
1552 Positive,
1553 Negative,
1554 Reservation,
1555}
1556
1557#[derive(#[automatically_derived]
impl ::core::clone::Clone for PredicatePolarity {
#[inline]
fn clone(&self) -> PredicatePolarity {
match self {
PredicatePolarity::Positive => PredicatePolarity::Positive,
PredicatePolarity::Negative => PredicatePolarity::Negative,
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for PredicatePolarity {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
PredicatePolarity::Positive => "Positive",
PredicatePolarity::Negative => "Negative",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for PredicatePolarity {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for PredicatePolarity {
#[inline]
fn eq(&self, other: &PredicatePolarity) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for PredicatePolarity {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
PredicatePolarity::Positive =>
_serde::Serializer::serialize_unit_variant(__serializer,
"PredicatePolarity", 0u32, "Positive"),
PredicatePolarity::Negative =>
_serde::Serializer::serialize_unit_variant(__serializer,
"PredicatePolarity", 1u32, "Negative"),
}
}
}
};Serialize)]
1558pub enum PredicatePolarity {
1559 Positive,
1560 Negative,
1561}
1562
1563macro_rules! index_impl {
1564 ($name:ident) => {
1565 impl crate::IndexedVal for $name {
1566 fn to_val(index: usize) -> Self {
1567 $name(index, $crate::ThreadLocalIndex)
1568 }
1569 fn to_index(&self) -> usize {
1570 self.0
1571 }
1572 }
1573 $crate::ty::serialize_index_impl!($name);
1574 };
1575}
1576macro_rules! serialize_index_impl {
1577 ($name:ident) => {
1578 impl ::serde::Serialize for $name {
1579 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1580 where
1581 S: ::serde::Serializer,
1582 {
1583 let n: usize = self.0; ::serde::Serialize::serialize(&n, serializer)
1585 }
1586 }
1587 };
1588}
1589pub(crate) use {index_impl, serialize_index_impl};
1590
1591impl crate::IndexedVal for TyConstId {
fn to_val(index: usize) -> Self {
TyConstId(index, crate::ThreadLocalIndex)
}
fn to_index(&self) -> usize { self.0 }
}
impl ::serde::Serialize for TyConstId {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where
S: ::serde::Serializer {
let n: usize = self.0;
::serde::Serialize::serialize(&n, serializer)
}
}index_impl!(TyConstId);
1592impl crate::IndexedVal for MirConstId {
fn to_val(index: usize) -> Self {
MirConstId(index, crate::ThreadLocalIndex)
}
fn to_index(&self) -> usize { self.0 }
}
impl ::serde::Serialize for MirConstId {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where
S: ::serde::Serializer {
let n: usize = self.0;
::serde::Serialize::serialize(&n, serializer)
}
}index_impl!(MirConstId);
1593impl crate::IndexedVal for Ty {
fn to_val(index: usize) -> Self { Ty(index, crate::ThreadLocalIndex) }
fn to_index(&self) -> usize { self.0 }
}
impl ::serde::Serialize for Ty {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where
S: ::serde::Serializer {
let n: usize = self.0;
::serde::Serialize::serialize(&n, serializer)
}
}index_impl!(Ty);
1594impl crate::IndexedVal for Span {
fn to_val(index: usize) -> Self { Span(index, crate::ThreadLocalIndex) }
fn to_index(&self) -> usize { self.0 }
}
impl ::serde::Serialize for Span {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where
S: ::serde::Serializer {
let n: usize = self.0;
::serde::Serialize::serialize(&n, serializer)
}
}index_impl!(Span);
1595
1596#[derive(#[automatically_derived]
impl ::core::clone::Clone for VariantIdx {
#[inline]
fn clone(&self) -> VariantIdx {
let _: ::core::clone::AssertParamIsClone<usize>;
let _: ::core::clone::AssertParamIsClone<ThreadLocalIndex>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for VariantIdx { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for VariantIdx {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field2_finish(f, "VariantIdx",
&self.0, &&self.1)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for VariantIdx {
#[inline]
fn eq(&self, other: &VariantIdx) -> bool {
self.0 == other.0 && self.1 == other.1
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for VariantIdx {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<usize>;
let _: ::core::cmp::AssertParamIsEq<ThreadLocalIndex>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for VariantIdx {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state);
::core::hash::Hash::hash(&self.1, state)
}
}Hash)]
1610pub struct VariantIdx(usize, ThreadLocalIndex);
1611
1612impl crate::IndexedVal for VariantIdx {
fn to_val(index: usize) -> Self {
VariantIdx(index, crate::ThreadLocalIndex)
}
fn to_index(&self) -> usize { self.0 }
}
impl ::serde::Serialize for VariantIdx {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where
S: ::serde::Serializer {
let n: usize = self.0;
::serde::Serialize::serialize(&n, serializer)
}
}index_impl!(VariantIdx);
1613
1614#[automatically_derived]
impl ::core::clone::Clone for OpaqueDef {
#[inline]
fn clone(&self) -> OpaqueDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for OpaqueDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for OpaqueDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for OpaqueDef {
#[inline]
fn eq(&self, other: &OpaqueDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for OpaqueDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for OpaqueDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "OpaqueDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for OpaqueDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for OpaqueDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"OpaqueDef", &self.0)
}
}
};
impl CrateDef for OpaqueDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
1615 #[derive(Serialize)]
1617 pub OpaqueDef;
1618}
1619
1620#[automatically_derived]
impl ::core::clone::Clone for AssocDef {
#[inline]
fn clone(&self) -> AssocDef {
let _: ::core::clone::AssertParamIsClone<DefId>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for AssocDef { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for AssocDef { }
#[automatically_derived]
impl ::core::cmp::PartialEq for AssocDef {
#[inline]
fn eq(&self, other: &AssocDef) -> bool { self.0 == other.0 }
}
#[automatically_derived]
impl ::core::cmp::Eq for AssocDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DefId>;
}
}
#[automatically_derived]
impl ::core::fmt::Debug for AssocDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "AssocDef",
&&self.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for AssocDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for AssocDef {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"AssocDef", &self.0)
}
}
};
impl CrateDef for AssocDef {
fn def_id(&self) -> DefId { self.0 }
}crate_def! {
1621 #[derive(Serialize)]
1622 pub AssocDef;
1623}
1624
1625#[derive(#[automatically_derived]
impl ::core::clone::Clone for AssocItem {
#[inline]
fn clone(&self) -> AssocItem {
AssocItem {
def_id: ::core::clone::Clone::clone(&self.def_id),
kind: ::core::clone::Clone::clone(&self.kind),
container: ::core::clone::Clone::clone(&self.container),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for AssocItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "AssocItem",
"def_id", &self.def_id, "kind", &self.kind, "container",
&&self.container)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for AssocItem {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<AssocDef>;
let _: ::core::cmp::AssertParamIsEq<AssocKind>;
let _: ::core::cmp::AssertParamIsEq<AssocContainer>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for AssocItem {
#[inline]
fn eq(&self, other: &AssocItem) -> bool {
self.def_id == other.def_id && self.kind == other.kind &&
self.container == other.container
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for AssocItem {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"AssocItem", false as usize + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"def_id", &self.def_id)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"kind", &self.kind)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"container", &self.container)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
1626pub struct AssocItem {
1627 pub def_id: AssocDef,
1628 pub kind: AssocKind,
1629 pub container: AssocContainer,
1630}
1631
1632#[derive(#[automatically_derived]
impl ::core::clone::Clone for AssocTypeData {
#[inline]
fn clone(&self) -> AssocTypeData {
match self {
AssocTypeData::Normal(__self_0) =>
AssocTypeData::Normal(::core::clone::Clone::clone(__self_0)),
AssocTypeData::Rpitit(__self_0) =>
AssocTypeData::Rpitit(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for AssocTypeData {
#[inline]
fn eq(&self, other: &AssocTypeData) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(AssocTypeData::Normal(__self_0),
AssocTypeData::Normal(__arg1_0)) => __self_0 == __arg1_0,
(AssocTypeData::Rpitit(__self_0),
AssocTypeData::Rpitit(__arg1_0)) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::fmt::Debug for AssocTypeData {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AssocTypeData::Normal(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Normal",
&__self_0),
AssocTypeData::Rpitit(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Rpitit",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for AssocTypeData {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Symbol>;
let _: ::core::cmp::AssertParamIsEq<ImplTraitInTraitData>;
}
}Eq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for AssocTypeData {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
AssocTypeData::Normal(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"AssocTypeData", 0u32, "Normal", __field0),
AssocTypeData::Rpitit(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"AssocTypeData", 1u32, "Rpitit", __field0),
}
}
}
};Serialize)]
1633pub enum AssocTypeData {
1634 Normal(Symbol),
1635 Rpitit(ImplTraitInTraitData),
1639}
1640
1641#[derive(#[automatically_derived]
impl ::core::clone::Clone for AssocKind {
#[inline]
fn clone(&self) -> AssocKind {
match self {
AssocKind::Const { name: __self_0 } =>
AssocKind::Const {
name: ::core::clone::Clone::clone(__self_0),
},
AssocKind::Fn { name: __self_0, has_self: __self_1 } =>
AssocKind::Fn {
name: ::core::clone::Clone::clone(__self_0),
has_self: ::core::clone::Clone::clone(__self_1),
},
AssocKind::Type { data: __self_0 } =>
AssocKind::Type {
data: ::core::clone::Clone::clone(__self_0),
},
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for AssocKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AssocKind::Const { name: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Const",
"name", &__self_0),
AssocKind::Fn { name: __self_0, has_self: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "Fn",
"name", __self_0, "has_self", &__self_1),
AssocKind::Type { data: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Type",
"data", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for AssocKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Symbol>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<AssocTypeData>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for AssocKind {
#[inline]
fn eq(&self, other: &AssocKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(AssocKind::Const { name: __self_0 }, AssocKind::Const {
name: __arg1_0 }) => __self_0 == __arg1_0,
(AssocKind::Fn { name: __self_0, has_self: __self_1 },
AssocKind::Fn { name: __arg1_0, has_self: __arg1_1 }) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0,
(AssocKind::Type { data: __self_0 }, AssocKind::Type {
data: __arg1_0 }) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for AssocKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
AssocKind::Const { ref name } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"AssocKind", 0u32, "Const", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"name", name)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
AssocKind::Fn { ref name, ref has_self } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"AssocKind", 1u32, "Fn", 0 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"name", name)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"has_self", has_self)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
AssocKind::Type { ref data } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"AssocKind", 2u32, "Type", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"data", data)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
}
}
}
};Serialize)]
1642pub enum AssocKind {
1643 Const { name: Symbol },
1644 Fn { name: Symbol, has_self: bool },
1645 Type { data: AssocTypeData },
1646}
1647
1648#[derive(#[automatically_derived]
impl ::core::clone::Clone for AssocContainer {
#[inline]
fn clone(&self) -> AssocContainer {
match self {
AssocContainer::InherentImpl => AssocContainer::InherentImpl,
AssocContainer::TraitImpl(__self_0) =>
AssocContainer::TraitImpl(::core::clone::Clone::clone(__self_0)),
AssocContainer::Trait => AssocContainer::Trait,
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for AssocContainer {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AssocContainer::InherentImpl =>
::core::fmt::Formatter::write_str(f, "InherentImpl"),
AssocContainer::TraitImpl(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TraitImpl", &__self_0),
AssocContainer::Trait =>
::core::fmt::Formatter::write_str(f, "Trait"),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for AssocContainer {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<AssocDef>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for AssocContainer {
#[inline]
fn eq(&self, other: &AssocContainer) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(AssocContainer::TraitImpl(__self_0),
AssocContainer::TraitImpl(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for AssocContainer {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
AssocContainer::InherentImpl =>
_serde::Serializer::serialize_unit_variant(__serializer,
"AssocContainer", 0u32, "InherentImpl"),
AssocContainer::TraitImpl(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"AssocContainer", 1u32, "TraitImpl", __field0),
AssocContainer::Trait =>
_serde::Serializer::serialize_unit_variant(__serializer,
"AssocContainer", 2u32, "Trait"),
}
}
}
};Serialize)]
1649pub enum AssocContainer {
1650 InherentImpl,
1651 TraitImpl(AssocDef),
1653 Trait,
1654}
1655
1656#[derive(#[automatically_derived]
impl ::core::clone::Clone for ImplTraitInTraitData {
#[inline]
fn clone(&self) -> ImplTraitInTraitData {
let _: ::core::clone::AssertParamIsClone<FnDef>;
let _: ::core::clone::AssertParamIsClone<OpaqueDef>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for ImplTraitInTraitData { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for ImplTraitInTraitData {
#[inline]
fn eq(&self, other: &ImplTraitInTraitData) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ImplTraitInTraitData::Trait {
fn_def_id: __self_0, opaque_def_id: __self_1 },
ImplTraitInTraitData::Trait {
fn_def_id: __arg1_0, opaque_def_id: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(ImplTraitInTraitData::Impl { fn_def_id: __self_0 },
ImplTraitInTraitData::Impl { fn_def_id: __arg1_0 }) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for ImplTraitInTraitData {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<FnDef>;
let _: ::core::cmp::AssertParamIsEq<OpaqueDef>;
}
}Eq, #[automatically_derived]
impl ::core::fmt::Debug for ImplTraitInTraitData {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ImplTraitInTraitData::Trait {
fn_def_id: __self_0, opaque_def_id: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "Trait",
"fn_def_id", __self_0, "opaque_def_id", &__self_1),
ImplTraitInTraitData::Impl { fn_def_id: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Impl",
"fn_def_id", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::hash::Hash for ImplTraitInTraitData {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
ImplTraitInTraitData::Trait {
fn_def_id: __self_0, opaque_def_id: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
ImplTraitInTraitData::Impl { fn_def_id: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for ImplTraitInTraitData {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
ImplTraitInTraitData::Trait {
ref fn_def_id, ref opaque_def_id } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"ImplTraitInTraitData", 0u32, "Trait", 0 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"fn_def_id", fn_def_id)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"opaque_def_id", opaque_def_id)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
ImplTraitInTraitData::Impl { ref fn_def_id } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"ImplTraitInTraitData", 1u32, "Impl", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"fn_def_id", fn_def_id)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
}
}
}
};Serialize)]
1657pub enum ImplTraitInTraitData {
1658 Trait { fn_def_id: FnDef, opaque_def_id: OpaqueDef },
1659 Impl { fn_def_id: FnDef },
1660}
1661
1662impl AssocItem {
1663 pub fn is_impl_trait_in_trait(&self) -> bool {
1664 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
AssocKind::Type { data: AssocTypeData::Rpitit(_) } => true,
_ => false,
}matches!(self.kind, AssocKind::Type { data: AssocTypeData::Rpitit(_) })
1665 }
1666}