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, CrateDefType};
11use crate::mir::alloc::{AllocId, read_target_int, read_target_uint};
12use crate::mir::mono::{Instance, StaticDef};
13use crate::target::MachineInfo;
14use crate::{AssocItems, 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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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_fields_are_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 constness(&self) -> Constness {
715 with(|cx| cx.constness(*self))
716 }
717
718 pub fn asyncness(&self) -> Asyncness {
720 with(|cx| cx.asyncness(*self))
721 }
722
723 pub fn fn_sig(&self) -> PolyFnSig {
725 let kind = self.ty().kind();
726 kind.fn_sig().unwrap()
727 }
728}
729
730#[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_fields_are_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! {
731 #[derive(Serialize)]
732 pub IntrinsicDef;
733}
734
735impl IntrinsicDef {
736 pub fn fn_name(&self) -> Symbol {
739 with(|cx| cx.intrinsic_name(*self))
740 }
741
742 pub fn must_be_overridden(&self) -> bool {
745 with(|cx| !cx.has_body(self.0))
746 }
747}
748
749impl From<IntrinsicDef> for FnDef {
750 fn from(def: IntrinsicDef) -> Self {
751 FnDef(def.0)
752 }
753}
754
755#[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_fields_are_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! {
756 #[derive(Serialize)]
757 pub ClosureDef;
758}
759
760impl ClosureDef {
761 pub fn body(&self) -> Option<Body> {
764 with(|ctx| ctx.has_body(self.0).then(|| ctx.mir_body(self.0)))
765 }
766}
767
768#[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_fields_are_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! {
769 #[derive(Serialize)]
770 pub CoroutineDef;
771}
772
773impl CoroutineDef {
774 pub fn body(&self) -> Option<Body> {
777 with(|cx| cx.has_body(self.0).then(|| cx.mir_body(self.0)))
778 }
779
780 pub fn discriminant_for_variant(&self, args: &GenericArgs, idx: VariantIdx) -> Discr {
781 with(|cx| cx.coroutine_discr_for_variant(*self, args, idx))
782 }
783}
784
785#[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_fields_are_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! {
786 #[derive(Serialize)]
787 pub CoroutineClosureDef;
788}
789
790#[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_fields_are_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! {
791 #[derive(Serialize)]
792 pub ParamDef;
793}
794
795#[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_fields_are_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! {
796 #[derive(Serialize)]
797 pub BrNamedDef;
798}
799
800#[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_fields_are_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! {
801 #[derive(Serialize)]
802 pub AdtDef;
803}
804
805#[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_fields_are_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)]
806pub enum AdtKind {
807 Enum,
808 Union,
809 Struct,
810}
811
812impl AdtDef {
813 pub fn kind(&self) -> AdtKind {
814 with(|cx| cx.adt_kind(*self))
815 }
816
817 pub fn ty(&self) -> Ty {
819 with(|cx| cx.def_ty(self.0))
820 }
821
822 pub fn ty_with_args(&self, args: &GenericArgs) -> Ty {
826 with(|cx| cx.def_ty_with_args(self.0, args))
827 }
828
829 pub fn is_box(&self) -> bool {
830 with(|cx| cx.adt_is_box(*self))
831 }
832
833 pub fn is_simd(&self) -> bool {
834 with(|cx| cx.adt_is_simd(*self))
835 }
836
837 pub fn num_variants(&self) -> usize {
839 with(|cx| cx.adt_variants_len(*self))
840 }
841
842 pub fn variants(&self) -> Vec<VariantDef> {
844 self.variants_iter().collect()
845 }
846
847 pub fn variants_iter(&self) -> impl Iterator<Item = VariantDef> {
849 (0..self.num_variants())
850 .map(|idx| VariantDef { idx: VariantIdx::to_val(idx), adt_def: *self })
851 }
852
853 pub fn variant(&self, idx: VariantIdx) -> Option<VariantDef> {
854 (idx.to_index() < self.num_variants()).then_some(VariantDef { idx, adt_def: *self })
855 }
856
857 pub fn repr(&self) -> ReprOptions {
858 with(|cx| cx.adt_repr(*self))
859 }
860
861 pub fn discriminant_for_variant(&self, idx: VariantIdx) -> Discr {
862 with(|cx| cx.adt_discr_for_variant(*self, idx))
863 }
864}
865
866pub struct Discr {
867 pub val: u128,
868 pub ty: Ty,
869}
870
871#[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_fields_are_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)]
873pub struct VariantDef {
874 pub(crate) idx: VariantIdx,
876 pub(crate) adt_def: AdtDef,
880}
881
882impl VariantDef {
883 pub fn name(&self) -> Symbol {
887 with(|cx| cx.variant_name(*self))
888 }
889
890 pub fn fields(&self) -> Vec<FieldDef> {
894 with(|cx| cx.variant_fields(*self))
895 }
896}
897
898#[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_fields_are_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)]
899pub struct FieldDef {
900 pub(crate) def: DefId,
902
903 pub name: Symbol,
905}
906
907impl FieldDef {
908 pub fn ty_with_args(&self, args: &GenericArgs) -> Ty {
912 with(|cx| cx.def_ty_with_args(self.def, args))
913 }
914
915 pub fn ty(&self) -> Ty {
917 with(|cx| cx.def_ty(self.def))
918 }
919}
920
921impl Display for AdtKind {
922 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
923 f.write_str(match self {
924 AdtKind::Enum => "enum",
925 AdtKind::Union => "union",
926 AdtKind::Struct => "struct",
927 })
928 }
929}
930
931impl AdtKind {
932 pub fn is_enum(&self) -> bool {
933 #[allow(non_exhaustive_omitted_patterns)] match self {
AdtKind::Enum => true,
_ => false,
}matches!(self, AdtKind::Enum)
934 }
935
936 pub fn is_struct(&self) -> bool {
937 #[allow(non_exhaustive_omitted_patterns)] match self {
AdtKind::Struct => true,
_ => false,
}matches!(self, AdtKind::Struct)
938 }
939
940 pub fn is_union(&self) -> bool {
941 #[allow(non_exhaustive_omitted_patterns)] match self {
AdtKind::Union => true,
_ => false,
}matches!(self, AdtKind::Union)
942 }
943}
944
945#[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_fields_are_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! {
946 #[derive(Serialize)]
947 pub AliasDef;
948}
949
950#[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_fields_are_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! {
951 #[derive(Serialize)]
953 pub TraitDef;
954}
955
956impl TraitDef {
957 pub fn declaration(trait_def: &TraitDef) -> TraitDecl {
958 with(|cx| cx.trait_decl(trait_def))
959 }
960
961 pub fn associated_items(&self) -> AssocItems {
962 with(|cx| cx.associated_items(self.def_id()))
963 }
964}
965
966#[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_fields_are_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! {
967 #[derive(Serialize)]
968 pub GenericDef;
969}
970
971#[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_fields_are_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! {
972 #[derive(Serialize)]
973 pub ConstDef;
974}
975
976#[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_fields_are_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! {
977 #[derive(Serialize)]
979 pub ImplDef;
980}
981
982impl ImplDef {
983 pub fn trait_impl(&self) -> ImplTrait {
985 with(|cx| cx.trait_impl(self))
986 }
987
988 pub fn associated_items(&self) -> AssocItems {
989 with(|cx| cx.associated_items(self.def_id()))
990 }
991}
992
993#[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_fields_are_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! {
994 #[derive(Serialize)]
995 pub RegionDef;
996}
997
998#[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_fields_are_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! {
999 #[derive(Serialize)]
1000 pub CoroutineWitnessDef;
1001}
1002
1003#[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_fields_are_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)]
1005pub struct GenericArgs(pub Vec<GenericArgKind>);
1006
1007impl std::ops::Index<ParamTy> for GenericArgs {
1008 type Output = Ty;
1009
1010 fn index(&self, index: ParamTy) -> &Self::Output {
1011 self.0[index.index as usize].expect_ty()
1012 }
1013}
1014
1015impl std::ops::Index<ParamConst> for GenericArgs {
1016 type Output = TyConst;
1017
1018 fn index(&self, index: ParamConst) -> &Self::Output {
1019 self.0[index.index as usize].expect_const()
1020 }
1021}
1022
1023#[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_fields_are_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)]
1024pub enum GenericArgKind {
1025 Lifetime(Region),
1026 Type(Ty),
1027 Const(TyConst),
1028}
1029
1030impl GenericArgKind {
1031 #[track_caller]
1034 pub fn expect_ty(&self) -> &Ty {
1035 match self {
1036 GenericArgKind::Type(ty) => ty,
1037 _ => { ::core::panicking::panic_fmt(format_args!("{0:?}", self)); }panic!("{self:?}"),
1038 }
1039 }
1040
1041 #[track_caller]
1044 pub fn expect_const(&self) -> &TyConst {
1045 match self {
1046 GenericArgKind::Const(c) => c,
1047 _ => { ::core::panicking::panic_fmt(format_args!("{0:?}", self)); }panic!("{self:?}"),
1048 }
1049 }
1050
1051 pub fn ty(&self) -> Option<&Ty> {
1053 match self {
1054 GenericArgKind::Type(ty) => Some(ty),
1055 _ => None,
1056 }
1057 }
1058}
1059
1060#[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_fields_are_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)]
1061pub enum TermKind {
1062 Type(Ty),
1063 Const(TyConst),
1064}
1065
1066#[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_fields_are_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)]
1067pub enum AliasKind {
1068 Projection,
1069 Inherent,
1070 Opaque,
1071 Free,
1072}
1073
1074#[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_fields_are_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)]
1075pub struct AliasTy {
1076 pub def_id: AliasDef,
1077 pub args: GenericArgs,
1078}
1079
1080#[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_fields_are_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)]
1081pub struct AliasTerm {
1082 pub def_id: AliasDef,
1083 pub args: GenericArgs,
1084}
1085
1086pub type PolyFnSig = Binder<FnSig>;
1087
1088impl PolyFnSig {
1089 pub fn fn_ptr_abi(self) -> Result<FnAbi, Error> {
1094 with(|cx| cx.fn_ptr_abi(self))
1095 }
1096}
1097
1098#[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_fields_are_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)]
1099pub struct FnSig {
1100 pub inputs_and_output: Vec<Ty>,
1101 pub c_variadic: bool,
1102 pub safety: Safety,
1103 pub abi: Abi,
1104}
1105
1106impl FnSig {
1107 pub fn output(&self) -> Ty {
1108 self.inputs_and_output[self.inputs_and_output.len() - 1]
1109 }
1110
1111 pub fn inputs(&self) -> &[Ty] {
1112 &self.inputs_and_output[..self.inputs_and_output.len() - 1]
1113 }
1114}
1115
1116#[derive(#[automatically_derived]
impl ::core::marker::Copy for Constness { }Copy, #[automatically_derived]
impl ::core::clone::Clone for Constness {
#[inline]
fn clone(&self) -> Constness { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for Constness {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
Constness::Const => "Const",
Constness::NotConst => "NotConst",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for Constness {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for Constness {
#[inline]
fn eq(&self, other: &Constness) -> 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 Constness {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
Constness::Const =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Constness", 0u32, "Const"),
Constness::NotConst =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Constness", 1u32, "NotConst"),
}
}
}
};Serialize)]
1117pub enum Constness {
1118 Const,
1119 NotConst,
1120}
1121
1122impl Constness {
1123 pub fn is_const(self) -> bool {
1124 #[allow(non_exhaustive_omitted_patterns)] match self {
Constness::Const => true,
_ => false,
}matches!(self, Constness::Const)
1125 }
1126}
1127
1128#[derive(#[automatically_derived]
impl ::core::marker::Copy for Asyncness { }Copy, #[automatically_derived]
impl ::core::clone::Clone for Asyncness {
#[inline]
fn clone(&self) -> Asyncness { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for Asyncness {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
Asyncness::Async => "Async",
Asyncness::NotAsync => "NotAsync",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for Asyncness {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for Asyncness {
#[inline]
fn eq(&self, other: &Asyncness) -> 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 Asyncness {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
Asyncness::Async =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Asyncness", 0u32, "Async"),
Asyncness::NotAsync =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Asyncness", 1u32, "NotAsync"),
}
}
}
};Serialize)]
1129pub enum Asyncness {
1130 Async,
1131 NotAsync,
1132}
1133
1134impl Asyncness {
1135 pub fn is_async(self) -> bool {
1136 #[allow(non_exhaustive_omitted_patterns)] match self {
Asyncness::Async => true,
_ => false,
}matches!(self, Asyncness::Async)
1137 }
1138}
1139
1140#[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_fields_are_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)]
1141pub enum Abi {
1142 Rust,
1143 C { unwind: bool },
1144 Cdecl { unwind: bool },
1145 Stdcall { unwind: bool },
1146 Fastcall { unwind: bool },
1147 Vectorcall { unwind: bool },
1148 Thiscall { unwind: bool },
1149 Aapcs { unwind: bool },
1150 Win64 { unwind: bool },
1151 SysV64 { unwind: bool },
1152 PtxKernel,
1153 Msp430Interrupt,
1154 X86Interrupt,
1155 GpuKernel,
1156 EfiApi,
1157 AvrInterrupt,
1158 AvrNonBlockingInterrupt,
1159 CCmseNonSecureCall,
1160 CCmseNonSecureEntry,
1161 System { unwind: bool },
1162 RustCall,
1163 Unadjusted,
1164 RustCold,
1165 RiscvInterruptM,
1166 RiscvInterruptS,
1167 RustPreserveNone,
1168 RustInvalid,
1169 Custom,
1170}
1171
1172#[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_fields_are_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)]
1174pub struct Binder<T> {
1175 pub value: T,
1176 pub bound_vars: Vec<BoundVariableKind>,
1177}
1178
1179impl<T> Binder<T> {
1180 pub fn bind_with_vars(value: T, bound_vars: Vec<BoundVariableKind>) -> Self {
1182 Binder { value, bound_vars }
1183 }
1184
1185 pub fn dummy(value: T) -> Self {
1187 Binder { value, bound_vars: ::alloc::vec::Vec::new()vec![] }
1188 }
1189
1190 pub fn skip_binder(self) -> T {
1191 self.value
1192 }
1193
1194 pub fn map_bound_ref<F, U>(&self, f: F) -> Binder<U>
1195 where
1196 F: FnOnce(&T) -> U,
1197 {
1198 let Binder { value, bound_vars } = self;
1199 let new_value = f(value);
1200 Binder { value: new_value, bound_vars: bound_vars.clone() }
1201 }
1202
1203 pub fn map_bound<F, U>(self, f: F) -> Binder<U>
1204 where
1205 F: FnOnce(T) -> U,
1206 {
1207 let Binder { value, bound_vars } = self;
1208 let new_value = f(value);
1209 Binder { value: new_value, bound_vars }
1210 }
1211}
1212
1213#[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_fields_are_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)]
1214pub struct EarlyBinder<T> {
1215 pub value: T,
1216}
1217
1218#[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_fields_are_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)]
1219pub enum BoundVariableKind {
1220 Ty(BoundTyKind),
1221 Region(BoundRegionKind),
1222 Const,
1223}
1224
1225#[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_fields_are_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)]
1226pub enum BoundTyKind {
1227 Anon,
1228 Param(ParamDef, String),
1229}
1230
1231#[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_fields_are_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)]
1232pub enum BoundRegionKind {
1233 BrAnon,
1234 BrNamed(BrNamedDef, String),
1235 BrEnv,
1236}
1237
1238#[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_fields_are_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)]
1239pub enum ExistentialPredicate {
1240 Trait(ExistentialTraitRef),
1241 Projection(ExistentialProjection),
1242 AutoTrait(TraitDef),
1243}
1244
1245#[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_fields_are_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)]
1249pub struct ExistentialTraitRef {
1250 pub def_id: TraitDef,
1251 pub generic_args: GenericArgs,
1252}
1253
1254impl Binder<ExistentialTraitRef> {
1255 pub fn with_self_ty(&self, self_ty: Ty) -> Binder<TraitRef> {
1256 self.map_bound_ref(|trait_ref| trait_ref.with_self_ty(self_ty))
1257 }
1258}
1259
1260impl ExistentialTraitRef {
1261 pub fn with_self_ty(&self, self_ty: Ty) -> TraitRef {
1262 TraitRef::new(self.def_id, self_ty, &self.generic_args)
1263 }
1264}
1265
1266#[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_fields_are_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)]
1267pub struct ExistentialProjection {
1268 pub def_id: TraitDef,
1269 pub generic_args: GenericArgs,
1270 pub term: TermKind,
1271}
1272
1273#[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_fields_are_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)]
1274pub struct ParamTy {
1275 pub index: u32,
1276 pub name: String,
1277}
1278
1279#[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_fields_are_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)]
1280pub struct BoundTy {
1281 pub var: usize,
1282 pub kind: BoundTyKind,
1283}
1284
1285pub type Bytes = Vec<Option<u8>>;
1286
1287pub type Size = usize;
1289
1290#[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_fields_are_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)]
1291pub struct Prov(pub AllocId);
1292
1293pub type Align = u64;
1294pub type Promoted = u32;
1295pub type InitMaskMaterialized = Vec<u64>;
1296
1297#[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_fields_are_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)]
1299pub struct ProvenanceMap {
1300 pub ptrs: Vec<(Size, Prov)>,
1303}
1304
1305#[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_fields_are_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)]
1306pub struct Allocation {
1307 pub bytes: Bytes,
1308 pub provenance: ProvenanceMap,
1309 pub align: Align,
1310 pub mutability: Mutability,
1311}
1312
1313impl Allocation {
1314 pub fn raw_bytes(&self) -> Result<Vec<u8>, Error> {
1316 self.bytes
1317 .iter()
1318 .copied()
1319 .collect::<Option<Vec<_>>>()
1320 .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))
1321 }
1322
1323 pub fn read_partial_uint(&self, range: Range<usize>) -> Result<u128, Error> {
1325 if range.end - range.start > 16 {
1326 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"));
1327 }
1328 if range.end > self.bytes.len() {
1329 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!(
1330 "Range is out of bounds. Allocation length is `{}`, but requested range `{:?}`",
1331 self.bytes.len(),
1332 range
1333 ));
1334 }
1335 let raw = self.bytes[range]
1336 .iter()
1337 .copied()
1338 .collect::<Option<Vec<_>>>()
1339 .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))?;
1340 read_target_uint(&raw)
1341 }
1342
1343 pub fn read_uint(&self) -> Result<u128, Error> {
1345 if self.bytes.len() > 16 {
1346 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"));
1347 }
1348 let raw = self.raw_bytes()?;
1349 read_target_uint(&raw)
1350 }
1351
1352 pub fn read_int(&self) -> Result<i128, Error> {
1354 if self.bytes.len() > 16 {
1355 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"));
1356 }
1357 let raw = self.raw_bytes()?;
1358 read_target_int(&raw)
1359 }
1360
1361 pub fn read_bool(&self) -> Result<bool, Error> {
1363 match self.read_int()? {
1364 0 => Ok(false),
1365 1 => Ok(true),
1366 val => Err(Error(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Unexpected value for bool: `{0}`",
val))
}))error!("Unexpected value for bool: `{val}`")),
1367 }
1368 }
1369
1370 pub fn is_null(&self) -> Result<bool, Error> {
1372 let len = self.bytes.len();
1373 let ptr_len = MachineInfo::target_pointer_width().bytes();
1374 if len != ptr_len {
1375 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}`"));
1376 }
1377 Ok(self.read_uint()? == 0 && self.provenance.ptrs.is_empty())
1378 }
1379}
1380
1381#[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_fields_are_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)]
1382pub enum ConstantKind {
1383 Ty(TyConst),
1384 Allocated(Allocation),
1385 Unevaluated(UnevaluatedConst),
1386 Param(ParamConst),
1387 ZeroSized,
1390}
1391
1392#[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_fields_are_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)]
1393pub struct ParamConst {
1394 pub index: u32,
1395 pub name: String,
1396}
1397
1398#[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_fields_are_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)]
1399pub struct UnevaluatedConst {
1400 pub def: ConstDef,
1401 pub args: GenericArgs,
1402 pub promoted: Option<Promoted>,
1403}
1404
1405#[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_fields_are_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)]
1406pub enum TraitSpecializationKind {
1407 None,
1408 Marker,
1409 AlwaysApplicable,
1410}
1411
1412#[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_fields_are_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)]
1413pub struct TraitDecl {
1414 pub def_id: TraitDef,
1415 pub safety: Safety,
1416 pub paren_sugar: bool,
1417 pub has_auto_impl: bool,
1418 pub is_marker: bool,
1419 pub is_coinductive: bool,
1420 pub skip_array_during_method_dispatch: bool,
1421 pub skip_boxed_slice_during_method_dispatch: bool,
1422 pub specialization_kind: TraitSpecializationKind,
1423 pub must_implement_one_of: Option<Vec<Ident>>,
1424 pub force_dyn_incompatible: Option<Span>,
1425 pub deny_explicit_impl: bool,
1426}
1427
1428impl TraitDecl {
1429 pub fn generics_of(&self) -> Generics {
1430 with(|cx| cx.generics_of(self.def_id.0))
1431 }
1432
1433 pub fn predicates_of(&self) -> GenericPredicates {
1434 with(|cx| cx.predicates_of(self.def_id.0))
1435 }
1436
1437 pub fn explicit_predicates_of(&self) -> GenericPredicates {
1438 with(|cx| cx.explicit_predicates_of(self.def_id.0))
1439 }
1440}
1441
1442pub type ImplTrait = EarlyBinder<TraitRef>;
1443
1444#[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_fields_are_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)]
1446pub struct TraitRef {
1447 pub def_id: TraitDef,
1448 args: GenericArgs,
1451}
1452
1453impl TraitRef {
1454 pub fn new(def_id: TraitDef, self_ty: Ty, gen_args: &GenericArgs) -> TraitRef {
1455 let mut args = ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[GenericArgKind::Type(self_ty)]))vec![GenericArgKind::Type(self_ty)];
1456 args.extend_from_slice(&gen_args.0);
1457 TraitRef { def_id, args: GenericArgs(args) }
1458 }
1459
1460 pub fn try_new(def_id: TraitDef, args: GenericArgs) -> Result<TraitRef, ()> {
1461 match &args.0[..] {
1462 [GenericArgKind::Type(_), ..] => Ok(TraitRef { def_id, args }),
1463 _ => Err(()),
1464 }
1465 }
1466
1467 pub fn args(&self) -> &GenericArgs {
1468 &self.args
1469 }
1470
1471 pub fn self_ty(&self) -> Ty {
1472 let GenericArgKind::Type(self_ty) = self.args.0[0] else {
1473 {
::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])
1474 };
1475 self_ty
1476 }
1477
1478 pub fn vtable_entries(&self) -> Vec<VtblEntry> {
1480 with(|cx| cx.vtable_entries(self))
1481 }
1482
1483 pub fn vtable_entry(&self, idx: usize) -> Option<VtblEntry> {
1487 with(|cx| cx.vtable_entry(self, idx))
1488 }
1489}
1490
1491#[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_fields_are_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)]
1492pub struct Generics {
1493 pub parent: Option<GenericDef>,
1494 pub parent_count: usize,
1495 pub params: Vec<GenericParamDef>,
1496 pub param_def_id_to_index: Vec<(GenericDef, u32)>,
1497 pub has_self: bool,
1498 pub has_late_bound_regions: Option<Span>,
1499}
1500
1501#[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_fields_are_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)]
1502pub enum GenericParamDefKind {
1503 Lifetime,
1504 Type { has_default: bool, synthetic: bool },
1505 Const { has_default: bool },
1506}
1507
1508#[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_fields_are_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)]
1509pub struct GenericParamDef {
1510 pub name: super::Symbol,
1511 pub def_id: GenericDef,
1512 pub index: u32,
1513 pub pure_wrt_drop: bool,
1514 pub kind: GenericParamDefKind,
1515}
1516
1517pub struct GenericPredicates {
1518 pub parent: Option<TraitDef>,
1519 pub predicates: Vec<(PredicateKind, Span)>,
1520}
1521
1522#[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_fields_are_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)]
1523pub enum PredicateKind {
1524 Clause(ClauseKind),
1525 DynCompatible(TraitDef),
1526 SubType(SubtypePredicate),
1527 Coerce(CoercePredicate),
1528 ConstEquate(TyConst, TyConst),
1529 Ambiguous,
1530 AliasRelate(TermKind, TermKind, AliasRelationDirection),
1531}
1532
1533#[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_fields_are_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)]
1534pub enum ClauseKind {
1535 Trait(TraitPredicate),
1536 RegionOutlives(RegionOutlivesPredicate),
1537 TypeOutlives(TypeOutlivesPredicate),
1538 Projection(ProjectionPredicate),
1539 ConstArgHasType(TyConst, Ty),
1540 WellFormed(TermKind),
1541 ConstEvaluatable(TyConst),
1542}
1543
1544#[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_fields_are_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)]
1545pub enum ClosureKind {
1546 Fn,
1547 FnMut,
1548 FnOnce,
1549}
1550
1551#[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_fields_are_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)]
1552pub struct SubtypePredicate {
1553 pub a: Ty,
1554 pub b: Ty,
1555}
1556
1557#[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_fields_are_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)]
1558pub struct CoercePredicate {
1559 pub a: Ty,
1560 pub b: Ty,
1561}
1562
1563#[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_fields_are_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)]
1564pub enum AliasRelationDirection {
1565 Equate,
1566 Subtype,
1567}
1568
1569#[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_fields_are_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)]
1570pub struct TraitPredicate {
1571 pub trait_ref: TraitRef,
1572 pub polarity: PredicatePolarity,
1573}
1574
1575#[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_fields_are_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)]
1576pub struct OutlivesPredicate<A, B>(pub A, pub B);
1577
1578pub type RegionOutlivesPredicate = OutlivesPredicate<Region, Region>;
1579pub type TypeOutlivesPredicate = OutlivesPredicate<Ty, Region>;
1580
1581#[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_fields_are_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)]
1582pub struct ProjectionPredicate {
1583 pub projection_term: AliasTerm,
1584 pub term: TermKind,
1585}
1586
1587#[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_fields_are_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)]
1588pub enum ImplPolarity {
1589 Positive,
1590 Negative,
1591 Reservation,
1592}
1593
1594#[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_fields_are_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)]
1595pub enum PredicatePolarity {
1596 Positive,
1597 Negative,
1598}
1599
1600macro_rules! index_impl {
1601 ($name:ident) => {
1602 impl crate::IndexedVal for $name {
1603 fn to_val(index: usize) -> Self {
1604 $name(index, $crate::ThreadLocalIndex)
1605 }
1606 fn to_index(&self) -> usize {
1607 self.0
1608 }
1609 }
1610 $crate::ty::serialize_index_impl!($name);
1611 };
1612}
1613macro_rules! serialize_index_impl {
1614 ($name:ident) => {
1615 impl ::serde::Serialize for $name {
1616 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1617 where
1618 S: ::serde::Serializer,
1619 {
1620 let n: usize = self.0; ::serde::Serialize::serialize(&n, serializer)
1622 }
1623 }
1624 };
1625}
1626pub(crate) use index_impl;
1627pub(crate) use serialize_index_impl;
1628
1629impl 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);
1630impl 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);
1631impl 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);
1632impl 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);
1633
1634#[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_fields_are_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)]
1648pub struct VariantIdx(usize, ThreadLocalIndex);
1649
1650impl 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);
1651
1652#[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_fields_are_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! {
1653 #[derive(Serialize)]
1655 pub OpaqueDef;
1656}
1657
1658#[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_fields_are_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! {
1659 #[derive(Serialize)]
1660 pub AssocDef;
1661}
1662
1663#[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_fields_are_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)]
1664pub struct AssocItem {
1665 pub def_id: AssocDef,
1666 pub kind: AssocKind,
1667 pub container: AssocContainer,
1668}
1669
1670#[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_fields_are_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)]
1671pub enum AssocTypeData {
1672 Normal(Symbol),
1673 Rpitit(ImplTraitInTraitData),
1677}
1678
1679#[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_fields_are_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)]
1680pub enum AssocKind {
1681 Const { name: Symbol },
1682 Fn { name: Symbol, has_self: bool },
1683 Type { data: AssocTypeData },
1684}
1685
1686#[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_fields_are_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)]
1687pub enum AssocContainer {
1688 InherentImpl,
1689 TraitImpl(AssocDef),
1691 Trait,
1692}
1693
1694#[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_fields_are_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)]
1695pub enum ImplTraitInTraitData {
1696 Trait { fn_def_id: FnDef, opaque_def_id: OpaqueDef },
1697 Impl { fn_def_id: FnDef },
1698}
1699
1700impl AssocItem {
1701 pub fn is_impl_trait_in_trait(&self) -> bool {
1702 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
AssocKind::Type { data: AssocTypeData::Rpitit(_) } => true,
_ => false,
}matches!(self.kind, AssocKind::Type { data: AssocTypeData::Rpitit(_) })
1703 }
1704}
1705
1706#[derive(#[automatically_derived]
impl ::core::clone::Clone for VtblEntry {
#[inline]
fn clone(&self) -> VtblEntry {
match self {
VtblEntry::MetadataDropInPlace => VtblEntry::MetadataDropInPlace,
VtblEntry::MetadataSize => VtblEntry::MetadataSize,
VtblEntry::MetadataAlign => VtblEntry::MetadataAlign,
VtblEntry::Vacant => VtblEntry::Vacant,
VtblEntry::Method(__self_0) =>
VtblEntry::Method(::core::clone::Clone::clone(__self_0)),
VtblEntry::TraitVPtr(__self_0) =>
VtblEntry::TraitVPtr(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for VtblEntry {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
VtblEntry::MetadataDropInPlace =>
::core::fmt::Formatter::write_str(f, "MetadataDropInPlace"),
VtblEntry::MetadataSize =>
::core::fmt::Formatter::write_str(f, "MetadataSize"),
VtblEntry::MetadataAlign =>
::core::fmt::Formatter::write_str(f, "MetadataAlign"),
VtblEntry::Vacant =>
::core::fmt::Formatter::write_str(f, "Vacant"),
VtblEntry::Method(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Method",
&__self_0),
VtblEntry::TraitVPtr(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TraitVPtr", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for VtblEntry {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Instance>;
let _: ::core::cmp::AssertParamIsEq<TraitRef>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for VtblEntry {
#[inline]
fn eq(&self, other: &VtblEntry) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(VtblEntry::Method(__self_0), VtblEntry::Method(__arg1_0)) =>
__self_0 == __arg1_0,
(VtblEntry::TraitVPtr(__self_0),
VtblEntry::TraitVPtr(__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 VtblEntry {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
VtblEntry::MetadataDropInPlace =>
_serde::Serializer::serialize_unit_variant(__serializer,
"VtblEntry", 0u32, "MetadataDropInPlace"),
VtblEntry::MetadataSize =>
_serde::Serializer::serialize_unit_variant(__serializer,
"VtblEntry", 1u32, "MetadataSize"),
VtblEntry::MetadataAlign =>
_serde::Serializer::serialize_unit_variant(__serializer,
"VtblEntry", 2u32, "MetadataAlign"),
VtblEntry::Vacant =>
_serde::Serializer::serialize_unit_variant(__serializer,
"VtblEntry", 3u32, "Vacant"),
VtblEntry::Method(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"VtblEntry", 4u32, "Method", __field0),
VtblEntry::TraitVPtr(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"VtblEntry", 5u32, "TraitVPtr", __field0),
}
}
}
};Serialize)]
1707pub enum VtblEntry {
1708 MetadataDropInPlace,
1710 MetadataSize,
1712 MetadataAlign,
1714 Vacant,
1716 Method(Instance),
1718 TraitVPtr(TraitRef),
1720}