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