1use std::fmt::{self, Debug};
2use std::num::NonZero;
3use std::ops::RangeInclusive;
4
5use serde::Serialize;
6
7use crate::compiler_interface::with;
8use crate::mir::FieldIdx;
9use crate::target::{MachineInfo, MachineSize as Size};
10use crate::ty::{Align, Ty, VariantIdx, index_impl};
11use crate::{Error, Opaque, ThreadLocalIndex, error};
12
13#[derive(#[automatically_derived]
impl ::core::clone::Clone for FnAbi {
#[inline]
fn clone(&self) -> FnAbi {
FnAbi {
args: ::core::clone::Clone::clone(&self.args),
ret: ::core::clone::Clone::clone(&self.ret),
fixed_count: ::core::clone::Clone::clone(&self.fixed_count),
conv: ::core::clone::Clone::clone(&self.conv),
c_variadic: ::core::clone::Clone::clone(&self.c_variadic),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for FnAbi {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f, "FnAbi", "args",
&self.args, "ret", &self.ret, "fixed_count", &self.fixed_count,
"conv", &self.conv, "c_variadic", &&self.c_variadic)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for FnAbi {
#[inline]
fn eq(&self, other: &FnAbi) -> bool {
self.fixed_count == other.fixed_count &&
self.c_variadic == other.c_variadic &&
self.args == other.args && self.ret == other.ret &&
self.conv == other.conv
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for FnAbi {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Vec<ArgAbi>>;
let _: ::core::cmp::AssertParamIsEq<ArgAbi>;
let _: ::core::cmp::AssertParamIsEq<u32>;
let _: ::core::cmp::AssertParamIsEq<CallConvention>;
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for FnAbi {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.args, state);
::core::hash::Hash::hash(&self.ret, state);
::core::hash::Hash::hash(&self.fixed_count, state);
::core::hash::Hash::hash(&self.conv, state);
::core::hash::Hash::hash(&self.c_variadic, 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 FnAbi {
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, "FnAbi",
false as usize + 1 + 1 + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"args", &self.args)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"ret", &self.ret)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"fixed_count", &self.fixed_count)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"conv", &self.conv)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"c_variadic", &self.c_variadic)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
15pub struct FnAbi {
16 pub args: Vec<ArgAbi>,
18
19 pub ret: ArgAbi,
21
22 pub fixed_count: u32,
26
27 pub conv: CallConvention,
29
30 pub c_variadic: bool,
32}
33
34#[derive(#[automatically_derived]
impl ::core::clone::Clone for ArgAbi {
#[inline]
fn clone(&self) -> ArgAbi {
ArgAbi {
ty: ::core::clone::Clone::clone(&self.ty),
layout: ::core::clone::Clone::clone(&self.layout),
mode: ::core::clone::Clone::clone(&self.mode),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ArgAbi {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "ArgAbi", "ty",
&self.ty, "layout", &self.layout, "mode", &&self.mode)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for ArgAbi {
#[inline]
fn eq(&self, other: &ArgAbi) -> bool {
self.ty == other.ty && self.layout == other.layout &&
self.mode == other.mode
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for ArgAbi {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ty>;
let _: ::core::cmp::AssertParamIsEq<Layout>;
let _: ::core::cmp::AssertParamIsEq<PassMode>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for ArgAbi {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.ty, state);
::core::hash::Hash::hash(&self.layout, state);
::core::hash::Hash::hash(&self.mode, 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 ArgAbi {
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, "ArgAbi",
false as usize + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"ty", &self.ty)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"layout", &self.layout)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"mode", &self.mode)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
36pub struct ArgAbi {
37 pub ty: Ty,
38 pub layout: Layout,
39 pub mode: PassMode,
40}
41
42#[derive(#[automatically_derived]
impl ::core::clone::Clone for PassMode {
#[inline]
fn clone(&self) -> PassMode {
match self {
PassMode::Ignore => PassMode::Ignore,
PassMode::Direct(__self_0) =>
PassMode::Direct(::core::clone::Clone::clone(__self_0)),
PassMode::Pair(__self_0, __self_1) =>
PassMode::Pair(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
PassMode::Cast { pad_i32: __self_0, cast: __self_1 } =>
PassMode::Cast {
pad_i32: ::core::clone::Clone::clone(__self_0),
cast: ::core::clone::Clone::clone(__self_1),
},
PassMode::Indirect {
attrs: __self_0, meta_attrs: __self_1, on_stack: __self_2 } =>
PassMode::Indirect {
attrs: ::core::clone::Clone::clone(__self_0),
meta_attrs: ::core::clone::Clone::clone(__self_1),
on_stack: ::core::clone::Clone::clone(__self_2),
},
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for PassMode {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
PassMode::Ignore =>
::core::fmt::Formatter::write_str(f, "Ignore"),
PassMode::Direct(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Direct",
&__self_0),
PassMode::Pair(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Pair",
__self_0, &__self_1),
PassMode::Cast { pad_i32: __self_0, cast: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "Cast",
"pad_i32", __self_0, "cast", &__self_1),
PassMode::Indirect {
attrs: __self_0, meta_attrs: __self_1, on_stack: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"Indirect", "attrs", __self_0, "meta_attrs", __self_1,
"on_stack", &__self_2),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for PassMode {
#[inline]
fn eq(&self, other: &PassMode) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(PassMode::Direct(__self_0), PassMode::Direct(__arg1_0)) =>
__self_0 == __arg1_0,
(PassMode::Pair(__self_0, __self_1),
PassMode::Pair(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(PassMode::Cast { pad_i32: __self_0, cast: __self_1 },
PassMode::Cast { pad_i32: __arg1_0, cast: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(PassMode::Indirect {
attrs: __self_0, meta_attrs: __self_1, on_stack: __self_2 },
PassMode::Indirect {
attrs: __arg1_0, meta_attrs: __arg1_1, on_stack: __arg1_2 })
=>
__self_2 == __arg1_2 && __self_0 == __arg1_0 &&
__self_1 == __arg1_1,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for PassMode {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Opaque>;
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for PassMode {
#[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 {
PassMode::Direct(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
PassMode::Pair(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
PassMode::Cast { pad_i32: __self_0, cast: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
PassMode::Indirect {
attrs: __self_0, meta_attrs: __self_1, on_stack: __self_2 } =>
{
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, 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 PassMode {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
PassMode::Ignore =>
_serde::Serializer::serialize_unit_variant(__serializer,
"PassMode", 0u32, "Ignore"),
PassMode::Direct(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"PassMode", 1u32, "Direct", __field0),
PassMode::Pair(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"PassMode", 2u32, "Pair", 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)
}
PassMode::Cast { ref pad_i32, ref cast } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"PassMode", 3u32, "Cast", 0 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"pad_i32", pad_i32)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"cast", cast)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
PassMode::Indirect { ref attrs, ref meta_attrs, ref on_stack
} => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"PassMode", 4u32, "Indirect", 0 + 1 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"attrs", attrs)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"meta_attrs", meta_attrs)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"on_stack", on_stack)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
}
}
}
};Serialize)]
44pub enum PassMode {
45 Ignore,
49 Direct(Opaque),
53 Pair(Opaque, Opaque),
57 Cast { pad_i32: bool, cast: Opaque },
59 Indirect { attrs: Opaque, meta_attrs: Opaque, on_stack: bool },
61}
62
63#[derive(#[automatically_derived]
impl ::core::marker::Copy for TyAndLayout { }Copy, #[automatically_derived]
impl ::core::clone::Clone for TyAndLayout {
#[inline]
fn clone(&self) -> TyAndLayout {
let _: ::core::clone::AssertParamIsClone<Ty>;
let _: ::core::clone::AssertParamIsClone<Layout>;
*self
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TyAndLayout {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "TyAndLayout",
"ty", &self.ty, "layout", &&self.layout)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for TyAndLayout {
#[inline]
fn eq(&self, other: &TyAndLayout) -> bool {
self.ty == other.ty && self.layout == other.layout
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for TyAndLayout {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ty>;
let _: ::core::cmp::AssertParamIsEq<Layout>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for TyAndLayout {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.ty, state);
::core::hash::Hash::hash(&self.layout, 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 TyAndLayout {
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,
"TyAndLayout", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"ty", &self.ty)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"layout", &self.layout)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
65pub struct TyAndLayout {
66 pub ty: Ty,
67 pub layout: Layout,
68}
69
70#[derive(#[automatically_derived]
impl ::core::clone::Clone for LayoutShape {
#[inline]
fn clone(&self) -> LayoutShape {
LayoutShape {
fields: ::core::clone::Clone::clone(&self.fields),
variants: ::core::clone::Clone::clone(&self.variants),
abi: ::core::clone::Clone::clone(&self.abi),
abi_align: ::core::clone::Clone::clone(&self.abi_align),
size: ::core::clone::Clone::clone(&self.size),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for LayoutShape {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f, "LayoutShape",
"fields", &self.fields, "variants", &self.variants, "abi",
&self.abi, "abi_align", &self.abi_align, "size", &&self.size)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for LayoutShape {
#[inline]
fn eq(&self, other: &LayoutShape) -> bool {
self.fields == other.fields && self.variants == other.variants &&
self.abi == other.abi && self.abi_align == other.abi_align
&& self.size == other.size
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for LayoutShape {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<FieldsShape>;
let _: ::core::cmp::AssertParamIsEq<VariantsShape>;
let _: ::core::cmp::AssertParamIsEq<ValueAbi>;
let _: ::core::cmp::AssertParamIsEq<Align>;
let _: ::core::cmp::AssertParamIsEq<Size>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for LayoutShape {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.fields, state);
::core::hash::Hash::hash(&self.variants, state);
::core::hash::Hash::hash(&self.abi, state);
::core::hash::Hash::hash(&self.abi_align, state);
::core::hash::Hash::hash(&self.size, 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 LayoutShape {
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,
"LayoutShape", false as usize + 1 + 1 + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"fields", &self.fields)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"variants", &self.variants)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"abi", &self.abi)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"abi_align", &self.abi_align)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"size", &self.size)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
72pub struct LayoutShape {
73 pub fields: FieldsShape,
75
76 pub variants: VariantsShape,
83
84 pub abi: ValueAbi,
86
87 pub abi_align: Align,
89
90 pub size: Size,
92}
93
94impl LayoutShape {
95 #[inline]
97 pub fn is_unsized(&self) -> bool {
98 self.abi.is_unsized()
99 }
100
101 #[inline]
102 pub fn is_sized(&self) -> bool {
103 !self.abi.is_unsized()
104 }
105
106 pub fn is_1zst(&self) -> bool {
108 self.is_sized() && self.size.bits() == 0 && self.abi_align == 1
109 }
110}
111
112#[derive(#[automatically_derived]
impl ::core::marker::Copy for Layout { }Copy, #[automatically_derived]
impl ::core::clone::Clone for Layout {
#[inline]
fn clone(&self) -> Layout {
let _: ::core::clone::AssertParamIsClone<usize>;
let _: ::core::clone::AssertParamIsClone<ThreadLocalIndex>;
*self
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for Layout {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Layout",
&self.0, &&self.1)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for Layout {
#[inline]
fn eq(&self, other: &Layout) -> bool {
self.0 == other.0 && self.1 == other.1
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Layout {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<usize>;
let _: ::core::cmp::AssertParamIsEq<ThreadLocalIndex>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for Layout {
#[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)]
113pub struct Layout(usize, ThreadLocalIndex);
114impl crate::IndexedVal for Layout {
fn to_val(index: usize) -> Self { Layout(index, crate::ThreadLocalIndex) }
fn to_index(&self) -> usize { self.0 }
}
impl ::serde::Serialize for Layout {
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!(Layout);
115
116impl Layout {
117 pub fn shape(self) -> LayoutShape {
118 with(|cx| cx.layout_shape(self))
119 }
120}
121
122#[derive(#[automatically_derived]
impl ::core::clone::Clone for FieldsShape {
#[inline]
fn clone(&self) -> FieldsShape {
match self {
FieldsShape::Primitive => FieldsShape::Primitive,
FieldsShape::Union(__self_0) =>
FieldsShape::Union(::core::clone::Clone::clone(__self_0)),
FieldsShape::Array { stride: __self_0, count: __self_1 } =>
FieldsShape::Array {
stride: ::core::clone::Clone::clone(__self_0),
count: ::core::clone::Clone::clone(__self_1),
},
FieldsShape::Arbitrary { offsets: __self_0 } =>
FieldsShape::Arbitrary {
offsets: ::core::clone::Clone::clone(__self_0),
},
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for FieldsShape {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
FieldsShape::Primitive =>
::core::fmt::Formatter::write_str(f, "Primitive"),
FieldsShape::Union(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Union",
&__self_0),
FieldsShape::Array { stride: __self_0, count: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "Array",
"stride", __self_0, "count", &__self_1),
FieldsShape::Arbitrary { offsets: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Arbitrary", "offsets", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for FieldsShape {
#[inline]
fn eq(&self, other: &FieldsShape) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(FieldsShape::Union(__self_0), FieldsShape::Union(__arg1_0))
=> __self_0 == __arg1_0,
(FieldsShape::Array { stride: __self_0, count: __self_1 },
FieldsShape::Array { stride: __arg1_0, count: __arg1_1 }) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0,
(FieldsShape::Arbitrary { offsets: __self_0 },
FieldsShape::Arbitrary { offsets: __arg1_0 }) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for FieldsShape {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<NonZero<usize>>;
let _: ::core::cmp::AssertParamIsEq<Size>;
let _: ::core::cmp::AssertParamIsEq<u64>;
let _: ::core::cmp::AssertParamIsEq<Vec<Size>>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for FieldsShape {
#[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 {
FieldsShape::Union(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
FieldsShape::Array { stride: __self_0, count: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
FieldsShape::Arbitrary { offsets: __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 FieldsShape {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
FieldsShape::Primitive =>
_serde::Serializer::serialize_unit_variant(__serializer,
"FieldsShape", 0u32, "Primitive"),
FieldsShape::Union(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"FieldsShape", 1u32, "Union", __field0),
FieldsShape::Array { ref stride, ref count } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"FieldsShape", 2u32, "Array", 0 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"stride", stride)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"count", count)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
FieldsShape::Arbitrary { ref offsets } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"FieldsShape", 3u32, "Arbitrary", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"offsets", offsets)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
}
}
}
};Serialize)]
124pub enum FieldsShape {
125 Primitive,
127
128 Union(NonZero<usize>),
130
131 Array { stride: Size, count: u64 },
133
134 Arbitrary {
142 offsets: Vec<Size>,
147 },
148}
149
150impl FieldsShape {
151 pub fn fields_by_offset_order(&self) -> Vec<FieldIdx> {
152 match self {
153 FieldsShape::Primitive => ::alloc::vec::Vec::new()vec![],
154 FieldsShape::Union(_) | FieldsShape::Array { .. } => (0..self.count()).collect(),
155 FieldsShape::Arbitrary { offsets, .. } => {
156 let mut indices = (0..offsets.len()).collect::<Vec<_>>();
157 indices.sort_by_key(|idx| offsets[*idx]);
158 indices
159 }
160 }
161 }
162
163 pub fn count(&self) -> usize {
164 match self {
165 FieldsShape::Primitive => 0,
166 FieldsShape::Union(count) => count.get(),
167 FieldsShape::Array { count, .. } => *count as usize,
168 FieldsShape::Arbitrary { offsets, .. } => offsets.len(),
169 }
170 }
171}
172
173#[derive(#[automatically_derived]
impl ::core::clone::Clone for VariantsShape {
#[inline]
fn clone(&self) -> VariantsShape {
match self {
VariantsShape::Empty => VariantsShape::Empty,
VariantsShape::Single { index: __self_0 } =>
VariantsShape::Single {
index: ::core::clone::Clone::clone(__self_0),
},
VariantsShape::Multiple {
tag: __self_0,
tag_encoding: __self_1,
tag_field: __self_2,
variants: __self_3 } =>
VariantsShape::Multiple {
tag: ::core::clone::Clone::clone(__self_0),
tag_encoding: ::core::clone::Clone::clone(__self_1),
tag_field: ::core::clone::Clone::clone(__self_2),
variants: ::core::clone::Clone::clone(__self_3),
},
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for VariantsShape {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
VariantsShape::Empty =>
::core::fmt::Formatter::write_str(f, "Empty"),
VariantsShape::Single { index: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Single", "index", &__self_0),
VariantsShape::Multiple {
tag: __self_0,
tag_encoding: __self_1,
tag_field: __self_2,
variants: __self_3 } =>
::core::fmt::Formatter::debug_struct_field4_finish(f,
"Multiple", "tag", __self_0, "tag_encoding", __self_1,
"tag_field", __self_2, "variants", &__self_3),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for VariantsShape {
#[inline]
fn eq(&self, other: &VariantsShape) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(VariantsShape::Single { index: __self_0 },
VariantsShape::Single { index: __arg1_0 }) =>
__self_0 == __arg1_0,
(VariantsShape::Multiple {
tag: __self_0,
tag_encoding: __self_1,
tag_field: __self_2,
variants: __self_3 }, VariantsShape::Multiple {
tag: __arg1_0,
tag_encoding: __arg1_1,
tag_field: __arg1_2,
variants: __arg1_3 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for VariantsShape {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<VariantIdx>;
let _: ::core::cmp::AssertParamIsEq<Scalar>;
let _: ::core::cmp::AssertParamIsEq<TagEncoding>;
let _: ::core::cmp::AssertParamIsEq<usize>;
let _: ::core::cmp::AssertParamIsEq<Vec<VariantFields>>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for VariantsShape {
#[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 {
VariantsShape::Single { index: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
VariantsShape::Multiple {
tag: __self_0,
tag_encoding: __self_1,
tag_field: __self_2,
variants: __self_3 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, 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 VariantsShape {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
VariantsShape::Empty =>
_serde::Serializer::serialize_unit_variant(__serializer,
"VariantsShape", 0u32, "Empty"),
VariantsShape::Single { ref index } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"VariantsShape", 1u32, "Single", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"index", index)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
VariantsShape::Multiple {
ref tag, ref tag_encoding, ref tag_field, ref variants } =>
{
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"VariantsShape", 2u32, "Multiple", 0 + 1 + 1 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"tag", tag)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"tag_encoding", tag_encoding)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"tag_field", tag_field)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"variants", variants)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
}
}
}
};Serialize)]
174pub enum VariantsShape {
175 Empty,
177
178 Single { index: VariantIdx },
180
181 Multiple {
188 tag: Scalar,
189 tag_encoding: TagEncoding,
190 tag_field: usize,
191 variants: Vec<VariantFields>,
192 },
193}
194
195#[derive(#[automatically_derived]
impl ::core::clone::Clone for VariantFields {
#[inline]
fn clone(&self) -> VariantFields {
VariantFields { offsets: ::core::clone::Clone::clone(&self.offsets) }
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for VariantFields {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "VariantFields",
"offsets", &&self.offsets)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for VariantFields {
#[inline]
fn eq(&self, other: &VariantFields) -> bool {
self.offsets == other.offsets
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for VariantFields {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Vec<Size>>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for VariantFields {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.offsets, 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 VariantFields {
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,
"VariantFields", false as usize + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"offsets", &self.offsets)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
196pub struct VariantFields {
197 pub offsets: Vec<Size>,
202}
203
204impl VariantFields {
205 pub fn fields_by_offset_order(&self) -> Vec<FieldIdx> {
206 let mut indices = (0..self.offsets.len()).collect::<Vec<_>>();
207 indices.sort_by_key(|idx| self.offsets[*idx]);
208 indices
209 }
210}
211
212#[derive(#[automatically_derived]
impl ::core::clone::Clone for TagEncoding {
#[inline]
fn clone(&self) -> TagEncoding {
match self {
TagEncoding::Direct => TagEncoding::Direct,
TagEncoding::Niche {
untagged_variant: __self_0,
niche_variants: __self_1,
niche_start: __self_2 } =>
TagEncoding::Niche {
untagged_variant: ::core::clone::Clone::clone(__self_0),
niche_variants: ::core::clone::Clone::clone(__self_1),
niche_start: ::core::clone::Clone::clone(__self_2),
},
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TagEncoding {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
TagEncoding::Direct =>
::core::fmt::Formatter::write_str(f, "Direct"),
TagEncoding::Niche {
untagged_variant: __self_0,
niche_variants: __self_1,
niche_start: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f, "Niche",
"untagged_variant", __self_0, "niche_variants", __self_1,
"niche_start", &__self_2),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for TagEncoding {
#[inline]
fn eq(&self, other: &TagEncoding) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(TagEncoding::Niche {
untagged_variant: __self_0,
niche_variants: __self_1,
niche_start: __self_2 }, TagEncoding::Niche {
untagged_variant: __arg1_0,
niche_variants: __arg1_1,
niche_start: __arg1_2 }) =>
__self_2 == __arg1_2 && __self_0 == __arg1_0 &&
__self_1 == __arg1_1,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for TagEncoding {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<VariantIdx>;
let _: ::core::cmp::AssertParamIsEq<RangeInclusive<VariantIdx>>;
let _: ::core::cmp::AssertParamIsEq<u128>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for TagEncoding {
#[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 {
TagEncoding::Niche {
untagged_variant: __self_0,
niche_variants: __self_1,
niche_start: __self_2 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, 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 TagEncoding {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
TagEncoding::Direct =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TagEncoding", 0u32, "Direct"),
TagEncoding::Niche {
ref untagged_variant, ref niche_variants, ref niche_start }
=> {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"TagEncoding", 1u32, "Niche", 0 + 1 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"untagged_variant", untagged_variant)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"niche_variants", niche_variants)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"niche_start", niche_start)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
}
}
}
};Serialize)]
213pub enum TagEncoding {
214 Direct,
217
218 Niche {
229 untagged_variant: VariantIdx,
230 niche_variants: RangeInclusive<VariantIdx>,
231 niche_start: u128,
232 },
233}
234
235#[derive(#[automatically_derived]
impl ::core::clone::Clone for ValueAbi {
#[inline]
fn clone(&self) -> ValueAbi {
match self {
ValueAbi::Scalar(__self_0) =>
ValueAbi::Scalar(::core::clone::Clone::clone(__self_0)),
ValueAbi::ScalarPair(__self_0, __self_1) =>
ValueAbi::ScalarPair(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ValueAbi::Vector { element: __self_0, count: __self_1 } =>
ValueAbi::Vector {
element: ::core::clone::Clone::clone(__self_0),
count: ::core::clone::Clone::clone(__self_1),
},
ValueAbi::ScalableVector { element: __self_0, count: __self_1 } =>
ValueAbi::ScalableVector {
element: ::core::clone::Clone::clone(__self_0),
count: ::core::clone::Clone::clone(__self_1),
},
ValueAbi::Aggregate { sized: __self_0 } =>
ValueAbi::Aggregate {
sized: ::core::clone::Clone::clone(__self_0),
},
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ValueAbi {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ValueAbi::Scalar(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Scalar",
&__self_0),
ValueAbi::ScalarPair(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"ScalarPair", __self_0, &__self_1),
ValueAbi::Vector { element: __self_0, count: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"Vector", "element", __self_0, "count", &__self_1),
ValueAbi::ScalableVector { element: __self_0, count: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"ScalableVector", "element", __self_0, "count", &__self_1),
ValueAbi::Aggregate { sized: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Aggregate", "sized", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for ValueAbi {
#[inline]
fn eq(&self, other: &ValueAbi) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ValueAbi::Scalar(__self_0), ValueAbi::Scalar(__arg1_0)) =>
__self_0 == __arg1_0,
(ValueAbi::ScalarPair(__self_0, __self_1),
ValueAbi::ScalarPair(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(ValueAbi::Vector { element: __self_0, count: __self_1 },
ValueAbi::Vector { element: __arg1_0, count: __arg1_1 }) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0,
(ValueAbi::ScalableVector { element: __self_0, count: __self_1
}, ValueAbi::ScalableVector {
element: __arg1_0, count: __arg1_1 }) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0,
(ValueAbi::Aggregate { sized: __self_0 },
ValueAbi::Aggregate { sized: __arg1_0 }) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for ValueAbi {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Scalar>;
let _: ::core::cmp::AssertParamIsEq<u64>;
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for ValueAbi {
#[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 {
ValueAbi::Scalar(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
ValueAbi::ScalarPair(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
ValueAbi::Vector { element: __self_0, count: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
ValueAbi::ScalableVector { element: __self_0, count: __self_1 } =>
{
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
ValueAbi::Aggregate { sized: __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 ValueAbi {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
ValueAbi::Scalar(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"ValueAbi", 0u32, "Scalar", __field0),
ValueAbi::ScalarPair(ref __field0, ref __field1) => {
let mut __serde_state =
_serde::Serializer::serialize_tuple_variant(__serializer,
"ValueAbi", 1u32, "ScalarPair", 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)
}
ValueAbi::Vector { ref element, ref count } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"ValueAbi", 2u32, "Vector", 0 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"element", element)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"count", count)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
ValueAbi::ScalableVector { ref element, ref count } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"ValueAbi", 3u32, "ScalableVector", 0 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"element", element)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"count", count)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
ValueAbi::Aggregate { ref sized } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"ValueAbi", 4u32, "Aggregate", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"sized", sized)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
}
}
}
};Serialize)]
238pub enum ValueAbi {
239 Scalar(Scalar),
240 ScalarPair(Scalar, Scalar),
241 Vector {
242 element: Scalar,
243 count: u64,
244 },
245 ScalableVector {
246 element: Scalar,
247 count: u64,
248 },
249 Aggregate {
250 sized: bool,
252 },
253}
254
255impl ValueAbi {
256 pub fn is_unsized(&self) -> bool {
258 match *self {
259 ValueAbi::Scalar(_)
260 | ValueAbi::ScalarPair(..)
261 | ValueAbi::Vector { .. }
262 | ValueAbi::ScalableVector { .. } => false,
268 ValueAbi::Aggregate { sized } => !sized,
269 }
270 }
271}
272
273#[derive(#[automatically_derived]
impl ::core::clone::Clone for Scalar {
#[inline]
fn clone(&self) -> Scalar {
let _: ::core::clone::AssertParamIsClone<Primitive>;
let _: ::core::clone::AssertParamIsClone<WrappingRange>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Scalar { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for Scalar {
#[inline]
fn eq(&self, other: &Scalar) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(Scalar::Initialized { value: __self_0, valid_range: __self_1
}, Scalar::Initialized {
value: __arg1_0, valid_range: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Scalar::Union { value: __self_0 }, Scalar::Union {
value: __arg1_0 }) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Scalar {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Primitive>;
let _: ::core::cmp::AssertParamIsEq<WrappingRange>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for Scalar {
#[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 {
Scalar::Initialized { value: __self_0, valid_range: __self_1 } =>
{
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
Scalar::Union { value: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash, #[automatically_derived]
impl ::core::fmt::Debug for Scalar {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Scalar::Initialized { value: __self_0, valid_range: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"Initialized", "value", __self_0, "valid_range", &__self_1),
Scalar::Union { value: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Union",
"value", &__self_0),
}
}
}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 Scalar {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
Scalar::Initialized { ref value, ref valid_range } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Scalar", 0u32, "Initialized", 0 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"value", value)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"valid_range", valid_range)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
Scalar::Union { ref value } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Scalar", 1u32, "Union", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"value", value)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
}
}
}
};Serialize)]
275pub enum Scalar {
276 Initialized {
277 value: Primitive,
279 valid_range: WrappingRange,
282 },
283 Union {
284 value: Primitive,
289 },
290}
291
292impl Scalar {
293 pub fn has_niche(&self, target: &MachineInfo) -> bool {
294 match self {
295 Scalar::Initialized { value, valid_range } => {
296 !valid_range.is_full(value.size(target)).unwrap()
297 }
298 Scalar::Union { .. } => false,
299 }
300 }
301}
302
303#[derive(#[automatically_derived]
impl ::core::marker::Copy for Primitive { }Copy, #[automatically_derived]
impl ::core::clone::Clone for Primitive {
#[inline]
fn clone(&self) -> Primitive {
let _: ::core::clone::AssertParamIsClone<IntegerLength>;
let _: ::core::clone::AssertParamIsClone<bool>;
let _: ::core::clone::AssertParamIsClone<FloatLength>;
let _: ::core::clone::AssertParamIsClone<AddressSpace>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Primitive {
#[inline]
fn eq(&self, other: &Primitive) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(Primitive::Int { length: __self_0, signed: __self_1 },
Primitive::Int { length: __arg1_0, signed: __arg1_1 }) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0,
(Primitive::Float { length: __self_0 }, Primitive::Float {
length: __arg1_0 }) => __self_0 == __arg1_0,
(Primitive::Pointer(__self_0), Primitive::Pointer(__arg1_0))
=> __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Primitive {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<IntegerLength>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<FloatLength>;
let _: ::core::cmp::AssertParamIsEq<AddressSpace>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for Primitive {
#[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 {
Primitive::Int { length: __self_0, signed: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
Primitive::Float { length: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
Primitive::Pointer(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash, #[automatically_derived]
impl ::core::fmt::Debug for Primitive {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Primitive::Int { length: __self_0, signed: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "Int",
"length", __self_0, "signed", &__self_1),
Primitive::Float { length: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Float",
"length", &__self_0),
Primitive::Pointer(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Pointer", &__self_0),
}
}
}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 Primitive {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
Primitive::Int { ref length, ref signed } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Primitive", 0u32, "Int", 0 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"length", length)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"signed", signed)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
Primitive::Float { ref length } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"Primitive", 1u32, "Float", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"length", length)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
Primitive::Pointer(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"Primitive", 2u32, "Pointer", __field0),
}
}
}
};Serialize)]
305pub enum Primitive {
306 Int {
314 length: IntegerLength,
315 signed: bool,
316 },
317 Float {
318 length: FloatLength,
319 },
320 Pointer(AddressSpace),
321}
322
323impl Primitive {
324 pub fn size(self, target: &MachineInfo) -> Size {
325 match self {
326 Primitive::Int { length, .. } => Size::from_bits(length.bits()),
327 Primitive::Float { length } => Size::from_bits(length.bits()),
328 Primitive::Pointer(_) => target.pointer_width,
329 }
330 }
331}
332
333#[derive(#[automatically_derived]
impl ::core::marker::Copy for IntegerLength { }Copy, #[automatically_derived]
impl ::core::clone::Clone for IntegerLength {
#[inline]
fn clone(&self) -> IntegerLength { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for IntegerLength {
#[inline]
fn eq(&self, other: &IntegerLength) -> 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 IntegerLength {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for IntegerLength {
#[inline]
fn partial_cmp(&self, other: &IntegerLength)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for IntegerLength {
#[inline]
fn cmp(&self, other: &IntegerLength) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for IntegerLength {
#[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, #[automatically_derived]
impl ::core::fmt::Debug for IntegerLength {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
IntegerLength::I8 => "I8",
IntegerLength::I16 => "I16",
IntegerLength::I32 => "I32",
IntegerLength::I64 => "I64",
IntegerLength::I128 => "I128",
})
}
}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 IntegerLength {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
IntegerLength::I8 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"IntegerLength", 0u32, "I8"),
IntegerLength::I16 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"IntegerLength", 1u32, "I16"),
IntegerLength::I32 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"IntegerLength", 2u32, "I32"),
IntegerLength::I64 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"IntegerLength", 3u32, "I64"),
IntegerLength::I128 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"IntegerLength", 4u32, "I128"),
}
}
}
};Serialize)]
335pub enum IntegerLength {
336 I8,
337 I16,
338 I32,
339 I64,
340 I128,
341}
342
343#[derive(#[automatically_derived]
impl ::core::marker::Copy for FloatLength { }Copy, #[automatically_derived]
impl ::core::clone::Clone for FloatLength {
#[inline]
fn clone(&self) -> FloatLength { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for FloatLength {
#[inline]
fn eq(&self, other: &FloatLength) -> 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 FloatLength {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for FloatLength {
#[inline]
fn partial_cmp(&self, other: &FloatLength)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for FloatLength {
#[inline]
fn cmp(&self, other: &FloatLength) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for FloatLength {
#[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, #[automatically_derived]
impl ::core::fmt::Debug for FloatLength {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
FloatLength::F16 => "F16",
FloatLength::F32 => "F32",
FloatLength::F64 => "F64",
FloatLength::F128 => "F128",
})
}
}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 FloatLength {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
FloatLength::F16 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"FloatLength", 0u32, "F16"),
FloatLength::F32 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"FloatLength", 1u32, "F32"),
FloatLength::F64 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"FloatLength", 2u32, "F64"),
FloatLength::F128 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"FloatLength", 3u32, "F128"),
}
}
}
};Serialize)]
345pub enum FloatLength {
346 F16,
347 F32,
348 F64,
349 F128,
350}
351
352impl IntegerLength {
353 pub fn bits(self) -> usize {
354 match self {
355 IntegerLength::I8 => 8,
356 IntegerLength::I16 => 16,
357 IntegerLength::I32 => 32,
358 IntegerLength::I64 => 64,
359 IntegerLength::I128 => 128,
360 }
361 }
362}
363
364impl FloatLength {
365 pub fn bits(self) -> usize {
366 match self {
367 FloatLength::F16 => 16,
368 FloatLength::F32 => 32,
369 FloatLength::F64 => 64,
370 FloatLength::F128 => 128,
371 }
372 }
373}
374
375#[derive(#[automatically_derived]
impl ::core::marker::Copy for AddressSpace { }Copy, #[automatically_derived]
impl ::core::clone::Clone for AddressSpace {
#[inline]
fn clone(&self) -> AddressSpace {
let _: ::core::clone::AssertParamIsClone<u32>;
*self
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for AddressSpace {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "AddressSpace",
&&self.0)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for AddressSpace {
#[inline]
fn eq(&self, other: &AddressSpace) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for AddressSpace {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u32>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for AddressSpace {
#[inline]
fn partial_cmp(&self, other: &AddressSpace)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for AddressSpace {
#[inline]
fn cmp(&self, other: &AddressSpace) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for AddressSpace {
#[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 AddressSpace {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
_serde::Serializer::serialize_newtype_struct(__serializer,
"AddressSpace", &self.0)
}
}
};Serialize)]
379pub struct AddressSpace(pub u32);
380
381impl AddressSpace {
382 pub const DATA: Self = AddressSpace(0);
384}
385
386#[derive(#[automatically_derived]
impl ::core::clone::Clone for WrappingRange {
#[inline]
fn clone(&self) -> WrappingRange {
let _: ::core::clone::AssertParamIsClone<u128>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for WrappingRange { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for WrappingRange {
#[inline]
fn eq(&self, other: &WrappingRange) -> bool {
self.start == other.start && self.end == other.end
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for WrappingRange {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u128>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for WrappingRange {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.start, state);
::core::hash::Hash::hash(&self.end, 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 WrappingRange {
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,
"WrappingRange", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"start", &self.start)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"end", &self.end)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
394pub struct WrappingRange {
395 pub start: u128,
396 pub end: u128,
397}
398
399impl WrappingRange {
400 #[inline]
402 pub fn is_full(&self, size: Size) -> Result<bool, Error> {
403 let Some(max_value) = size.unsigned_int_max() else {
404 return Err(Error(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Expected size <= 128 bits, but found {0} instead",
size.bits()))
}))error!("Expected size <= 128 bits, but found {} instead", size.bits()));
405 };
406 if self.start <= max_value && self.end <= max_value {
407 Ok(self.start == (self.end.wrapping_add(1) & max_value))
408 } else {
409 Err(Error(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Range `{1:?}` out of bounds for size `{0}` bits.",
size.bits(), self))
}))error!("Range `{self:?}` out of bounds for size `{}` bits.", size.bits()))
410 }
411 }
412
413 #[inline(always)]
415 pub fn contains(&self, v: u128) -> bool {
416 if self.wraps_around() {
417 self.start <= v || v <= self.end
418 } else {
419 self.start <= v && v <= self.end
420 }
421 }
422
423 #[inline]
427 pub fn wraps_around(&self) -> bool {
428 self.start > self.end
429 }
430}
431
432impl Debug for WrappingRange {
433 fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
434 if self.start > self.end {
435 fmt.write_fmt(format_args!("(..={0}) | ({1}..)", self.end, self.start))write!(fmt, "(..={}) | ({}..)", self.end, self.start)?;
436 } else {
437 fmt.write_fmt(format_args!("{0}..={1}", self.start, self.end))write!(fmt, "{}..={}", self.start, self.end)?;
438 }
439 Ok(())
440 }
441}
442
443#[derive(#[automatically_derived]
impl ::core::marker::Copy for CallConvention { }Copy, #[automatically_derived]
impl ::core::clone::Clone for CallConvention {
#[inline]
fn clone(&self) -> CallConvention { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for CallConvention {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
CallConvention::C => "C",
CallConvention::Rust => "Rust",
CallConvention::Cold => "Cold",
CallConvention::PreserveMost => "PreserveMost",
CallConvention::PreserveAll => "PreserveAll",
CallConvention::PreserveNone => "PreserveNone",
CallConvention::Custom => "Custom",
CallConvention::ArmAapcs => "ArmAapcs",
CallConvention::CCmseNonSecureCall => "CCmseNonSecureCall",
CallConvention::CCmseNonSecureEntry => "CCmseNonSecureEntry",
CallConvention::Msp430Intr => "Msp430Intr",
CallConvention::PtxKernel => "PtxKernel",
CallConvention::GpuKernel => "GpuKernel",
CallConvention::X86Fastcall => "X86Fastcall",
CallConvention::X86Intr => "X86Intr",
CallConvention::X86Stdcall => "X86Stdcall",
CallConvention::X86ThisCall => "X86ThisCall",
CallConvention::X86VectorCall => "X86VectorCall",
CallConvention::X86_64SysV => "X86_64SysV",
CallConvention::X86_64Win64 => "X86_64Win64",
CallConvention::AvrInterrupt => "AvrInterrupt",
CallConvention::AvrNonBlockingInterrupt =>
"AvrNonBlockingInterrupt",
CallConvention::RiscvInterrupt => "RiscvInterrupt",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for CallConvention {
#[inline]
fn eq(&self, other: &CallConvention) -> 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 CallConvention {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for CallConvention {
#[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 CallConvention {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
CallConvention::C =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 0u32, "C"),
CallConvention::Rust =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 1u32, "Rust"),
CallConvention::Cold =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 2u32, "Cold"),
CallConvention::PreserveMost =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 3u32, "PreserveMost"),
CallConvention::PreserveAll =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 4u32, "PreserveAll"),
CallConvention::PreserveNone =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 5u32, "PreserveNone"),
CallConvention::Custom =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 6u32, "Custom"),
CallConvention::ArmAapcs =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 7u32, "ArmAapcs"),
CallConvention::CCmseNonSecureCall =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 8u32, "CCmseNonSecureCall"),
CallConvention::CCmseNonSecureEntry =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 9u32, "CCmseNonSecureEntry"),
CallConvention::Msp430Intr =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 10u32, "Msp430Intr"),
CallConvention::PtxKernel =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 11u32, "PtxKernel"),
CallConvention::GpuKernel =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 12u32, "GpuKernel"),
CallConvention::X86Fastcall =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 13u32, "X86Fastcall"),
CallConvention::X86Intr =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 14u32, "X86Intr"),
CallConvention::X86Stdcall =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 15u32, "X86Stdcall"),
CallConvention::X86ThisCall =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 16u32, "X86ThisCall"),
CallConvention::X86VectorCall =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 17u32, "X86VectorCall"),
CallConvention::X86_64SysV =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 18u32, "X86_64SysV"),
CallConvention::X86_64Win64 =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 19u32, "X86_64Win64"),
CallConvention::AvrInterrupt =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 20u32, "AvrInterrupt"),
CallConvention::AvrNonBlockingInterrupt =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 21u32, "AvrNonBlockingInterrupt"),
CallConvention::RiscvInterrupt =>
_serde::Serializer::serialize_unit_variant(__serializer,
"CallConvention", 22u32, "RiscvInterrupt"),
}
}
}
};Serialize)]
445pub enum CallConvention {
446 C,
447 Rust,
448
449 Cold,
450 PreserveMost,
451 PreserveAll,
452 PreserveNone,
453
454 Custom,
455
456 ArmAapcs,
458 CCmseNonSecureCall,
459 CCmseNonSecureEntry,
460
461 Msp430Intr,
462
463 PtxKernel,
464
465 GpuKernel,
466
467 X86Fastcall,
468 X86Intr,
469 X86Stdcall,
470 X86ThisCall,
471 X86VectorCall,
472
473 X86_64SysV,
474 X86_64Win64,
475
476 AvrInterrupt,
477 AvrNonBlockingInterrupt,
478
479 RiscvInterrupt,
480}
481
482#[non_exhaustive]
483#[derive(#[automatically_derived]
impl ::core::marker::Copy for ReprFlags { }Copy, #[automatically_derived]
impl ::core::clone::Clone for ReprFlags {
#[inline]
fn clone(&self) -> ReprFlags {
let _: ::core::clone::AssertParamIsClone<bool>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ReprFlags {
#[inline]
fn eq(&self, other: &ReprFlags) -> bool {
self.is_simd == other.is_simd && self.is_c == other.is_c &&
self.is_transparent == other.is_transparent &&
self.is_linear == other.is_linear
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for ReprFlags {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ReprFlags {
#[inline]
fn partial_cmp(&self, other: &ReprFlags)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.is_simd,
&other.is_simd) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.is_c,
&other.is_c) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.is_transparent,
&other.is_transparent) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.is_linear,
&other.is_linear),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for ReprFlags {
#[inline]
fn cmp(&self, other: &ReprFlags) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.is_simd, &other.is_simd) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.is_c, &other.is_c) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.is_transparent,
&other.is_transparent) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.is_linear, &other.is_linear),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ReprFlags {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.is_simd, state);
::core::hash::Hash::hash(&self.is_c, state);
::core::hash::Hash::hash(&self.is_transparent, state);
::core::hash::Hash::hash(&self.is_linear, state)
}
}Hash, #[automatically_derived]
impl ::core::fmt::Debug for ReprFlags {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "ReprFlags",
"is_simd", &self.is_simd, "is_c", &self.is_c, "is_transparent",
&self.is_transparent, "is_linear", &&self.is_linear)
}
}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 ReprFlags {
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,
"ReprFlags", false as usize + 1 + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"is_simd", &self.is_simd)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"is_c", &self.is_c)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"is_transparent", &self.is_transparent)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"is_linear", &self.is_linear)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
484pub struct ReprFlags {
485 pub is_simd: bool,
486 pub is_c: bool,
487 pub is_transparent: bool,
488 pub is_linear: bool,
489}
490
491#[derive(#[automatically_derived]
impl ::core::marker::Copy for IntegerType { }Copy, #[automatically_derived]
impl ::core::clone::Clone for IntegerType {
#[inline]
fn clone(&self) -> IntegerType {
let _: ::core::clone::AssertParamIsClone<bool>;
let _: ::core::clone::AssertParamIsClone<IntegerLength>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for IntegerType {
#[inline]
fn eq(&self, other: &IntegerType) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(IntegerType::Pointer { is_signed: __self_0 },
IntegerType::Pointer { is_signed: __arg1_0 }) =>
__self_0 == __arg1_0,
(IntegerType::Fixed { length: __self_0, is_signed: __self_1 },
IntegerType::Fixed { length: __arg1_0, is_signed: __arg1_1
}) => __self_1 == __arg1_1 && __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for IntegerType {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<IntegerLength>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for IntegerType {
#[inline]
fn partial_cmp(&self, other: &IntegerType)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(IntegerType::Pointer { is_signed: __self_0 },
IntegerType::Pointer { is_signed: __arg1_0 }) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(IntegerType::Fixed { length: __self_0, is_signed: __self_1 },
IntegerType::Fixed { length: __arg1_0, is_signed: __arg1_1 })
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for IntegerType {
#[inline]
fn cmp(&self, other: &IntegerType) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(IntegerType::Pointer { is_signed: __self_0 },
IntegerType::Pointer { is_signed: __arg1_0 }) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(IntegerType::Fixed { length: __self_0, is_signed: __self_1
}, IntegerType::Fixed {
length: __arg1_0, is_signed: __arg1_1 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for IntegerType {
#[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 {
IntegerType::Pointer { is_signed: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
IntegerType::Fixed { length: __self_0, is_signed: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
}
}
}Hash, #[automatically_derived]
impl ::core::fmt::Debug for IntegerType {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
IntegerType::Pointer { is_signed: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Pointer", "is_signed", &__self_0),
IntegerType::Fixed { length: __self_0, is_signed: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "Fixed",
"length", __self_0, "is_signed", &__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 IntegerType {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
IntegerType::Pointer { ref is_signed } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"IntegerType", 0u32, "Pointer", 0 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"is_signed", is_signed)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
IntegerType::Fixed { ref length, ref is_signed } => {
let mut __serde_state =
_serde::Serializer::serialize_struct_variant(__serializer,
"IntegerType", 1u32, "Fixed", 0 + 1 + 1)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"length", length)?;
_serde::ser::SerializeStructVariant::serialize_field(&mut __serde_state,
"is_signed", is_signed)?;
_serde::ser::SerializeStructVariant::end(__serde_state)
}
}
}
}
};Serialize)]
492pub enum IntegerType {
493 Pointer {
495 is_signed: bool,
497 },
498 Fixed {
500 length: IntegerLength,
502 is_signed: bool,
504 },
505}
506
507#[non_exhaustive]
509#[derive(#[automatically_derived]
impl ::core::marker::Copy for ReprOptions { }Copy, #[automatically_derived]
impl ::core::clone::Clone for ReprOptions {
#[inline]
fn clone(&self) -> ReprOptions {
let _: ::core::clone::AssertParamIsClone<Option<IntegerType>>;
let _: ::core::clone::AssertParamIsClone<Option<Align>>;
let _: ::core::clone::AssertParamIsClone<Option<Align>>;
let _: ::core::clone::AssertParamIsClone<ReprFlags>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ReprOptions {
#[inline]
fn eq(&self, other: &ReprOptions) -> bool {
self.int == other.int && self.align == other.align &&
self.pack == other.pack && self.flags == other.flags
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for ReprOptions {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Option<IntegerType>>;
let _: ::core::cmp::AssertParamIsEq<Option<Align>>;
let _: ::core::cmp::AssertParamIsEq<Option<Align>>;
let _: ::core::cmp::AssertParamIsEq<ReprFlags>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ReprOptions {
#[inline]
fn partial_cmp(&self, other: &ReprOptions)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.int, &other.int) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.align,
&other.align) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.pack,
&other.pack) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.flags,
&other.flags),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for ReprOptions {
#[inline]
fn cmp(&self, other: &ReprOptions) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.int, &other.int) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.align, &other.align) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.pack, &other.pack) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.flags, &other.flags),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ReprOptions {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.int, state);
::core::hash::Hash::hash(&self.align, state);
::core::hash::Hash::hash(&self.pack, state);
::core::hash::Hash::hash(&self.flags, state)
}
}Hash, #[automatically_derived]
impl ::core::fmt::Debug for ReprOptions {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "ReprOptions",
"int", &self.int, "align", &self.align, "pack", &self.pack,
"flags", &&self.flags)
}
}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 ReprOptions {
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,
"ReprOptions", false as usize + 1 + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"int", &self.int)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"align", &self.align)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"pack", &self.pack)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"flags", &self.flags)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize)]
510pub struct ReprOptions {
511 pub int: Option<IntegerType>,
512 pub align: Option<Align>,
513 pub pack: Option<Align>,
514 pub flags: ReprFlags,
515}