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),
},
Pattern::NotNull => Pattern::NotNull,
Pattern::Or(__self_0) =>
Pattern::Or(::core::clone::Clone::clone(__self_0)),
}
}
}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),
Pattern::NotNull =>
::core::fmt::Formatter::write_str(f, "NotNull"),
Pattern::Or(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Or",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for Pattern {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TyConst>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Vec<Pattern>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for Pattern {
#[inline]
fn eq(&self, other: &Pattern) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
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,
(Pattern::Or(__self_0), Pattern::Or(__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 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)
}
Pattern::NotNull =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Pattern", 1u32, "NotNull"),
Pattern::Or(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"Pattern", 2u32, "Or", __field0),
}
}
}
};Serialize)]
111pub enum Pattern {
112 Range { start: TyConst, end: TyConst, include_end: bool },
113 NotNull,
114 Or(Vec<Pattern>),
115}
116
117#[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)]
119pub struct TyConst {
120 pub(crate) kind: TyConstKind,
121 pub id: TyConstId,
122}
123
124impl TyConst {
125 pub fn new(kind: TyConstKind, id: TyConstId) -> TyConst {
126 Self { kind, id }
127 }
128
129 pub fn kind(&self) -> &TyConstKind {
131 &self.kind
132 }
133
134 pub fn try_from_target_usize(val: u64) -> Result<Self, Error> {
136 with(|cx| cx.try_new_ty_const_uint(val.into(), UintTy::Usize))
137 }
138
139 pub fn eval_target_usize(&self) -> Result<u64, Error> {
141 with(|cx| cx.eval_target_usize_ty(self))
142 }
143}
144
145#[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)]
146pub enum TyConstKind {
147 Param(ParamConst),
148 Bound(DebruijnIndex, BoundVar),
149 Unevaluated(ConstDef, GenericArgs),
150
151 Value(Ty, Allocation),
153 ZSTValue(Ty),
154}
155
156#[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)]
157pub struct TyConstId(usize, ThreadLocalIndex);
158
159#[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)]
161pub struct MirConst {
162 pub(crate) kind: ConstantKind,
164 pub(crate) ty: Ty,
166 pub id: MirConstId,
168}
169
170impl MirConst {
171 pub fn new(kind: ConstantKind, ty: Ty, id: MirConstId) -> MirConst {
173 MirConst { kind, ty, id }
174 }
175
176 pub fn kind(&self) -> &ConstantKind {
178 &self.kind
179 }
180
181 pub fn ty(&self) -> Ty {
183 self.ty
184 }
185
186 pub fn eval_target_usize(&self) -> Result<u64, Error> {
188 with(|cx| cx.eval_target_usize(self))
189 }
190
191 pub fn try_new_zero_sized(ty: Ty) -> Result<MirConst, Error> {
194 with(|cx| cx.try_new_const_zst(ty))
195 }
196
197 pub fn from_str(value: &str) -> MirConst {
203 with(|cx| cx.new_const_str(value))
204 }
205
206 pub fn from_bool(value: bool) -> MirConst {
208 with(|cx| cx.new_const_bool(value))
209 }
210
211 pub fn try_from_uint(value: u128, uint_ty: UintTy) -> Result<MirConst, Error> {
213 with(|cx| cx.try_new_const_uint(value, uint_ty))
214 }
215}
216
217#[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)]
218pub struct MirConstId(usize, ThreadLocalIndex);
219
220type Ident = Opaque;
221
222#[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)]
223pub struct Region {
224 pub kind: RegionKind,
225}
226
227#[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)]
228pub enum RegionKind {
229 ReEarlyParam(EarlyParamRegion),
230 ReBound(DebruijnIndex, BoundRegion),
231 ReStatic,
232 RePlaceholder(Placeholder<BoundRegion>),
233 ReErased,
234}
235
236pub(crate) type DebruijnIndex = u32;
237
238#[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)]
239pub struct EarlyParamRegion {
240 pub index: u32,
241 pub name: Symbol,
242}
243
244pub(crate) type BoundVar = u32;
245
246#[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)]
247pub struct BoundRegion {
248 pub var: BoundVar,
249 pub kind: BoundRegionKind,
250}
251
252pub(crate) type UniverseIndex = u32;
253
254#[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)]
255pub struct Placeholder<T> {
256 pub universe: UniverseIndex,
257 pub bound: T,
258}
259
260#[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)]
261pub struct Span(usize, ThreadLocalIndex);
262
263impl Debug for Span {
264 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
265 f.debug_struct("Span")
266 .field("id", &self.0)
267 .field("repr", &with(|cx| cx.span_to_string(*self)))
268 .finish()
269 }
270}
271
272impl Span {
273 pub fn get_filename(&self) -> Filename {
275 with(|c| c.get_filename(self))
276 }
277
278 pub fn get_lines(&self) -> LineInfo {
280 with(|c| c.get_lines(self))
281 }
282
283 pub fn diagnostic(&self) -> String {
288 with(|c| c.span_to_string(*self))
289 }
290}
291
292#[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)]
293pub struct LineInfo {
296 pub start_line: usize,
297 pub start_col: usize,
298 pub end_line: usize,
299 pub end_col: usize,
300}
301
302impl LineInfo {
303 pub fn from(lines: (usize, usize, usize, usize)) -> Self {
304 LineInfo { start_line: lines.0, start_col: lines.1, end_line: lines.2, end_col: lines.3 }
305 }
306}
307
308#[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)]
309pub enum TyKind {
310 RigidTy(RigidTy),
311 Alias(AliasKind, AliasTy),
312 Param(ParamTy),
313 Bound(usize, BoundTy),
314}
315
316impl TyKind {
317 pub fn rigid(&self) -> Option<&RigidTy> {
318 if let TyKind::RigidTy(inner) = self { Some(inner) } else { None }
319 }
320
321 #[inline]
322 pub fn is_unit(&self) -> bool {
323 #[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())
324 }
325
326 #[inline]
327 pub fn is_bool(&self) -> bool {
328 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Bool) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Bool))
329 }
330
331 #[inline]
332 pub fn is_char(&self) -> bool {
333 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Char) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Char))
334 }
335
336 #[inline]
337 pub fn is_trait(&self) -> bool {
338 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Dynamic(_, _)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Dynamic(_, _)))
339 }
340
341 #[inline]
342 pub fn is_enum(&self) -> bool {
343 #[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)
344 }
345
346 #[inline]
347 pub fn is_struct(&self) -> bool {
348 #[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)
349 }
350
351 #[inline]
352 pub fn is_union(&self) -> bool {
353 #[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)
354 }
355
356 #[inline]
357 pub fn is_adt(&self) -> bool {
358 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Adt(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Adt(..)))
359 }
360
361 #[inline]
362 pub fn is_ref(&self) -> bool {
363 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Ref(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Ref(..)))
364 }
365
366 #[inline]
367 pub fn is_fn(&self) -> bool {
368 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::FnDef(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::FnDef(..)))
369 }
370
371 #[inline]
372 pub fn is_fn_ptr(&self) -> bool {
373 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::FnPtr(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::FnPtr(..)))
374 }
375
376 #[inline]
377 pub fn is_primitive(&self) -> bool {
378 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Bool | RigidTy::Char | RigidTy::Int(_) |
RigidTy::Uint(_) | RigidTy::Float(_)) => true,
_ => false,
}matches!(
379 self,
380 TyKind::RigidTy(
381 RigidTy::Bool
382 | RigidTy::Char
383 | RigidTy::Int(_)
384 | RigidTy::Uint(_)
385 | RigidTy::Float(_)
386 )
387 )
388 }
389
390 #[inline]
391 pub fn is_float(&self) -> bool {
392 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Float(_)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Float(_)))
393 }
394
395 #[inline]
396 pub fn is_integral(&self) -> bool {
397 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Int(_) | RigidTy::Uint(_)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Int(_) | RigidTy::Uint(_)))
398 }
399
400 #[inline]
401 pub fn is_numeric(&self) -> bool {
402 self.is_integral() || self.is_float()
403 }
404
405 #[inline]
406 pub fn is_signed(&self) -> bool {
407 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Int(_)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Int(_)))
408 }
409
410 #[inline]
411 pub fn is_str(&self) -> bool {
412 *self == TyKind::RigidTy(RigidTy::Str)
413 }
414
415 #[inline]
416 pub fn is_cstr(&self) -> bool {
417 let TyKind::RigidTy(RigidTy::Adt(def, _)) = self else {
418 return false;
419 };
420 with(|cx| cx.adt_is_cstr(*def))
421 }
422
423 #[inline]
424 pub fn is_slice(&self) -> bool {
425 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Slice(_)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Slice(_)))
426 }
427
428 #[inline]
429 pub fn is_array(&self) -> bool {
430 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Array(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Array(..)))
431 }
432
433 #[inline]
434 pub fn is_mutable_ptr(&self) -> bool {
435 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::RawPtr(_, Mutability::Mut)) |
TyKind::RigidTy(RigidTy::Ref(_, _, Mutability::Mut)) => true,
_ => false,
}matches!(
436 self,
437 TyKind::RigidTy(RigidTy::RawPtr(_, Mutability::Mut))
438 | TyKind::RigidTy(RigidTy::Ref(_, _, Mutability::Mut))
439 )
440 }
441
442 #[inline]
443 pub fn is_raw_ptr(&self) -> bool {
444 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::RawPtr(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::RawPtr(..)))
445 }
446
447 #[inline]
449 pub fn is_any_ptr(&self) -> bool {
450 self.is_ref() || self.is_raw_ptr() || self.is_fn_ptr()
451 }
452
453 #[inline]
454 pub fn is_coroutine(&self) -> bool {
455 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Coroutine(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Coroutine(..)))
456 }
457
458 #[inline]
459 pub fn is_closure(&self) -> bool {
460 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Closure(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Closure(..)))
461 }
462
463 #[inline]
464 pub fn is_box(&self) -> bool {
465 match self {
466 TyKind::RigidTy(RigidTy::Adt(def, _)) => def.is_box(),
467 _ => false,
468 }
469 }
470
471 #[inline]
472 pub fn is_simd(&self) -> bool {
473 #[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())
474 }
475
476 pub fn trait_principal(&self) -> Option<Binder<ExistentialTraitRef>> {
477 if let TyKind::RigidTy(RigidTy::Dynamic(predicates, _)) = self {
478 if let Some(Binder { value: ExistentialPredicate::Trait(trait_ref), bound_vars }) =
479 predicates.first()
480 {
481 Some(Binder { value: trait_ref.clone(), bound_vars: bound_vars.clone() })
482 } else {
483 None
484 }
485 } else {
486 None
487 }
488 }
489
490 pub fn builtin_index(&self) -> Option<Ty> {
492 match self.rigid()? {
493 RigidTy::Array(ty, _) | RigidTy::Slice(ty) => Some(*ty),
494 _ => None,
495 }
496 }
497
498 pub fn builtin_deref(&self, explicit: bool) -> Option<TypeAndMut> {
503 match self.rigid()? {
504 RigidTy::Adt(def, args) if def.is_box() => {
505 Some(TypeAndMut { ty: *args.0.first()?.ty()?, mutability: Mutability::Not })
506 }
507 RigidTy::Ref(_, ty, mutability) => {
508 Some(TypeAndMut { ty: *ty, mutability: *mutability })
509 }
510 RigidTy::RawPtr(ty, mutability) if explicit => {
511 Some(TypeAndMut { ty: *ty, mutability: *mutability })
512 }
513 _ => None,
514 }
515 }
516
517 pub fn fn_sig(&self) -> Option<PolyFnSig> {
519 match self {
520 TyKind::RigidTy(RigidTy::FnDef(def, args)) => Some(with(|cx| cx.fn_sig(*def, args))),
521 TyKind::RigidTy(RigidTy::FnPtr(sig)) => Some(sig.clone()),
522 TyKind::RigidTy(RigidTy::Closure(_def, args)) => Some(with(|cx| cx.closure_sig(args))),
523 _ => None,
524 }
525 }
526
527 pub fn discriminant_ty(&self) -> Option<Ty> {
529 self.rigid().map(|ty| with(|cx| cx.rigid_ty_discriminant_ty(ty)))
530 }
531
532 pub fn fn_def(&self) -> Option<(FnDef, &GenericArgs)> {
534 if let TyKind::RigidTy(RigidTy::FnDef(def, args)) = self {
535 Some((*def, args))
536 } else {
537 None
538 }
539 }
540}
541
542pub struct TypeAndMut {
543 pub ty: Ty,
544 pub mutability: Mutability,
545}
546
547#[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)]
548pub enum RigidTy {
549 Bool,
550 Char,
551 Int(IntTy),
552 Uint(UintTy),
553 Float(FloatTy),
554 Adt(AdtDef, GenericArgs),
555 Foreign(ForeignDef),
556 Str,
557 Array(Ty, TyConst),
558 Pat(Ty, Pattern),
559 Slice(Ty),
560 RawPtr(Ty, Mutability),
561 Ref(Region, Ty, Mutability),
562 FnDef(FnDef, GenericArgs),
563 FnPtr(PolyFnSig),
564 Closure(ClosureDef, GenericArgs),
565 Coroutine(CoroutineDef, GenericArgs),
566 CoroutineClosure(CoroutineClosureDef, GenericArgs),
567 Dynamic(Vec<Binder<ExistentialPredicate>>, Region),
568 Never,
569 Tuple(Vec<Ty>),
570 CoroutineWitness(CoroutineWitnessDef, GenericArgs),
571}
572
573impl RigidTy {
574 pub fn discriminant_ty(&self) -> Ty {
576 with(|cx| cx.rigid_ty_discriminant_ty(self))
577 }
578}
579
580impl From<RigidTy> for TyKind {
581 fn from(value: RigidTy) -> Self {
582 TyKind::RigidTy(value)
583 }
584}
585
586#[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)]
587pub enum IntTy {
588 Isize,
589 I8,
590 I16,
591 I32,
592 I64,
593 I128,
594}
595
596impl IntTy {
597 pub fn num_bytes(self) -> usize {
598 match self {
599 IntTy::Isize => MachineInfo::target_pointer_width().bytes(),
600 IntTy::I8 => 1,
601 IntTy::I16 => 2,
602 IntTy::I32 => 4,
603 IntTy::I64 => 8,
604 IntTy::I128 => 16,
605 }
606 }
607}
608
609#[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)]
610pub enum UintTy {
611 Usize,
612 U8,
613 U16,
614 U32,
615 U64,
616 U128,
617}
618
619impl UintTy {
620 pub fn num_bytes(self) -> usize {
621 match self {
622 UintTy::Usize => MachineInfo::target_pointer_width().bytes(),
623 UintTy::U8 => 1,
624 UintTy::U16 => 2,
625 UintTy::U32 => 4,
626 UintTy::U64 => 8,
627 UintTy::U128 => 16,
628 }
629 }
630}
631
632#[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)]
633pub enum FloatTy {
634 F16,
635 F32,
636 F64,
637 F128,
638}
639
640#[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)]
641pub enum Movability {
642 Static,
643 Movable,
644}
645
646#[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! {
647 #[derive(Serialize)]
648 pub ForeignModuleDef;
649}
650
651impl ForeignModuleDef {
652 pub fn module(&self) -> ForeignModule {
653 with(|cx| cx.foreign_module(*self))
654 }
655}
656
657pub struct ForeignModule {
658 pub def_id: ForeignModuleDef,
659 pub abi: Abi,
660}
661
662impl ForeignModule {
663 pub fn items(&self) -> Vec<ForeignDef> {
664 with(|cx| cx.foreign_items(self.def_id))
665 }
666}
667
668#[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! {
669 #[derive(Serialize)]
671 pub ForeignDef;
672}
673
674impl ForeignDef {
675 pub fn kind(&self) -> ForeignItemKind {
676 with(|cx| cx.foreign_item_kind(*self))
677 }
678}
679
680#[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)]
681pub enum ForeignItemKind {
682 Fn(FnDef),
683 Static(StaticDef),
684 Type(Ty),
685}
686
687#[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! {
688 #[derive(Serialize)]
690 pub FnDef;
691}
692
693impl FnDef {
694 pub fn body(&self) -> Option<Body> {
696 with(|ctx| ctx.has_body(self.0).then(|| ctx.mir_body(self.0)))
697 }
698
699 pub fn has_body(&self) -> bool {
701 with(|ctx| ctx.has_body(self.0))
702 }
703
704 pub fn as_intrinsic(&self) -> Option<IntrinsicDef> {
706 with(|cx| cx.intrinsic(self.def_id()))
707 }
708
709 #[inline]
711 pub fn is_intrinsic(&self) -> bool {
712 self.as_intrinsic().is_some()
713 }
714
715 pub fn constness(&self) -> Constness {
717 with(|cx| cx.constness(*self))
718 }
719
720 pub fn asyncness(&self) -> Asyncness {
722 with(|cx| cx.asyncness(*self))
723 }
724
725 pub fn fn_sig(&self) -> PolyFnSig {
727 let kind = self.ty().kind();
728 kind.fn_sig().unwrap()
729 }
730}
731
732#[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! {
733 #[derive(Serialize)]
734 pub IntrinsicDef;
735}
736
737impl IntrinsicDef {
738 pub fn fn_name(&self) -> Symbol {
741 with(|cx| cx.intrinsic_name(*self))
742 }
743
744 pub fn must_be_overridden(&self) -> bool {
747 with(|cx| !cx.has_body(self.0))
748 }
749}
750
751impl From<IntrinsicDef> for FnDef {
752 fn from(def: IntrinsicDef) -> Self {
753 FnDef(def.0)
754 }
755}
756
757#[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! {
758 #[derive(Serialize)]
759 pub ClosureDef;
760}
761
762impl ClosureDef {
763 pub fn body(&self) -> Option<Body> {
766 with(|ctx| ctx.has_body(self.0).then(|| ctx.mir_body(self.0)))
767 }
768}
769
770#[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! {
771 #[derive(Serialize)]
772 pub CoroutineDef;
773}
774
775impl CoroutineDef {
776 pub fn body(&self) -> Option<Body> {
779 with(|cx| cx.has_body(self.0).then(|| cx.mir_body(self.0)))
780 }
781
782 pub fn discriminant_for_variant(&self, args: &GenericArgs, idx: VariantIdx) -> Discr {
783 with(|cx| cx.coroutine_discr_for_variant(*self, args, idx))
784 }
785}
786
787#[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! {
788 #[derive(Serialize)]
789 pub CoroutineClosureDef;
790}
791
792#[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! {
793 #[derive(Serialize)]
794 pub ParamDef;
795}
796
797#[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! {
798 #[derive(Serialize)]
799 pub BrNamedDef;
800}
801
802#[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! {
803 #[derive(Serialize)]
804 pub AdtDef;
805}
806
807#[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)]
808pub enum AdtKind {
809 Enum,
810 Union,
811 Struct,
812}
813
814impl AdtDef {
815 pub fn kind(&self) -> AdtKind {
816 with(|cx| cx.adt_kind(*self))
817 }
818
819 pub fn ty(&self) -> Ty {
821 with(|cx| cx.def_ty(self.0))
822 }
823
824 pub fn ty_with_args(&self, args: &GenericArgs) -> Ty {
828 with(|cx| cx.def_ty_with_args(self.0, args))
829 }
830
831 pub fn is_box(&self) -> bool {
832 with(|cx| cx.adt_is_box(*self))
833 }
834
835 pub fn is_simd(&self) -> bool {
836 with(|cx| cx.adt_is_simd(*self))
837 }
838
839 pub fn num_variants(&self) -> usize {
841 with(|cx| cx.adt_variants_len(*self))
842 }
843
844 pub fn variants(&self) -> Vec<VariantDef> {
846 self.variants_iter().collect()
847 }
848
849 pub fn variants_iter(&self) -> impl Iterator<Item = VariantDef> {
851 (0..self.num_variants())
852 .map(|idx| VariantDef { idx: VariantIdx::to_val(idx), adt_def: *self })
853 }
854
855 pub fn variant(&self, idx: VariantIdx) -> Option<VariantDef> {
856 (idx.to_index() < self.num_variants()).then_some(VariantDef { idx, adt_def: *self })
857 }
858
859 pub fn repr(&self) -> ReprOptions {
860 with(|cx| cx.adt_repr(*self))
861 }
862
863 pub fn discriminant_for_variant(&self, idx: VariantIdx) -> Discr {
864 with(|cx| cx.adt_discr_for_variant(*self, idx))
865 }
866}
867
868pub struct Discr {
869 pub val: u128,
870 pub ty: Ty,
871}
872
873#[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)]
875pub struct VariantDef {
876 pub(crate) idx: VariantIdx,
878 pub(crate) adt_def: AdtDef,
882}
883
884impl VariantDef {
885 pub fn name(&self) -> Symbol {
889 with(|cx| cx.variant_name(*self))
890 }
891
892 pub fn fields(&self) -> Vec<FieldDef> {
896 with(|cx| cx.variant_fields(*self))
897 }
898}
899
900#[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)]
901pub struct FieldDef {
902 pub(crate) def: DefId,
904
905 pub name: Symbol,
907}
908
909impl FieldDef {
910 pub fn ty_with_args(&self, args: &GenericArgs) -> Ty {
914 with(|cx| cx.def_ty_with_args(self.def, args))
915 }
916
917 pub fn ty(&self) -> Ty {
919 with(|cx| cx.def_ty(self.def))
920 }
921}
922
923impl Display for AdtKind {
924 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
925 f.write_str(match self {
926 AdtKind::Enum => "enum",
927 AdtKind::Union => "union",
928 AdtKind::Struct => "struct",
929 })
930 }
931}
932
933impl AdtKind {
934 pub fn is_enum(&self) -> bool {
935 #[allow(non_exhaustive_omitted_patterns)] match self {
AdtKind::Enum => true,
_ => false,
}matches!(self, AdtKind::Enum)
936 }
937
938 pub fn is_struct(&self) -> bool {
939 #[allow(non_exhaustive_omitted_patterns)] match self {
AdtKind::Struct => true,
_ => false,
}matches!(self, AdtKind::Struct)
940 }
941
942 pub fn is_union(&self) -> bool {
943 #[allow(non_exhaustive_omitted_patterns)] match self {
AdtKind::Union => true,
_ => false,
}matches!(self, AdtKind::Union)
944 }
945}
946
947#[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! {
948 #[derive(Serialize)]
949 pub AliasDef;
950}
951
952#[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! {
953 #[derive(Serialize)]
955 pub TraitDef;
956}
957
958impl TraitDef {
959 pub fn declaration(trait_def: &TraitDef) -> TraitDecl {
960 with(|cx| cx.trait_decl(trait_def))
961 }
962
963 pub fn associated_items(&self) -> AssocItems {
964 with(|cx| cx.associated_items(self.def_id()))
965 }
966}
967
968#[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! {
969 #[derive(Serialize)]
970 pub GenericDef;
971}
972
973#[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! {
974 #[derive(Serialize)]
975 pub ConstDef;
976}
977
978#[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! {
979 #[derive(Serialize)]
981 pub ImplDef;
982}
983
984impl ImplDef {
985 pub fn trait_impl(&self) -> ImplTrait {
987 with(|cx| cx.trait_impl(self))
988 }
989
990 pub fn associated_items(&self) -> AssocItems {
991 with(|cx| cx.associated_items(self.def_id()))
992 }
993}
994
995#[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! {
996 #[derive(Serialize)]
997 pub RegionDef;
998}
999
1000#[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! {
1001 #[derive(Serialize)]
1002 pub CoroutineWitnessDef;
1003}
1004
1005#[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)]
1007pub struct GenericArgs(pub Vec<GenericArgKind>);
1008
1009impl std::ops::Index<ParamTy> for GenericArgs {
1010 type Output = Ty;
1011
1012 fn index(&self, index: ParamTy) -> &Self::Output {
1013 self.0[index.index as usize].expect_ty()
1014 }
1015}
1016
1017impl std::ops::Index<ParamConst> for GenericArgs {
1018 type Output = TyConst;
1019
1020 fn index(&self, index: ParamConst) -> &Self::Output {
1021 self.0[index.index as usize].expect_const()
1022 }
1023}
1024
1025#[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)]
1026pub enum GenericArgKind {
1027 Lifetime(Region),
1028 Type(Ty),
1029 Const(TyConst),
1030}
1031
1032impl GenericArgKind {
1033 #[track_caller]
1036 pub fn expect_ty(&self) -> &Ty {
1037 match self {
1038 GenericArgKind::Type(ty) => ty,
1039 _ => { ::core::panicking::panic_fmt(format_args!("{0:?}", self)); }panic!("{self:?}"),
1040 }
1041 }
1042
1043 #[track_caller]
1046 pub fn expect_const(&self) -> &TyConst {
1047 match self {
1048 GenericArgKind::Const(c) => c,
1049 _ => { ::core::panicking::panic_fmt(format_args!("{0:?}", self)); }panic!("{self:?}"),
1050 }
1051 }
1052
1053 pub fn ty(&self) -> Option<&Ty> {
1055 match self {
1056 GenericArgKind::Type(ty) => Some(ty),
1057 _ => None,
1058 }
1059 }
1060}
1061
1062#[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)]
1063pub enum TermKind {
1064 Type(Ty),
1065 Const(TyConst),
1066}
1067
1068#[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)]
1069pub enum AliasKind {
1070 Projection,
1071 Inherent,
1072 Opaque,
1073 Free,
1074}
1075
1076#[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)]
1077pub struct AliasTy {
1078 pub def_id: AliasDef,
1079 pub args: GenericArgs,
1080}
1081
1082#[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)]
1083pub struct AliasTerm {
1084 pub def_id: AliasDef,
1085 pub args: GenericArgs,
1086}
1087
1088pub type PolyFnSig = Binder<FnSig>;
1089
1090impl PolyFnSig {
1091 pub fn fn_ptr_abi(self) -> Result<FnAbi, Error> {
1096 with(|cx| cx.fn_ptr_abi(self))
1097 }
1098}
1099
1100#[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)]
1101pub struct FnSig {
1102 pub inputs_and_output: Vec<Ty>,
1103 pub c_variadic: bool,
1104 pub safety: Safety,
1105 pub abi: Abi,
1106}
1107
1108impl FnSig {
1109 pub fn output(&self) -> Ty {
1110 self.inputs_and_output[self.inputs_and_output.len() - 1]
1111 }
1112
1113 pub fn inputs(&self) -> &[Ty] {
1114 &self.inputs_and_output[..self.inputs_and_output.len() - 1]
1115 }
1116}
1117
1118#[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)]
1119pub enum Constness {
1120 Const,
1121 NotConst,
1122}
1123
1124impl Constness {
1125 pub fn is_const(self) -> bool {
1126 #[allow(non_exhaustive_omitted_patterns)] match self {
Constness::Const => true,
_ => false,
}matches!(self, Constness::Const)
1127 }
1128}
1129
1130#[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)]
1131pub enum Asyncness {
1132 Async,
1133 NotAsync,
1134}
1135
1136impl Asyncness {
1137 pub fn is_async(self) -> bool {
1138 #[allow(non_exhaustive_omitted_patterns)] match self {
Asyncness::Async => true,
_ => false,
}matches!(self, Asyncness::Async)
1139 }
1140}
1141
1142#[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)]
1143pub enum Abi {
1144 Rust,
1145 C { unwind: bool },
1146 Cdecl { unwind: bool },
1147 Stdcall { unwind: bool },
1148 Fastcall { unwind: bool },
1149 Vectorcall { unwind: bool },
1150 Thiscall { unwind: bool },
1151 Aapcs { unwind: bool },
1152 Win64 { unwind: bool },
1153 SysV64 { unwind: bool },
1154 PtxKernel,
1155 Msp430Interrupt,
1156 X86Interrupt,
1157 GpuKernel,
1158 EfiApi,
1159 AvrInterrupt,
1160 AvrNonBlockingInterrupt,
1161 CCmseNonSecureCall,
1162 CCmseNonSecureEntry,
1163 System { unwind: bool },
1164 RustCall,
1165 Unadjusted,
1166 RustCold,
1167 RiscvInterruptM,
1168 RiscvInterruptS,
1169 RustPreserveNone,
1170 RustInvalid,
1171 Custom,
1172}
1173
1174#[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)]
1176pub struct Binder<T> {
1177 pub value: T,
1178 pub bound_vars: Vec<BoundVariableKind>,
1179}
1180
1181impl<T> Binder<T> {
1182 pub fn bind_with_vars(value: T, bound_vars: Vec<BoundVariableKind>) -> Self {
1184 Binder { value, bound_vars }
1185 }
1186
1187 pub fn dummy(value: T) -> Self {
1189 Binder { value, bound_vars: ::alloc::vec::Vec::new()vec![] }
1190 }
1191
1192 pub fn skip_binder(self) -> T {
1193 self.value
1194 }
1195
1196 pub fn map_bound_ref<F, U>(&self, f: F) -> Binder<U>
1197 where
1198 F: FnOnce(&T) -> U,
1199 {
1200 let Binder { value, bound_vars } = self;
1201 let new_value = f(value);
1202 Binder { value: new_value, bound_vars: bound_vars.clone() }
1203 }
1204
1205 pub fn map_bound<F, U>(self, f: F) -> Binder<U>
1206 where
1207 F: FnOnce(T) -> U,
1208 {
1209 let Binder { value, bound_vars } = self;
1210 let new_value = f(value);
1211 Binder { value: new_value, bound_vars }
1212 }
1213}
1214
1215#[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)]
1216pub struct EarlyBinder<T> {
1217 pub value: T,
1218}
1219
1220#[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)]
1221pub enum BoundVariableKind {
1222 Ty(BoundTyKind),
1223 Region(BoundRegionKind),
1224 Const,
1225}
1226
1227#[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)]
1228pub enum BoundTyKind {
1229 Anon,
1230 Param(ParamDef, String),
1231}
1232
1233#[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)]
1234pub enum BoundRegionKind {
1235 BrAnon,
1236 BrNamed(BrNamedDef, String),
1237 BrEnv,
1238}
1239
1240#[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)]
1241pub enum ExistentialPredicate {
1242 Trait(ExistentialTraitRef),
1243 Projection(ExistentialProjection),
1244 AutoTrait(TraitDef),
1245}
1246
1247#[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)]
1251pub struct ExistentialTraitRef {
1252 pub def_id: TraitDef,
1253 pub generic_args: GenericArgs,
1254}
1255
1256impl Binder<ExistentialTraitRef> {
1257 pub fn with_self_ty(&self, self_ty: Ty) -> Binder<TraitRef> {
1258 self.map_bound_ref(|trait_ref| trait_ref.with_self_ty(self_ty))
1259 }
1260}
1261
1262impl ExistentialTraitRef {
1263 pub fn with_self_ty(&self, self_ty: Ty) -> TraitRef {
1264 TraitRef::new(self.def_id, self_ty, &self.generic_args)
1265 }
1266}
1267
1268#[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)]
1269pub struct ExistentialProjection {
1270 pub def_id: TraitDef,
1271 pub generic_args: GenericArgs,
1272 pub term: TermKind,
1273}
1274
1275#[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)]
1276pub struct ParamTy {
1277 pub index: u32,
1278 pub name: String,
1279}
1280
1281#[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)]
1282pub struct BoundTy {
1283 pub var: usize,
1284 pub kind: BoundTyKind,
1285}
1286
1287pub type Bytes = Vec<Option<u8>>;
1288
1289pub type Size = usize;
1291
1292#[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)]
1293pub struct Prov(pub AllocId);
1294
1295pub type Align = u64;
1296pub type Promoted = u32;
1297pub type InitMaskMaterialized = Vec<u64>;
1298
1299#[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)]
1301pub struct ProvenanceMap {
1302 pub ptrs: Vec<(Size, Prov)>,
1305}
1306
1307#[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)]
1308pub struct Allocation {
1309 pub bytes: Bytes,
1310 pub provenance: ProvenanceMap,
1311 pub align: Align,
1312 pub mutability: Mutability,
1313}
1314
1315impl Allocation {
1316 pub fn raw_bytes(&self) -> Result<Vec<u8>, Error> {
1318 self.bytes
1319 .iter()
1320 .copied()
1321 .collect::<Option<Vec<_>>>()
1322 .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))
1323 }
1324
1325 pub fn read_partial_uint(&self, range: Range<usize>) -> Result<u128, Error> {
1327 if range.end - range.start > 16 {
1328 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"));
1329 }
1330 if range.end > self.bytes.len() {
1331 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!(
1332 "Range is out of bounds. Allocation length is `{}`, but requested range `{:?}`",
1333 self.bytes.len(),
1334 range
1335 ));
1336 }
1337 let raw = self.bytes[range]
1338 .iter()
1339 .copied()
1340 .collect::<Option<Vec<_>>>()
1341 .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))?;
1342 read_target_uint(&raw)
1343 }
1344
1345 pub fn read_uint(&self) -> Result<u128, Error> {
1347 if self.bytes.len() > 16 {
1348 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"));
1349 }
1350 let raw = self.raw_bytes()?;
1351 read_target_uint(&raw)
1352 }
1353
1354 pub fn read_int(&self) -> Result<i128, Error> {
1356 if self.bytes.len() > 16 {
1357 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"));
1358 }
1359 let raw = self.raw_bytes()?;
1360 read_target_int(&raw)
1361 }
1362
1363 pub fn read_bool(&self) -> Result<bool, Error> {
1365 match self.read_int()? {
1366 0 => Ok(false),
1367 1 => Ok(true),
1368 val => Err(Error(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Unexpected value for bool: `{0}`",
val))
}))error!("Unexpected value for bool: `{val}`")),
1369 }
1370 }
1371
1372 pub fn is_null(&self) -> Result<bool, Error> {
1374 let len = self.bytes.len();
1375 let ptr_len = MachineInfo::target_pointer_width().bytes();
1376 if len != ptr_len {
1377 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}`"));
1378 }
1379 Ok(self.read_uint()? == 0 && self.provenance.ptrs.is_empty())
1380 }
1381}
1382
1383#[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)]
1384pub enum ConstantKind {
1385 Ty(TyConst),
1386 Allocated(Allocation),
1387 Unevaluated(UnevaluatedConst),
1388 Param(ParamConst),
1389 ZeroSized,
1392}
1393
1394#[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)]
1395pub struct ParamConst {
1396 pub index: u32,
1397 pub name: String,
1398}
1399
1400#[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)]
1401pub struct UnevaluatedConst {
1402 pub def: ConstDef,
1403 pub args: GenericArgs,
1404 pub promoted: Option<Promoted>,
1405}
1406
1407#[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)]
1408pub enum TraitSpecializationKind {
1409 None,
1410 Marker,
1411 AlwaysApplicable,
1412}
1413
1414#[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)]
1415pub struct TraitDecl {
1416 pub def_id: TraitDef,
1417 pub safety: Safety,
1418 pub paren_sugar: bool,
1419 pub has_auto_impl: bool,
1420 pub is_marker: bool,
1421 pub is_coinductive: bool,
1422 pub skip_array_during_method_dispatch: bool,
1423 pub skip_boxed_slice_during_method_dispatch: bool,
1424 pub specialization_kind: TraitSpecializationKind,
1425 pub must_implement_one_of: Option<Vec<Ident>>,
1426 pub force_dyn_incompatible: Option<Span>,
1427 pub deny_explicit_impl: bool,
1428}
1429
1430impl TraitDecl {
1431 pub fn generics_of(&self) -> Generics {
1432 with(|cx| cx.generics_of(self.def_id.0))
1433 }
1434
1435 pub fn predicates_of(&self) -> GenericPredicates {
1436 with(|cx| cx.predicates_of(self.def_id.0))
1437 }
1438
1439 pub fn explicit_predicates_of(&self) -> GenericPredicates {
1440 with(|cx| cx.explicit_predicates_of(self.def_id.0))
1441 }
1442}
1443
1444pub type ImplTrait = EarlyBinder<TraitRef>;
1445
1446#[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)]
1448pub struct TraitRef {
1449 pub def_id: TraitDef,
1450 args: GenericArgs,
1453}
1454
1455impl TraitRef {
1456 pub fn new(def_id: TraitDef, self_ty: Ty, gen_args: &GenericArgs) -> TraitRef {
1457 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)];
1458 args.extend_from_slice(&gen_args.0);
1459 TraitRef { def_id, args: GenericArgs(args) }
1460 }
1461
1462 pub fn try_new(def_id: TraitDef, args: GenericArgs) -> Result<TraitRef, ()> {
1463 match &args.0[..] {
1464 [GenericArgKind::Type(_), ..] => Ok(TraitRef { def_id, args }),
1465 _ => Err(()),
1466 }
1467 }
1468
1469 pub fn args(&self) -> &GenericArgs {
1470 &self.args
1471 }
1472
1473 pub fn self_ty(&self) -> Ty {
1474 let GenericArgKind::Type(self_ty) = self.args.0[0] else {
1475 {
::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])
1476 };
1477 self_ty
1478 }
1479
1480 pub fn vtable_entries(&self) -> Vec<VtblEntry> {
1482 with(|cx| cx.vtable_entries(self))
1483 }
1484
1485 pub fn vtable_entry(&self, idx: usize) -> Option<VtblEntry> {
1489 with(|cx| cx.vtable_entry(self, idx))
1490 }
1491}
1492
1493#[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)]
1494pub struct Generics {
1495 pub parent: Option<GenericDef>,
1496 pub parent_count: usize,
1497 pub params: Vec<GenericParamDef>,
1498 pub param_def_id_to_index: Vec<(GenericDef, u32)>,
1499 pub has_self: bool,
1500 pub has_late_bound_regions: Option<Span>,
1501}
1502
1503#[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)]
1504pub enum GenericParamDefKind {
1505 Lifetime,
1506 Type { has_default: bool, synthetic: bool },
1507 Const { has_default: bool },
1508}
1509
1510#[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)]
1511pub struct GenericParamDef {
1512 pub name: super::Symbol,
1513 pub def_id: GenericDef,
1514 pub index: u32,
1515 pub pure_wrt_drop: bool,
1516 pub kind: GenericParamDefKind,
1517}
1518
1519pub struct GenericPredicates {
1520 pub parent: Option<TraitDef>,
1521 pub predicates: Vec<(PredicateKind, Span)>,
1522}
1523
1524#[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)]
1525pub enum PredicateKind {
1526 Clause(ClauseKind),
1527 DynCompatible(TraitDef),
1528 SubType(SubtypePredicate),
1529 Coerce(CoercePredicate),
1530 ConstEquate(TyConst, TyConst),
1531 Ambiguous,
1532 AliasRelate(TermKind, TermKind, AliasRelationDirection),
1533}
1534
1535#[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)]
1536pub enum ClauseKind {
1537 Trait(TraitPredicate),
1538 RegionOutlives(RegionOutlivesPredicate),
1539 TypeOutlives(TypeOutlivesPredicate),
1540 Projection(ProjectionPredicate),
1541 ConstArgHasType(TyConst, Ty),
1542 WellFormed(TermKind),
1543 ConstEvaluatable(TyConst),
1544}
1545
1546#[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)]
1547pub enum ClosureKind {
1548 Fn,
1549 FnMut,
1550 FnOnce,
1551}
1552
1553#[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)]
1554pub struct SubtypePredicate {
1555 pub a: Ty,
1556 pub b: Ty,
1557}
1558
1559#[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)]
1560pub struct CoercePredicate {
1561 pub a: Ty,
1562 pub b: Ty,
1563}
1564
1565#[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)]
1566pub enum AliasRelationDirection {
1567 Equate,
1568 Subtype,
1569}
1570
1571#[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)]
1572pub struct TraitPredicate {
1573 pub trait_ref: TraitRef,
1574 pub polarity: PredicatePolarity,
1575}
1576
1577#[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)]
1578pub struct OutlivesPredicate<A, B>(pub A, pub B);
1579
1580pub type RegionOutlivesPredicate = OutlivesPredicate<Region, Region>;
1581pub type TypeOutlivesPredicate = OutlivesPredicate<Ty, Region>;
1582
1583#[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)]
1584pub struct ProjectionPredicate {
1585 pub projection_term: AliasTerm,
1586 pub term: TermKind,
1587}
1588
1589#[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)]
1590pub enum ImplPolarity {
1591 Positive,
1592 Negative,
1593 Reservation,
1594}
1595
1596#[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)]
1597pub enum PredicatePolarity {
1598 Positive,
1599 Negative,
1600}
1601
1602macro_rules! index_impl {
1603 ($name:ident) => {
1604 impl crate::IndexedVal for $name {
1605 fn to_val(index: usize) -> Self {
1606 $name(index, $crate::ThreadLocalIndex)
1607 }
1608 fn to_index(&self) -> usize {
1609 self.0
1610 }
1611 }
1612 $crate::ty::serialize_index_impl!($name);
1613 };
1614}
1615macro_rules! serialize_index_impl {
1616 ($name:ident) => {
1617 impl ::serde::Serialize for $name {
1618 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1619 where
1620 S: ::serde::Serializer,
1621 {
1622 let n: usize = self.0; ::serde::Serialize::serialize(&n, serializer)
1624 }
1625 }
1626 };
1627}
1628pub(crate) use index_impl;
1629pub(crate) use serialize_index_impl;
1630
1631impl 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);
1632impl 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);
1633impl 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);
1634impl 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);
1635
1636#[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)]
1650pub struct VariantIdx(usize, ThreadLocalIndex);
1651
1652impl 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);
1653
1654#[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! {
1655 #[derive(Serialize)]
1657 pub OpaqueDef;
1658}
1659
1660#[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! {
1661 #[derive(Serialize)]
1662 pub AssocDef;
1663}
1664
1665#[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)]
1666pub struct AssocItem {
1667 pub def_id: AssocDef,
1668 pub kind: AssocKind,
1669 pub container: AssocContainer,
1670}
1671
1672#[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)]
1673pub enum AssocTypeData {
1674 Normal(Symbol),
1675 Rpitit(ImplTraitInTraitData),
1679}
1680
1681#[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)]
1682pub enum AssocKind {
1683 Const { name: Symbol },
1684 Fn { name: Symbol, has_self: bool },
1685 Type { data: AssocTypeData },
1686}
1687
1688#[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)]
1689pub enum AssocContainer {
1690 InherentImpl,
1691 TraitImpl(AssocDef),
1693 Trait,
1694}
1695
1696#[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)]
1697pub enum ImplTraitInTraitData {
1698 Trait { fn_def_id: FnDef, opaque_def_id: OpaqueDef },
1699 Impl { fn_def_id: FnDef },
1700}
1701
1702impl AssocItem {
1703 pub fn is_impl_trait_in_trait(&self) -> bool {
1704 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
AssocKind::Type { data: AssocTypeData::Rpitit(_) } => true,
_ => false,
}matches!(self.kind, AssocKind::Type { data: AssocTypeData::Rpitit(_) })
1705 }
1706}
1707
1708#[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)]
1709pub enum VtblEntry {
1710 MetadataDropInPlace,
1712 MetadataSize,
1714 MetadataAlign,
1716 Vacant,
1718 Method(Instance),
1720 TraitVPtr(TraitRef),
1722}