1use std::fmt::{self, Debug, Display, Formatter};
2use std::ops::Range;
3
4use serde::Serialize;
5
6use crate::abi::{FnAbi, Layout};
7use crate::mir::alloc::{AllocId, read_target_int, read_target_uint};
8use crate::mir::mono::{Instance, StaticDef};
9use crate::mir::{Mutability, Safety};
10use crate::target::MachineInfo;
11use crate::ty::def::*;
12use crate::{Error, Filename, Opaque, Symbol, ThreadLocalIndex, with};
13
14#[derive(#[automatically_derived]
impl ::core::marker::Copy for Ty { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for Ty { }
#[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::marker::StructuralPartialEq for Ty { }
#[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)]
15pub struct Ty(usize, ThreadLocalIndex);
16
17impl Debug for Ty {
18 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
19 f.debug_struct("Ty").field("id", &self.0).field("kind", &self.kind()).finish()
20 }
21}
22
23impl Ty {
25 pub fn from_rigid_kind(kind: RigidTy) -> Ty {
27 with(|cx| cx.new_rigid_ty(kind))
28 }
29
30 pub fn try_new_array(elem_ty: Ty, size: u64) -> Result<Ty, Error> {
32 Ok(Ty::from_rigid_kind(RigidTy::Array(elem_ty, TyConst::try_from_target_usize(size)?)))
33 }
34
35 pub fn new_array_with_const_len(elem_ty: Ty, len: TyConst) -> Ty {
37 Ty::from_rigid_kind(RigidTy::Array(elem_ty, len))
38 }
39
40 pub fn new_ptr(pointee_ty: Ty, mutability: Mutability) -> Ty {
42 Ty::from_rigid_kind(RigidTy::RawPtr(pointee_ty, mutability))
43 }
44
45 pub fn new_ref(reg: Region, pointee_ty: Ty, mutability: Mutability) -> Ty {
47 Ty::from_rigid_kind(RigidTy::Ref(reg, pointee_ty, mutability))
48 }
49
50 pub fn new_tuple(tys: &[Ty]) -> Ty {
52 Ty::from_rigid_kind(RigidTy::Tuple(Vec::from(tys)))
53 }
54
55 pub fn new_closure(def: ClosureDef, args: GenericArgs) -> Ty {
57 Ty::from_rigid_kind(RigidTy::Closure(def, args))
58 }
59
60 pub fn new_coroutine(def: CoroutineDef, args: GenericArgs) -> Ty {
62 Ty::from_rigid_kind(RigidTy::Coroutine(def, args))
63 }
64
65 pub fn new_coroutine_closure(def: CoroutineClosureDef, args: GenericArgs) -> Ty {
67 Ty::from_rigid_kind(RigidTy::CoroutineClosure(def, args))
68 }
69
70 pub fn new_box(inner_ty: Ty) -> Ty {
72 with(|cx| cx.new_box_ty(inner_ty))
73 }
74
75 pub fn usize_ty() -> Ty {
77 Ty::from_rigid_kind(RigidTy::Uint(UintTy::Usize))
78 }
79
80 pub fn bool_ty() -> Ty {
82 Ty::from_rigid_kind(RigidTy::Bool)
83 }
84
85 pub fn signed_ty(inner: IntTy) -> Ty {
87 Ty::from_rigid_kind(RigidTy::Int(inner))
88 }
89
90 pub fn unsigned_ty(inner: UintTy) -> Ty {
92 Ty::from_rigid_kind(RigidTy::Uint(inner))
93 }
94
95 pub fn layout(self) -> Result<Layout, Error> {
97 with(|cx| cx.ty_layout(self))
98 }
99}
100
101impl Ty {
102 pub fn kind(&self) -> TyKind {
103 with(|context| context.ty_kind(*self))
104 }
105}
106
107#[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::marker::StructuralPartialEq for Pattern { }
#[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)]
109pub enum Pattern {
110 Range { start: TyConst, end: TyConst, include_end: bool },
111 NotNull,
112 Or(Vec<Pattern>),
113}
114
115#[derive(#[automatically_derived]
impl ::core::clone::Clone for TyConst {
#[inline]
fn clone(&self) -> TyConst {
TyConst {
kind: ::core::clone::Clone::clone(&self.kind),
id: ::core::clone::Clone::clone(&self.id),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TyConst {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "TyConst",
"kind", &self.kind, "id", &&self.id)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for TyConst {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TyConstKind>;
let _: ::core::cmp::AssertParamIsEq<TyConstId>;
}
}Eq, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for TyConst { }
#[automatically_derived]
impl ::core::cmp::PartialEq for TyConst {
#[inline]
fn eq(&self, other: &TyConst) -> bool {
self.kind == other.kind && self.id == other.id
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for TyConst {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.kind, state);
::core::hash::Hash::hash(&self.id, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for TyConst {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"TyConst", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"kind", &self.kind)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"id", &self.id)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
117pub struct TyConst {
118 pub(crate) kind: TyConstKind,
119 pub id: TyConstId,
120}
121
122impl TyConst {
123 pub fn new(kind: TyConstKind, id: TyConstId) -> TyConst {
124 Self { kind, id }
125 }
126
127 pub fn kind(&self) -> &TyConstKind {
129 &self.kind
130 }
131
132 pub fn try_from_target_usize(val: u64) -> Result<Self, Error> {
134 with(|cx| cx.try_new_ty_const_uint(val.into(), UintTy::Usize))
135 }
136
137 pub fn eval_target_usize(&self) -> Result<u64, Error> {
139 with(|cx| cx.eval_target_usize_ty(self))
140 }
141}
142
143#[derive(#[automatically_derived]
impl ::core::clone::Clone for TyConstKind {
#[inline]
fn clone(&self) -> TyConstKind {
match self {
TyConstKind::Param(__self_0) =>
TyConstKind::Param(::core::clone::Clone::clone(__self_0)),
TyConstKind::Bound(__self_0, __self_1) =>
TyConstKind::Bound(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyConstKind::Unevaluated(__self_0, __self_1) =>
TyConstKind::Unevaluated(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyConstKind::Value(__self_0, __self_1) =>
TyConstKind::Value(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyConstKind::ZSTValue(__self_0) =>
TyConstKind::ZSTValue(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TyConstKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
TyConstKind::Param(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Param",
&__self_0),
TyConstKind::Bound(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Bound",
__self_0, &__self_1),
TyConstKind::Unevaluated(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Unevaluated", __self_0, &__self_1),
TyConstKind::Value(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Value",
__self_0, &__self_1),
TyConstKind::ZSTValue(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ZSTValue", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for TyConstKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ParamConst>;
let _: ::core::cmp::AssertParamIsEq<DebruijnIndex>;
let _: ::core::cmp::AssertParamIsEq<BoundVar>;
let _: ::core::cmp::AssertParamIsEq<ConstDef>;
let _: ::core::cmp::AssertParamIsEq<GenericArgs>;
let _: ::core::cmp::AssertParamIsEq<Ty>;
let _: ::core::cmp::AssertParamIsEq<Allocation>;
}
}Eq, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for TyConstKind { }
#[automatically_derived]
impl ::core::cmp::PartialEq for TyConstKind {
#[inline]
fn eq(&self, other: &TyConstKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(TyConstKind::Param(__self_0), TyConstKind::Param(__arg1_0))
=> __self_0 == __arg1_0,
(TyConstKind::Bound(__self_0, __self_1),
TyConstKind::Bound(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(TyConstKind::Unevaluated(__self_0, __self_1),
TyConstKind::Unevaluated(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(TyConstKind::Value(__self_0, __self_1),
TyConstKind::Value(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(TyConstKind::ZSTValue(__self_0),
TyConstKind::ZSTValue(__arg1_0)) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for TyConstKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
TyConstKind::Param(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
TyConstKind::Bound(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
TyConstKind::Unevaluated(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
TyConstKind::Value(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
TyConstKind::ZSTValue(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for TyConstKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
TyConstKind::Param(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"TyConstKind", 0u32, "Param", __field0),
TyConstKind::Bound(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"TyConstKind", 1u32, "Bound", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
TyConstKind::Unevaluated(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"TyConstKind", 2u32, "Unevaluated", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
TyConstKind::Value(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"TyConstKind", 3u32, "Value", 0 + 1 + 1)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field0)?;
_serde::ser::SerializeTupleVariant::serialize_field(&mut __serde_state,
__field1)?;
_serde::ser::SerializeTupleVariant::end(__serde_state)
}
TyConstKind::ZSTValue(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"TyConstKind", 4u32, "ZSTValue", __field0),
}
}
}
};Serialize)]
144pub enum TyConstKind {
145 Param(ParamConst),
146 Bound(DebruijnIndex, BoundVar),
147 Unevaluated(ConstDef, GenericArgs),
148
149 Value(Ty, Allocation),
151 ZSTValue(Ty),
152}
153
154#[derive(#[automatically_derived]
impl ::core::marker::Copy for TyConstId { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for TyConstId { }
#[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::marker::StructuralPartialEq for TyConstId { }
#[automatically_derived]
impl ::core::cmp::PartialEq for TyConstId {
#[inline]
fn eq(&self, other: &TyConstId) -> bool {
self.0 == other.0 && self.1 == other.1
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for TyConstId {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state);
::core::hash::Hash::hash(&self.1, state)
}
}Hash)]
155pub struct TyConstId(usize, ThreadLocalIndex);
156
157#[derive(#[automatically_derived]
impl ::core::clone::Clone for MirConst {
#[inline]
fn clone(&self) -> MirConst {
MirConst {
kind: ::core::clone::Clone::clone(&self.kind),
ty: ::core::clone::Clone::clone(&self.ty),
id: ::core::clone::Clone::clone(&self.id),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for MirConst {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "MirConst",
"kind", &self.kind, "ty", &self.ty, "id", &&self.id)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for MirConst {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ConstantKind>;
let _: ::core::cmp::AssertParamIsEq<Ty>;
let _: ::core::cmp::AssertParamIsEq<MirConstId>;
}
}Eq, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for MirConst { }
#[automatically_derived]
impl ::core::cmp::PartialEq for MirConst {
#[inline]
fn eq(&self, other: &MirConst) -> bool {
self.kind == other.kind && self.ty == other.ty && self.id == other.id
}
}PartialEq, #[automatically_derived]
impl ::core::hash::Hash for MirConst {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.kind, state);
::core::hash::Hash::hash(&self.ty, state);
::core::hash::Hash::hash(&self.id, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for MirConst {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"MirConst", false as usize + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"kind", &self.kind)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"ty", &self.ty)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"id", &self.id)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
159pub struct MirConst {
160 pub(crate) kind: ConstantKind,
162 pub(crate) ty: Ty,
164 pub id: MirConstId,
166}
167
168impl MirConst {
169 pub fn new(kind: ConstantKind, ty: Ty, id: MirConstId) -> MirConst {
171 MirConst { kind, ty, id }
172 }
173
174 pub fn kind(&self) -> &ConstantKind {
176 &self.kind
177 }
178
179 pub fn ty(&self) -> Ty {
181 self.ty
182 }
183
184 pub fn eval_target_usize(&self) -> Result<u64, Error> {
186 with(|cx| cx.eval_target_usize(self))
187 }
188
189 pub fn try_new_zero_sized(ty: Ty) -> Result<MirConst, Error> {
192 with(|cx| cx.try_new_const_zst(ty))
193 }
194
195 pub fn from_str(value: &str) -> MirConst {
201 with(|cx| cx.new_const_str(value))
202 }
203
204 pub fn from_bool(value: bool) -> MirConst {
206 with(|cx| cx.new_const_bool(value))
207 }
208
209 pub fn try_from_uint(value: u128, uint_ty: UintTy) -> Result<MirConst, Error> {
211 with(|cx| cx.try_new_const_uint(value, uint_ty))
212 }
213
214 pub fn try_from_float(value: u128, float_ty: FloatTy) -> Result<MirConst, Error> {
218 with(|cx| cx.try_new_const_float(value, float_ty))
219 }
220}
221
222#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for MirConstId { }
#[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::marker::StructuralPartialEq for MirConstId { }
#[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)]
223pub struct MirConstId(usize, ThreadLocalIndex);
224
225type Ident = Opaque;
226
227#[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::marker::StructuralPartialEq for Region { }
#[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)]
228pub struct Region {
229 pub kind: RegionKind,
230}
231
232#[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::marker::StructuralPartialEq for RegionKind { }
#[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)]
233pub enum RegionKind {
234 ReEarlyParam(EarlyParamRegion),
235 ReBound(DebruijnIndex, BoundRegion),
236 ReStatic,
237 RePlaceholder(Placeholder<BoundRegion>),
238 ReErased,
239}
240
241pub(crate) type DebruijnIndex = u32;
242
243#[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::marker::StructuralPartialEq for EarlyParamRegion { }
#[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)]
244pub struct EarlyParamRegion {
245 pub index: u32,
246 pub name: Symbol,
247}
248
249pub(crate) type BoundVar = u32;
250
251#[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::marker::StructuralPartialEq for BoundRegion { }
#[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)]
252pub struct BoundRegion {
253 pub var: BoundVar,
254 pub kind: BoundRegionKind,
255}
256
257pub(crate) type UniverseIndex = u32;
258
259#[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::marker::StructuralPartialEq for
Placeholder<T> {
}
#[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)]
260pub struct Placeholder<T> {
261 pub universe: UniverseIndex,
262 pub bound: T,
263}
264
265#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for Span { }
#[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::marker::StructuralPartialEq for Span { }
#[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)]
266pub struct Span(usize, ThreadLocalIndex);
267
268impl Debug for Span {
269 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
270 f.debug_struct("Span")
271 .field("id", &self.0)
272 .field("repr", &with(|cx| cx.span_to_string(*self)))
273 .finish()
274 }
275}
276
277impl Span {
278 pub fn get_filename(&self) -> Filename {
280 with(|c| c.get_filename(self))
281 }
282
283 pub fn get_lines(&self) -> LineInfo {
285 with(|c| c.get_lines(self))
286 }
287
288 pub fn diagnostic(&self) -> String {
293 with(|c| c.span_to_string(*self))
294 }
295
296 pub(crate) fn as_caller_location(&self) -> MirConst {
298 with(|c| c.span_as_caller_location(*self))
299 }
300}
301
302#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for LineInfo { }
#[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)]
303pub struct LineInfo {
306 pub start_line: usize,
307 pub start_col: usize,
308 pub end_line: usize,
309 pub end_col: usize,
310}
311
312impl LineInfo {
313 pub fn from(lines: (usize, usize, usize, usize)) -> Self {
314 LineInfo { start_line: lines.0, start_col: lines.1, end_line: lines.2, end_col: lines.3 }
315 }
316}
317
318#[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::marker::StructuralPartialEq for TyKind { }
#[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)]
319pub enum TyKind {
320 RigidTy(RigidTy),
321 Alias(AliasKind, AliasTy),
322 Param(ParamTy),
323 Bound(usize, BoundTy),
324}
325
326impl TyKind {
327 pub fn rigid(&self) -> Option<&RigidTy> {
328 if let TyKind::RigidTy(inner) = self { Some(inner) } else { None }
329 }
330
331 #[inline]
332 pub fn is_unit(&self) -> bool {
333 #[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())
334 }
335
336 #[inline]
337 pub fn is_bool(&self) -> bool {
338 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Bool) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Bool))
339 }
340
341 #[inline]
342 pub fn is_char(&self) -> bool {
343 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Char) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Char))
344 }
345
346 #[inline]
347 pub fn is_trait(&self) -> bool {
348 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Dynamic(_, _)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Dynamic(_, _)))
349 }
350
351 #[inline]
352 pub fn is_enum(&self) -> bool {
353 #[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)
354 }
355
356 #[inline]
357 pub fn is_struct(&self) -> bool {
358 #[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)
359 }
360
361 #[inline]
362 pub fn is_union(&self) -> bool {
363 #[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)
364 }
365
366 #[inline]
367 pub fn is_adt(&self) -> bool {
368 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Adt(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Adt(..)))
369 }
370
371 #[inline]
372 pub fn is_ref(&self) -> bool {
373 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Ref(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Ref(..)))
374 }
375
376 #[inline]
377 pub fn is_fn(&self) -> bool {
378 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::FnDef(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::FnDef(..)))
379 }
380
381 #[inline]
382 pub fn is_fn_ptr(&self) -> bool {
383 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::FnPtr(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::FnPtr(..)))
384 }
385
386 #[inline]
387 pub fn is_primitive(&self) -> bool {
388 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Bool | RigidTy::Char | RigidTy::Int(_) |
RigidTy::Uint(_) | RigidTy::Float(_)) => true,
_ => false,
}matches!(
389 self,
390 TyKind::RigidTy(
391 RigidTy::Bool
392 | RigidTy::Char
393 | RigidTy::Int(_)
394 | RigidTy::Uint(_)
395 | RigidTy::Float(_)
396 )
397 )
398 }
399
400 #[inline]
401 pub fn is_float(&self) -> bool {
402 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Float(_)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Float(_)))
403 }
404
405 #[inline]
406 pub fn is_integral(&self) -> bool {
407 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Int(_) | RigidTy::Uint(_)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Int(_) | RigidTy::Uint(_)))
408 }
409
410 #[inline]
411 pub fn is_numeric(&self) -> bool {
412 self.is_integral() || self.is_float()
413 }
414
415 #[inline]
416 pub fn is_signed(&self) -> bool {
417 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Int(_)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Int(_)))
418 }
419
420 #[inline]
421 pub fn is_str(&self) -> bool {
422 *self == TyKind::RigidTy(RigidTy::Str)
423 }
424
425 #[inline]
426 pub fn is_cstr(&self) -> bool {
427 let TyKind::RigidTy(RigidTy::Adt(def, _)) = self else {
428 return false;
429 };
430 with(|cx| cx.adt_is_cstr(*def))
431 }
432
433 #[inline]
434 pub fn is_slice(&self) -> bool {
435 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Slice(_)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Slice(_)))
436 }
437
438 #[inline]
439 pub fn is_array(&self) -> bool {
440 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Array(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Array(..)))
441 }
442
443 #[inline]
444 pub fn is_mutable_ptr(&self) -> bool {
445 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::RawPtr(_, Mutability::Mut)) |
TyKind::RigidTy(RigidTy::Ref(_, _, Mutability::Mut)) => true,
_ => false,
}matches!(
446 self,
447 TyKind::RigidTy(RigidTy::RawPtr(_, Mutability::Mut))
448 | TyKind::RigidTy(RigidTy::Ref(_, _, Mutability::Mut))
449 )
450 }
451
452 #[inline]
453 pub fn is_raw_ptr(&self) -> bool {
454 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::RawPtr(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::RawPtr(..)))
455 }
456
457 #[inline]
459 pub fn is_any_ptr(&self) -> bool {
460 self.is_ref() || self.is_raw_ptr() || self.is_fn_ptr()
461 }
462
463 #[inline]
464 pub fn is_coroutine(&self) -> bool {
465 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Coroutine(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Coroutine(..)))
466 }
467
468 #[inline]
469 pub fn is_closure(&self) -> bool {
470 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::RigidTy(RigidTy::Closure(..)) => true,
_ => false,
}matches!(self, TyKind::RigidTy(RigidTy::Closure(..)))
471 }
472
473 #[inline]
474 pub fn is_box(&self) -> bool {
475 match self {
476 TyKind::RigidTy(RigidTy::Adt(def, _)) => def.is_box(),
477 _ => false,
478 }
479 }
480
481 #[inline]
482 pub fn is_simd(&self) -> bool {
483 #[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())
484 }
485
486 pub fn trait_principal(&self) -> Option<Binder<ExistentialTraitRef>> {
487 if let TyKind::RigidTy(RigidTy::Dynamic(predicates, _)) = self {
488 if let Some(Binder { value: ExistentialPredicate::Trait(trait_ref), bound_vars }) =
489 predicates.first()
490 {
491 Some(Binder { value: trait_ref.clone(), bound_vars: bound_vars.clone() })
492 } else {
493 None
494 }
495 } else {
496 None
497 }
498 }
499
500 pub fn builtin_index(&self) -> Option<Ty> {
502 match self.rigid()? {
503 RigidTy::Array(ty, _) | RigidTy::Slice(ty) => Some(*ty),
504 _ => None,
505 }
506 }
507
508 pub fn builtin_deref(&self, explicit: bool) -> Option<TypeAndMut> {
513 match self.rigid()? {
514 RigidTy::Adt(def, args) if def.is_box() => {
515 Some(TypeAndMut { ty: *args.0.first()?.ty()?, mutability: Mutability::Not })
516 }
517 RigidTy::Ref(_, ty, mutability) => {
518 Some(TypeAndMut { ty: *ty, mutability: *mutability })
519 }
520 RigidTy::RawPtr(ty, mutability) if explicit => {
521 Some(TypeAndMut { ty: *ty, mutability: *mutability })
522 }
523 _ => None,
524 }
525 }
526
527 pub fn fn_sig(&self) -> Option<PolyFnSig> {
529 match self {
530 TyKind::RigidTy(RigidTy::FnDef(def, args)) => Some(with(|cx| cx.fn_sig(*def, args))),
531 TyKind::RigidTy(RigidTy::FnPtr(sig)) => Some(sig.clone()),
532 TyKind::RigidTy(RigidTy::Closure(_def, args)) => Some(with(|cx| cx.closure_sig(args))),
533 _ => None,
534 }
535 }
536
537 pub fn discriminant_ty(&self) -> Option<Ty> {
539 self.rigid().map(|ty| with(|cx| cx.rigid_ty_discriminant_ty(ty)))
540 }
541
542 pub fn fn_def(&self) -> Option<(FnDef, &GenericArgs)> {
544 if let TyKind::RigidTy(RigidTy::FnDef(def, args)) = self {
545 Some((*def, args))
546 } else {
547 None
548 }
549 }
550}
551
552pub struct TypeAndMut {
553 pub ty: Ty,
554 pub mutability: Mutability,
555}
556
557#[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::marker::StructuralPartialEq for RigidTy { }
#[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)]
558pub enum RigidTy {
559 Bool,
560 Char,
561 Int(IntTy),
562 Uint(UintTy),
563 Float(FloatTy),
564 Adt(AdtDef, GenericArgs),
565 Foreign(ForeignDef),
566 Str,
567 Array(Ty, TyConst),
568 Pat(Ty, Pattern),
569 Slice(Ty),
570 RawPtr(Ty, Mutability),
571 Ref(Region, Ty, Mutability),
572 FnDef(FnDef, GenericArgs),
573 FnPtr(PolyFnSig),
574 Closure(ClosureDef, GenericArgs),
575 Coroutine(CoroutineDef, GenericArgs),
576 CoroutineClosure(CoroutineClosureDef, GenericArgs),
577 Dynamic(Vec<Binder<ExistentialPredicate>>, Region),
578 Never,
579 Tuple(Vec<Ty>),
580 CoroutineWitness(CoroutineWitnessDef, GenericArgs),
581}
582
583impl RigidTy {
584 pub fn discriminant_ty(&self) -> Ty {
586 with(|cx| cx.rigid_ty_discriminant_ty(self))
587 }
588}
589
590impl From<RigidTy> for TyKind {
591 fn from(value: RigidTy) -> Self {
592 TyKind::RigidTy(value)
593 }
594}
595
596#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for IntTy { }
#[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::marker::StructuralPartialEq for IntTy { }
#[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)]
597pub enum IntTy {
598 Isize,
599 I8,
600 I16,
601 I32,
602 I64,
603 I128,
604}
605
606impl IntTy {
607 pub fn num_bytes(self) -> usize {
608 match self {
609 IntTy::Isize => MachineInfo::target_pointer_width().bytes(),
610 IntTy::I8 => 1,
611 IntTy::I16 => 2,
612 IntTy::I32 => 4,
613 IntTy::I64 => 8,
614 IntTy::I128 => 16,
615 }
616 }
617}
618
619#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for UintTy { }
#[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::marker::StructuralPartialEq for UintTy { }
#[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)]
620pub enum UintTy {
621 Usize,
622 U8,
623 U16,
624 U32,
625 U64,
626 U128,
627}
628
629impl UintTy {
630 pub fn num_bytes(self) -> usize {
631 match self {
632 UintTy::Usize => MachineInfo::target_pointer_width().bytes(),
633 UintTy::U8 => 1,
634 UintTy::U16 => 2,
635 UintTy::U32 => 4,
636 UintTy::U64 => 8,
637 UintTy::U128 => 16,
638 }
639 }
640}
641
642#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for FloatTy { }
#[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::marker::StructuralPartialEq for FloatTy { }
#[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)]
643pub enum FloatTy {
644 F16,
645 F32,
646 F64,
647 F128,
648}
649
650#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for Movability { }
#[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::marker::StructuralPartialEq for Movability { }
#[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)]
651pub enum Movability {
652 Static,
653 Movable,
654}
655
656pub struct ForeignModule {
657 pub def_id: ForeignModuleDef,
658 pub abi: Abi,
659}
660
661impl ForeignModule {
662 pub fn items(&self) -> Vec<ForeignDef> {
663 with(|cx| cx.foreign_items(self.def_id))
664 }
665}
666
667#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for ForeignItemKind { }
#[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::marker::StructuralPartialEq for ForeignItemKind { }
#[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)]
668pub enum ForeignItemKind {
669 Fn(FnDef),
670 Static(StaticDef),
671 Type(Ty),
672}
673
674#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for AdtKind { }
#[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::marker::StructuralPartialEq for AdtKind { }
#[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)]
675pub enum AdtKind {
676 Enum,
677 Union,
678 Struct,
679}
680
681pub struct Discr {
682 pub val: u128,
683 pub ty: Ty,
684}
685
686impl Display for AdtKind {
687 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
688 f.write_str(match self {
689 AdtKind::Enum => "enum",
690 AdtKind::Union => "union",
691 AdtKind::Struct => "struct",
692 })
693 }
694}
695
696impl AdtKind {
697 pub fn is_enum(&self) -> bool {
698 #[allow(non_exhaustive_omitted_patterns)] match self {
AdtKind::Enum => true,
_ => false,
}matches!(self, AdtKind::Enum)
699 }
700
701 pub fn is_struct(&self) -> bool {
702 #[allow(non_exhaustive_omitted_patterns)] match self {
AdtKind::Struct => true,
_ => false,
}matches!(self, AdtKind::Struct)
703 }
704
705 pub fn is_union(&self) -> bool {
706 #[allow(non_exhaustive_omitted_patterns)] match self {
AdtKind::Union => true,
_ => false,
}matches!(self, AdtKind::Union)
707 }
708}
709
710#[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::marker::StructuralPartialEq for GenericArgs { }
#[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)]
712pub struct GenericArgs(pub Vec<GenericArgKind>);
713
714impl std::ops::Index<ParamTy> for GenericArgs {
715 type Output = Ty;
716
717 fn index(&self, index: ParamTy) -> &Self::Output {
718 self.0[index.index as usize].expect_ty()
719 }
720}
721
722impl std::ops::Index<ParamConst> for GenericArgs {
723 type Output = TyConst;
724
725 fn index(&self, index: ParamConst) -> &Self::Output {
726 self.0[index.index as usize].expect_const()
727 }
728}
729
730#[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::marker::StructuralPartialEq for GenericArgKind { }
#[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)]
731pub enum GenericArgKind {
732 Lifetime(Region),
733 Type(Ty),
734 Const(TyConst),
735}
736
737impl GenericArgKind {
738 #[track_caller]
741 pub fn expect_ty(&self) -> &Ty {
742 match self {
743 GenericArgKind::Type(ty) => ty,
744 _ => { ::core::panicking::panic_fmt(format_args!("{0:?}", self)); }panic!("{self:?}"),
745 }
746 }
747
748 #[track_caller]
751 pub fn expect_const(&self) -> &TyConst {
752 match self {
753 GenericArgKind::Const(c) => c,
754 _ => { ::core::panicking::panic_fmt(format_args!("{0:?}", self)); }panic!("{self:?}"),
755 }
756 }
757
758 pub fn ty(&self) -> Option<&Ty> {
760 match self {
761 GenericArgKind::Type(ty) => Some(ty),
762 _ => None,
763 }
764 }
765}
766
767#[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::marker::StructuralPartialEq for TermKind { }
#[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)]
768pub enum TermKind {
769 Type(Ty),
770 Const(TyConst),
771}
772
773#[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::marker::StructuralPartialEq for AliasKind { }
#[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)]
774pub enum AliasKind {
775 Projection,
776 Inherent,
777 Opaque,
778 Free,
779}
780
781#[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::marker::StructuralPartialEq for AliasTy { }
#[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)]
782pub struct AliasTy {
783 pub def_id: AliasDef,
784 pub args: GenericArgs,
785}
786
787#[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::marker::StructuralPartialEq for AliasTerm { }
#[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)]
788pub struct AliasTerm {
789 pub def_id: AliasDef,
790 pub args: GenericArgs,
791}
792
793pub type PolyFnSig = Binder<FnSig>;
794
795impl PolyFnSig {
796 pub fn fn_ptr_abi(self) -> Result<FnAbi, Error> {
801 with(|cx| cx.fn_ptr_abi(self))
802 }
803}
804
805#[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::marker::StructuralPartialEq for FnSig { }
#[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)]
806pub struct FnSig {
807 pub inputs_and_output: Vec<Ty>,
808 pub c_variadic: bool,
809 pub safety: Safety,
810 pub abi: Abi,
811}
812
813impl FnSig {
814 pub fn output(&self) -> Ty {
815 self.inputs_and_output[self.inputs_and_output.len() - 1]
816 }
817
818 pub fn inputs(&self) -> &[Ty] {
819 &self.inputs_and_output[..self.inputs_and_output.len() - 1]
820 }
821}
822
823#[derive(#[automatically_derived]
impl ::core::marker::Copy for Constness { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for Constness { }
#[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::marker::StructuralPartialEq for Constness { }
#[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)]
824pub enum Constness {
825 Const { always: bool },
826 NotConst,
827}
828
829impl Constness {
830 pub fn is_const(self) -> bool {
831 #[allow(non_exhaustive_omitted_patterns)] match self {
Constness::Const { always: false } => true,
_ => false,
}matches!(self, Constness::Const { always: false })
832 }
833}
834
835#[derive(#[automatically_derived]
impl ::core::marker::Copy for Asyncness { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for Asyncness { }
#[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::marker::StructuralPartialEq for Asyncness { }
#[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)]
836pub enum Asyncness {
837 Async,
838 NotAsync,
839}
840
841impl Asyncness {
842 pub fn is_async(self) -> bool {
843 #[allow(non_exhaustive_omitted_patterns)] match self {
Asyncness::Async => true,
_ => false,
}matches!(self, Asyncness::Async)
844 }
845}
846
847#[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::LlvmIntrinsic => Abi::LlvmIntrinsic,
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::marker::StructuralPartialEq for Abi { }
#[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::LlvmIntrinsic =>
::core::fmt::Formatter::write_str(f, "LlvmIntrinsic"),
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::LlvmIntrinsic =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Abi", 21u32, "LlvmIntrinsic"),
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)]
848pub enum Abi {
849 Rust,
850 C { unwind: bool },
851 Cdecl { unwind: bool },
852 Stdcall { unwind: bool },
853 Fastcall { unwind: bool },
854 Vectorcall { unwind: bool },
855 Thiscall { unwind: bool },
856 Aapcs { unwind: bool },
857 Win64 { unwind: bool },
858 SysV64 { unwind: bool },
859 PtxKernel,
860 Msp430Interrupt,
861 X86Interrupt,
862 GpuKernel,
863 EfiApi,
864 AvrInterrupt,
865 AvrNonBlockingInterrupt,
866 CCmseNonSecureCall,
867 CCmseNonSecureEntry,
868 System { unwind: bool },
869 RustCall,
870 LlvmIntrinsic,
871 RustCold,
872 RiscvInterruptM,
873 RiscvInterruptS,
874 RustPreserveNone,
875 RustTail,
876 RustInvalid,
877 Custom,
878 Swift,
879}
880
881#[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::marker::StructuralPartialEq for
Binder<T> {
}
#[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)]
883pub struct Binder<T> {
884 pub value: T,
885 pub bound_vars: Vec<BoundVariableKind>,
886}
887
888impl<T> Binder<T> {
889 pub fn bind_with_vars(value: T, bound_vars: Vec<BoundVariableKind>) -> Self {
891 Binder { value, bound_vars }
892 }
893
894 pub fn dummy(value: T) -> Self {
896 Binder { value, bound_vars: ::alloc::vec::Vec::new()vec![] }
897 }
898
899 pub fn skip_binder(self) -> T {
900 self.value
901 }
902
903 pub fn map_bound_ref<F, U>(&self, f: F) -> Binder<U>
904 where
905 F: FnOnce(&T) -> U,
906 {
907 let Binder { value, bound_vars } = self;
908 let new_value = f(value);
909 Binder { value: new_value, bound_vars: bound_vars.clone() }
910 }
911
912 pub fn map_bound<F, U>(self, f: F) -> Binder<U>
913 where
914 F: FnOnce(T) -> U,
915 {
916 let Binder { value, bound_vars } = self;
917 let new_value = f(value);
918 Binder { value: new_value, bound_vars }
919 }
920}
921
922#[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::marker::StructuralPartialEq for
EarlyBinder<T> {
}
#[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)]
923pub struct EarlyBinder<T> {
924 pub value: T,
925}
926
927#[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::marker::StructuralPartialEq for BoundVariableKind { }
#[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)]
928pub enum BoundVariableKind {
929 Ty(BoundTyKind),
930 Region(BoundRegionKind),
931 Const,
932}
933
934#[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::marker::StructuralPartialEq for BoundTyKind { }
#[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)]
935pub enum BoundTyKind {
936 Anon,
937 Param(ParamDef, String),
938}
939
940#[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::marker::StructuralPartialEq for BoundRegionKind { }
#[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)]
941pub enum BoundRegionKind {
942 BrAnon,
943 BrNamed(BrNamedDef, String),
944 BrEnv,
945}
946
947#[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::marker::StructuralPartialEq for ExistentialPredicate { }
#[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)]
948pub enum ExistentialPredicate {
949 Trait(ExistentialTraitRef),
950 Projection(ExistentialProjection),
951 AutoTrait(TraitDef),
952}
953
954#[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::marker::StructuralPartialEq for ExistentialTraitRef { }
#[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)]
958pub struct ExistentialTraitRef {
959 pub def_id: TraitDef,
960 pub generic_args: GenericArgs,
961}
962
963impl Binder<ExistentialTraitRef> {
964 pub fn with_self_ty(&self, self_ty: Ty) -> Binder<TraitRef> {
965 self.map_bound_ref(|trait_ref| trait_ref.with_self_ty(self_ty))
966 }
967}
968
969impl ExistentialTraitRef {
970 pub fn with_self_ty(&self, self_ty: Ty) -> TraitRef {
971 TraitRef::new(self.def_id, self_ty, &self.generic_args)
972 }
973}
974
975#[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::marker::StructuralPartialEq for ExistentialProjection { }
#[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)]
976pub struct ExistentialProjection {
977 pub def_id: TraitDef,
978 pub generic_args: GenericArgs,
979 pub term: TermKind,
980}
981
982#[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::marker::StructuralPartialEq for ParamTy { }
#[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)]
983pub struct ParamTy {
984 pub index: u32,
985 pub name: String,
986}
987
988#[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::marker::StructuralPartialEq for BoundTy { }
#[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)]
989pub struct BoundTy {
990 pub var: usize,
991 pub kind: BoundTyKind,
992}
993
994pub type Bytes = Vec<Option<u8>>;
995
996pub type Size = usize;
998
999#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for Prov { }
#[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::marker::StructuralPartialEq for Prov { }
#[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)]
1000pub struct Prov(pub AllocId);
1001
1002pub type Align = u64;
1003pub type Promoted = u32;
1004pub type InitMaskMaterialized = Vec<u64>;
1005
1006#[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::marker::StructuralPartialEq for ProvenanceMap { }
#[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)]
1008pub struct ProvenanceMap {
1009 pub ptrs: Vec<(Size, Prov)>,
1012}
1013
1014#[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::marker::StructuralPartialEq for Allocation { }
#[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)]
1015pub struct Allocation {
1016 pub bytes: Bytes,
1017 pub provenance: ProvenanceMap,
1018 pub align: Align,
1019 pub mutability: Mutability,
1020}
1021
1022impl Allocation {
1023 pub fn raw_bytes(&self) -> Result<Vec<u8>, Error> {
1025 self.bytes
1026 .iter()
1027 .copied()
1028 .collect::<Option<Vec<_>>>()
1029 .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))
1030 }
1031
1032 pub fn read_partial_uint(&self, range: Range<usize>) -> Result<u128, Error> {
1034 if range.end - range.start > 16 {
1035 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"));
1036 }
1037 if range.end > self.bytes.len() {
1038 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!(
1039 "Range is out of bounds. Allocation length is `{}`, but requested range `{:?}`",
1040 self.bytes.len(),
1041 range
1042 ));
1043 }
1044 let raw = self.bytes[range]
1045 .iter()
1046 .copied()
1047 .collect::<Option<Vec<_>>>()
1048 .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))?;
1049 read_target_uint(&raw)
1050 }
1051
1052 pub fn read_uint(&self) -> Result<u128, Error> {
1054 if self.bytes.len() > 16 {
1055 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"));
1056 }
1057 let raw = self.raw_bytes()?;
1058 read_target_uint(&raw)
1059 }
1060
1061 pub fn read_int(&self) -> Result<i128, Error> {
1063 if self.bytes.len() > 16 {
1064 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"));
1065 }
1066 let raw = self.raw_bytes()?;
1067 read_target_int(&raw)
1068 }
1069
1070 pub fn read_bool(&self) -> Result<bool, Error> {
1072 match self.read_int()? {
1073 0 => Ok(false),
1074 1 => Ok(true),
1075 val => Err(Error(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Unexpected value for bool: `{0}`",
val))
}))error!("Unexpected value for bool: `{val}`")),
1076 }
1077 }
1078
1079 pub fn is_null(&self) -> Result<bool, Error> {
1081 let len = self.bytes.len();
1082 let ptr_len = MachineInfo::target_pointer_width().bytes();
1083 if len != ptr_len {
1084 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}`"));
1085 }
1086 Ok(self.read_uint()? == 0 && self.provenance.ptrs.is_empty())
1087 }
1088}
1089
1090#[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::marker::StructuralPartialEq for ConstantKind { }
#[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)]
1091pub enum ConstantKind {
1092 Ty(TyConst),
1093 Allocated(Allocation),
1094 Unevaluated(UnevaluatedConst),
1095 Param(ParamConst),
1096 ZeroSized,
1099}
1100
1101#[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::marker::StructuralPartialEq for ParamConst { }
#[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)]
1102pub struct ParamConst {
1103 pub index: u32,
1104 pub name: String,
1105}
1106
1107#[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::marker::StructuralPartialEq for UnevaluatedConst { }
#[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)]
1108pub struct UnevaluatedConst {
1109 pub def: ConstDef,
1110 pub args: GenericArgs,
1111 pub promoted: Option<Promoted>,
1112}
1113
1114#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for TraitSpecializationKind { }
#[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::marker::StructuralPartialEq for TraitSpecializationKind { }
#[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)]
1115pub enum TraitSpecializationKind {
1116 None,
1117 Marker,
1118 AlwaysApplicable,
1119}
1120
1121#[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::marker::StructuralPartialEq for TraitDecl { }
#[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)]
1122pub struct TraitDecl {
1123 pub def_id: TraitDef,
1124 pub safety: Safety,
1125 pub paren_sugar: bool,
1126 pub has_auto_impl: bool,
1127 pub is_marker: bool,
1128 pub is_coinductive: bool,
1129 pub skip_array_during_method_dispatch: bool,
1130 pub skip_boxed_slice_during_method_dispatch: bool,
1131 pub specialization_kind: TraitSpecializationKind,
1132 pub must_implement_one_of: Option<Vec<Ident>>,
1133 pub force_dyn_incompatible: Option<Span>,
1134 pub deny_explicit_impl: bool,
1135}
1136
1137impl TraitDecl {
1138 pub fn generics_of(&self) -> Generics {
1139 with(|cx| cx.generics_of(self.def_id.0))
1140 }
1141
1142 pub fn clauses_of(&self) -> GenericClauses {
1143 with(|cx| cx.clauses_of(self.def_id.0))
1144 }
1145
1146 pub fn explicit_clauses_of(&self) -> GenericClauses {
1147 with(|cx| cx.explicit_clauses_of(self.def_id.0))
1148 }
1149}
1150
1151pub type ImplTrait = EarlyBinder<TraitRef>;
1152
1153#[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::marker::StructuralPartialEq for TraitRef { }
#[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)]
1155pub struct TraitRef {
1156 pub def_id: TraitDef,
1157 args: GenericArgs,
1160}
1161
1162impl TraitRef {
1163 pub fn new(def_id: TraitDef, self_ty: Ty, gen_args: &GenericArgs) -> TraitRef {
1164 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)];
1165 args.extend_from_slice(&gen_args.0);
1166 TraitRef { def_id, args: GenericArgs(args) }
1167 }
1168
1169 pub fn try_new(def_id: TraitDef, args: GenericArgs) -> Result<TraitRef, ()> {
1170 match &args.0[..] {
1171 [GenericArgKind::Type(_), ..] => Ok(TraitRef { def_id, args }),
1172 _ => Err(()),
1173 }
1174 }
1175
1176 pub fn args(&self) -> &GenericArgs {
1177 &self.args
1178 }
1179
1180 pub fn self_ty(&self) -> Ty {
1181 let GenericArgKind::Type(self_ty) = self.args.0[0] else {
1182 {
::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])
1183 };
1184 self_ty
1185 }
1186
1187 pub fn vtable_entries(&self) -> Vec<VtblEntry> {
1189 with(|cx| cx.vtable_entries(self))
1190 }
1191
1192 pub fn vtable_entry(&self, idx: usize) -> Option<VtblEntry> {
1196 with(|cx| cx.vtable_entry(self, idx))
1197 }
1198}
1199
1200#[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::marker::StructuralPartialEq for Generics { }
#[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)]
1201pub struct Generics {
1202 pub parent: Option<GenericDef>,
1203 pub parent_count: usize,
1204 pub params: Vec<GenericParamDef>,
1205 pub param_def_id_to_index: Vec<(GenericDef, u32)>,
1206 pub has_self: bool,
1207 pub has_late_bound_regions: Option<Span>,
1208}
1209
1210#[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::marker::StructuralPartialEq for GenericParamDefKind { }
#[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)]
1211pub enum GenericParamDefKind {
1212 Lifetime,
1213 Type { has_default: bool, synthetic: bool },
1214 Const { has_default: bool },
1215}
1216
1217pub struct GenericClauses {
1218 pub parent: Option<TraitDef>,
1219 pub clauses: Vec<(ClauseKind, Span)>,
1220}
1221
1222#[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::marker::StructuralPartialEq for PredicateKind { }
#[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)]
1223pub enum PredicateKind {
1224 Clause(ClauseKind),
1225 DynCompatible(TraitDef),
1226 SubType(SubtypePredicate),
1227 Coerce(CoercePredicate),
1228 ConstEquate(TyConst, TyConst),
1229 Ambiguous,
1230}
1231
1232#[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<TraitClause>;
let _: ::core::cmp::AssertParamIsEq<RegionOutlivesClause>;
let _: ::core::cmp::AssertParamIsEq<TypeOutlivesClause>;
let _: ::core::cmp::AssertParamIsEq<ProjectionClause>;
let _: ::core::cmp::AssertParamIsEq<TyConst>;
let _: ::core::cmp::AssertParamIsEq<Ty>;
let _: ::core::cmp::AssertParamIsEq<TermKind>;
}
}Eq, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for ClauseKind { }
#[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)]
1233pub enum ClauseKind {
1234 Trait(TraitClause),
1235 RegionOutlives(RegionOutlivesClause),
1236 TypeOutlives(TypeOutlivesClause),
1237 Projection(ProjectionClause),
1238 ConstArgHasType(TyConst, Ty),
1239 WellFormed(TermKind),
1240 ConstEvaluatable(TyConst),
1241}
1242
1243#[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::marker::StructuralPartialEq for ClosureKind { }
#[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)]
1244pub enum ClosureKind {
1245 Fn,
1246 FnMut,
1247 FnOnce,
1248}
1249
1250#[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::marker::StructuralPartialEq for SubtypePredicate { }
#[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)]
1251pub struct SubtypePredicate {
1252 pub a: Ty,
1253 pub b: Ty,
1254}
1255
1256#[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::marker::StructuralPartialEq for CoercePredicate { }
#[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)]
1257pub struct CoercePredicate {
1258 pub a: Ty,
1259 pub b: Ty,
1260}
1261
1262#[derive(#[automatically_derived]
impl ::core::clone::Clone for TraitClause {
#[inline]
fn clone(&self) -> TraitClause {
TraitClause {
trait_ref: ::core::clone::Clone::clone(&self.trait_ref),
polarity: ::core::clone::Clone::clone(&self.polarity),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TraitClause {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "TraitClause",
"trait_ref", &self.trait_ref, "polarity", &&self.polarity)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for TraitClause {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TraitRef>;
let _: ::core::cmp::AssertParamIsEq<ClausePolarity>;
}
}Eq, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for TraitClause { }
#[automatically_derived]
impl ::core::cmp::PartialEq for TraitClause {
#[inline]
fn eq(&self, other: &TraitClause) -> 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 TraitClause {
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,
"TraitClause", 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)]
1263pub struct TraitClause {
1264 pub trait_ref: TraitRef,
1265 pub polarity: ClausePolarity,
1266}
1267
1268#[deprecated = "renamed to [`TraitClause`]"]
1269pub type TraitPredicate = TraitClause;
1270
1271#[derive(#[automatically_derived]
impl<A: ::core::clone::Clone, B: ::core::clone::Clone> ::core::clone::Clone
for OutlivesClause<A, B> {
#[inline]
fn clone(&self) -> OutlivesClause<A, B> {
OutlivesClause(::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
OutlivesClause<A, B> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field2_finish(f, "OutlivesClause",
&self.0, &&self.1)
}
}Debug, #[automatically_derived]
impl<A: ::core::cmp::Eq, B: ::core::cmp::Eq> ::core::cmp::Eq for
OutlivesClause<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::marker::StructuralPartialEq for OutlivesClause<A, B> {
}
#[automatically_derived]
impl<A: ::core::cmp::PartialEq, B: ::core::cmp::PartialEq>
::core::cmp::PartialEq for OutlivesClause<A, B> {
#[inline]
fn eq(&self, other: &OutlivesClause<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 OutlivesClause<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,
"OutlivesClause", 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)]
1272pub struct OutlivesClause<A, B>(pub A, pub B);
1273
1274pub type RegionOutlivesClause = OutlivesClause<Region, Region>;
1275pub type TypeOutlivesClause = OutlivesClause<Ty, Region>;
1276
1277#[deprecated = "renamed to [`OutlivesClause`]"]
1278pub type OutlivesPredicate<A, B> = OutlivesClause<A, B>;
1279#[deprecated = "renamed to [`RegionOutlivesClause`]"]
1280pub type RegionOutlivesPredicate = RegionOutlivesClause;
1281#[deprecated = "renamed to [`TypeOutlivesClause`]"]
1282pub type TypeOutlivesPredicate = TypeOutlivesClause;
1283
1284#[derive(#[automatically_derived]
impl ::core::clone::Clone for ProjectionClause {
#[inline]
fn clone(&self) -> ProjectionClause {
ProjectionClause {
projection_term: ::core::clone::Clone::clone(&self.projection_term),
term: ::core::clone::Clone::clone(&self.term),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ProjectionClause {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"ProjectionClause", "projection_term", &self.projection_term,
"term", &&self.term)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ProjectionClause {
#[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::marker::StructuralPartialEq for ProjectionClause { }
#[automatically_derived]
impl ::core::cmp::PartialEq for ProjectionClause {
#[inline]
fn eq(&self, other: &ProjectionClause) -> 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 ProjectionClause {
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,
"ProjectionClause", 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)]
1285pub struct ProjectionClause {
1286 pub projection_term: AliasTerm,
1287 pub term: TermKind,
1288}
1289
1290#[deprecated = "renamed to [`ProjectionClause`]"]
1291pub type ProjectionPredicate = ProjectionClause;
1292
1293#[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::marker::StructuralPartialEq for ImplPolarity { }
#[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)]
1294pub enum ImplPolarity {
1295 Positive,
1296 Negative,
1297 Reservation,
1298}
1299
1300#[derive(#[automatically_derived]
impl ::core::clone::Clone for ClausePolarity {
#[inline]
fn clone(&self) -> ClausePolarity {
match self {
ClausePolarity::Positive => ClausePolarity::Positive,
ClausePolarity::Negative => ClausePolarity::Negative,
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ClausePolarity {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
ClausePolarity::Positive => "Positive",
ClausePolarity::Negative => "Negative",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ClausePolarity {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for ClausePolarity { }
#[automatically_derived]
impl ::core::cmp::PartialEq for ClausePolarity {
#[inline]
fn eq(&self, other: &ClausePolarity) -> 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 ClausePolarity {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
ClausePolarity::Positive =>
_serde::Serializer::serialize_unit_variant(__serializer,
"ClausePolarity", 0u32, "Positive"),
ClausePolarity::Negative =>
_serde::Serializer::serialize_unit_variant(__serializer,
"ClausePolarity", 1u32, "Negative"),
}
}
}
};Serialize)]
1301pub enum ClausePolarity {
1302 Positive,
1303 Negative,
1304}
1305
1306#[deprecated = "renamed to [`ClausePolarity`]"]
1307pub type PredicatePolarity = ClausePolarity;
1308
1309macro_rules! index_impl {
1310 ($name:ident) => {
1311 impl crate::IndexedVal for $name {
1312 fn to_val(index: usize) -> Self {
1313 $name(index, $crate::ThreadLocalIndex)
1314 }
1315 fn to_index(&self) -> usize {
1316 self.0
1317 }
1318 }
1319 $crate::ty::serialize_index_impl!($name);
1320 };
1321}
1322macro_rules! serialize_index_impl {
1323 ($name:ident) => {
1324 impl ::serde::Serialize for $name {
1325 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1326 where
1327 S: ::serde::Serializer,
1328 {
1329 let n: usize = self.0; ::serde::Serialize::serialize(&n, serializer)
1331 }
1332 }
1333 };
1334}
1335pub(crate) use index_impl;
1336pub(crate) use serialize_index_impl;
1337
1338impl 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);
1339impl 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);
1340impl 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);
1341impl 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);
1342
1343#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for VariantIdx { }
#[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::marker::StructuralPartialEq for VariantIdx { }
#[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)]
1357pub struct VariantIdx(usize, ThreadLocalIndex);
1358
1359impl 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);
1360
1361#[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::marker::StructuralPartialEq for AssocItem { }
#[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)]
1362pub struct AssocItem {
1363 pub def_id: AssocDef,
1364 pub kind: AssocKind,
1365 pub container: AssocContainer,
1366}
1367
1368#[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::marker::StructuralPartialEq for AssocTypeData { }
#[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)]
1369pub enum AssocTypeData {
1370 Normal(Symbol),
1371 Rpitit(ImplTraitInTraitData),
1375}
1376
1377#[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::marker::StructuralPartialEq for AssocKind { }
#[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)]
1378pub enum AssocKind {
1379 Const { name: Symbol },
1380 Fn { name: Symbol, has_self: bool },
1381 Type { data: AssocTypeData },
1382}
1383
1384#[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::marker::StructuralPartialEq for AssocContainer { }
#[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)]
1385pub enum AssocContainer {
1386 InherentImpl,
1387 TraitImpl(AssocDef),
1389 Trait,
1390}
1391
1392#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for ImplTraitInTraitData { }
#[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::marker::StructuralPartialEq for ImplTraitInTraitData { }
#[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)]
1393pub enum ImplTraitInTraitData {
1394 Trait { fn_def_id: FnDef, opaque_def_id: OpaqueDef },
1395 Impl { fn_def_id: FnDef },
1396}
1397
1398impl AssocItem {
1399 pub fn is_impl_trait_in_trait(&self) -> bool {
1400 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
AssocKind::Type { data: AssocTypeData::Rpitit(_) } => true,
_ => false,
}matches!(self.kind, AssocKind::Type { data: AssocTypeData::Rpitit(_) })
1401 }
1402}
1403
1404#[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::marker::StructuralPartialEq for VtblEntry { }
#[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)]
1405pub enum VtblEntry {
1406 MetadataDropInPlace,
1408 MetadataSize,
1410 MetadataAlign,
1412 Vacant,
1414 Method(Instance),
1416 TraitVPtr(TraitRef),
1418}