Skip to content

Instantly share code, notes, and snippets.

@fraxinas
Created July 11, 2023 12:44
Show Gist options
  • Save fraxinas/5b4e5d2a58b3b42cb6db5fc47830c6cc to your computer and use it in GitHub Desktop.
Save fraxinas/5b4e5d2a58b3b42cb6db5fc47830c6cc to your computer and use it in GitHub Desktop.
Expansion of generated code derived by serde_with::with_prefix! macro
/// Available Asterisk 20 DialState fields, cf. https://wiki.asterisk.org/wiki/display/AST/Asterisk+20+ManagerEvent_DialState
/// has the same exact fields as NewConnectedLine plus the same fields again for the destination plus 'DialStatus'
#[serde(rename_all = "camelCase")]
pub struct DialStateData {
#[serde(flatten)]
pub caller_state: AsteriskLineData,
#[serde(flatten, with = "prefix_dest")]
pub destination_state: AsteriskLineData,
pub dial_status: AsteriskDialStatus,
}
#[automatically_derived]
impl ::core::fmt::Debug for DialStateData {
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(
f,
"DialStateData",
"caller_state",
&self.caller_state,
"destination_state",
&self.destination_state,
"dial_status",
&&self.dial_status,
)
}
}
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
const _: () = {
#[allow(unused_extern_crates, clippy::useless_attribute)]
extern crate serde as _serde;
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for DialStateData {
fn deserialize<__D>(
__deserializer: __D,
) -> _serde::__private::Result<Self, __D::Error>
where
__D: _serde::Deserializer<'de>,
{
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field<'de> {
__field2,
__other(_serde::__private::de::Content<'de>),
}
#[doc(hidden)]
struct __FieldVisitor;
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field<'de>;
fn expecting(
&self,
__formatter: &mut _serde::__private::Formatter,
) -> _serde::__private::fmt::Result {
_serde::__private::Formatter::write_str(
__formatter,
"field identifier",
)
}
fn visit_bool<__E>(
self,
__value: bool,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
_serde::__private::Ok(
__Field::__other(
_serde::__private::de::Content::Bool(__value),
),
)
}
fn visit_i8<__E>(
self,
__value: i8,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
_serde::__private::Ok(
__Field::__other(_serde::__private::de::Content::I8(__value)),
)
}
fn visit_i16<__E>(
self,
__value: i16,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
_serde::__private::Ok(
__Field::__other(
_serde::__private::de::Content::I16(__value),
),
)
}
fn visit_i32<__E>(
self,
__value: i32,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
_serde::__private::Ok(
__Field::__other(
_serde::__private::de::Content::I32(__value),
),
)
}
fn visit_i64<__E>(
self,
__value: i64,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
_serde::__private::Ok(
__Field::__other(
_serde::__private::de::Content::I64(__value),
),
)
}
fn visit_u8<__E>(
self,
__value: u8,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
_serde::__private::Ok(
__Field::__other(_serde::__private::de::Content::U8(__value)),
)
}
fn visit_u16<__E>(
self,
__value: u16,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
_serde::__private::Ok(
__Field::__other(
_serde::__private::de::Content::U16(__value),
),
)
}
fn visit_u32<__E>(
self,
__value: u32,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
_serde::__private::Ok(
__Field::__other(
_serde::__private::de::Content::U32(__value),
),
)
}
fn visit_u64<__E>(
self,
__value: u64,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
_serde::__private::Ok(
__Field::__other(
_serde::__private::de::Content::U64(__value),
),
)
}
fn visit_f32<__E>(
self,
__value: f32,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
_serde::__private::Ok(
__Field::__other(
_serde::__private::de::Content::F32(__value),
),
)
}
fn visit_f64<__E>(
self,
__value: f64,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
_serde::__private::Ok(
__Field::__other(
_serde::__private::de::Content::F64(__value),
),
)
}
fn visit_char<__E>(
self,
__value: char,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
_serde::__private::Ok(
__Field::__other(
_serde::__private::de::Content::Char(__value),
),
)
}
fn visit_unit<__E>(
self,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
_serde::__private::Ok(
__Field::__other(_serde::__private::de::Content::Unit),
)
}
fn visit_str<__E>(
self,
__value: &str,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
match __value {
"dialStatus" => _serde::__private::Ok(__Field::__field2),
_ => {
let __value = _serde::__private::de::Content::String(
_serde::__private::ToString::to_string(__value),
);
_serde::__private::Ok(__Field::__other(__value))
}
}
}
fn visit_bytes<__E>(
self,
__value: &[u8],
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
match __value {
b"dialStatus" => _serde::__private::Ok(__Field::__field2),
_ => {
let __value = _serde::__private::de::Content::ByteBuf(
__value.to_vec(),
);
_serde::__private::Ok(__Field::__other(__value))
}
}
}
fn visit_borrowed_str<__E>(
self,
__value: &'de str,
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
match __value {
"dialStatus" => _serde::__private::Ok(__Field::__field2),
_ => {
let __value = _serde::__private::de::Content::Str(__value);
_serde::__private::Ok(__Field::__other(__value))
}
}
}
fn visit_borrowed_bytes<__E>(
self,
__value: &'de [u8],
) -> _serde::__private::Result<Self::Value, __E>
where
__E: _serde::de::Error,
{
match __value {
b"dialStatus" => _serde::__private::Ok(__Field::__field2),
_ => {
let __value = _serde::__private::de::Content::Bytes(
__value,
);
_serde::__private::Ok(__Field::__other(__value))
}
}
}
}
impl<'de> _serde::Deserialize<'de> for __Field<'de> {
#[inline]
fn deserialize<__D>(
__deserializer: __D,
) -> _serde::__private::Result<Self, __D::Error>
where
__D: _serde::Deserializer<'de>,
{
_serde::Deserializer::deserialize_identifier(
__deserializer,
__FieldVisitor,
)
}
}
#[doc(hidden)]
struct __Visitor<'de> {
marker: _serde::__private::PhantomData<DialStateData>,
lifetime: _serde::__private::PhantomData<&'de ()>,
}
impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
type Value = DialStateData;
fn expecting(
&self,
__formatter: &mut _serde::__private::Formatter,
) -> _serde::__private::fmt::Result {
_serde::__private::Formatter::write_str(
__formatter,
"struct DialStateData",
)
}
#[inline]
fn visit_map<__A>(
self,
mut __map: __A,
) -> _serde::__private::Result<Self::Value, __A::Error>
where
__A: _serde::de::MapAccess<'de>,
{
let mut __field2: _serde::__private::Option<
AsteriskDialStatus,
> = _serde::__private::None;
let mut __collect = _serde::__private::Vec::<
_serde::__private::Option<
(
_serde::__private::de::Content,
_serde::__private::de::Content,
),
>,
>::new();
while let _serde::__private::Some(__key)
= match _serde::de::MapAccess::next_key::<
__Field,
>(&mut __map) {
_serde::__private::Ok(__val) => __val,
_serde::__private::Err(__err) => {
return _serde::__private::Err(__err);
}
} {
match __key {
__Field::__field2 => {
if _serde::__private::Option::is_some(&__field2) {
return _serde::__private::Err(
<__A::Error as _serde::de::Error>::duplicate_field(
"dialStatus",
),
);
}
__field2 = _serde::__private::Some(
match _serde::de::MapAccess::next_value::<
AsteriskDialStatus,
>(&mut __map) {
_serde::__private::Ok(__val) => __val,
_serde::__private::Err(__err) => {
return _serde::__private::Err(__err);
}
},
);
}
__Field::__other(__name) => {
__collect
.push(
_serde::__private::Some((
__name,
match _serde::de::MapAccess::next_value(&mut __map) {
_serde::__private::Ok(__val) => __val,
_serde::__private::Err(__err) => {
return _serde::__private::Err(__err);
}
},
)),
);
}
}
}
let __field2 = match __field2 {
_serde::__private::Some(__field2) => __field2,
_serde::__private::None => {
match _serde::__private::de::missing_field("dialStatus") {
_serde::__private::Ok(__val) => __val,
_serde::__private::Err(__err) => {
return _serde::__private::Err(__err);
}
}
}
};
let __field0: AsteriskLineData = match _serde::de::Deserialize::deserialize(
_serde::__private::de::FlatMapDeserializer(
&mut __collect,
_serde::__private::PhantomData,
),
) {
_serde::__private::Ok(__val) => __val,
_serde::__private::Err(__err) => {
return _serde::__private::Err(__err);
}
};
let __field1: AsteriskLineData = match prefix_dest::deserialize(
_serde::__private::de::FlatMapDeserializer(
&mut __collect,
_serde::__private::PhantomData,
),
) {
_serde::__private::Ok(__val) => __val,
_serde::__private::Err(__err) => {
return _serde::__private::Err(__err);
}
};
_serde::__private::Ok(DialStateData {
caller_state: __field0,
destination_state: __field1,
dial_status: __field2,
})
}
}
_serde::Deserializer::deserialize_map(
__deserializer,
__Visitor {
marker: _serde::__private::PhantomData::<DialStateData>,
lifetime: _serde::__private::PhantomData,
},
)
}
}
};
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
const _: () = {
#[allow(unused_extern_crates, clippy::useless_attribute)]
extern crate serde as _serde;
#[automatically_derived]
impl _serde::Serialize for DialStateData {
fn serialize<__S>(
&self,
__serializer: __S,
) -> _serde::__private::Result<__S::Ok, __S::Error>
where
__S: _serde::Serializer,
{
let mut __serde_state = match _serde::Serializer::serialize_map(
__serializer,
_serde::__private::None,
) {
_serde::__private::Ok(__val) => __val,
_serde::__private::Err(__err) => {
return _serde::__private::Err(__err);
}
};
match _serde::Serialize::serialize(
&&self.caller_state,
_serde::__private::ser::FlatMapSerializer(&mut __serde_state),
) {
_serde::__private::Ok(__val) => __val,
_serde::__private::Err(__err) => {
return _serde::__private::Err(__err);
}
};
match _serde::Serialize::serialize(
&{
#[doc(hidden)]
struct __SerializeWith<'__a> {
values: (&'__a AsteriskLineData,),
phantom: _serde::__private::PhantomData<DialStateData>,
}
impl<'__a> _serde::Serialize for __SerializeWith<'__a> {
fn serialize<__S>(
&self,
__s: __S,
) -> _serde::__private::Result<__S::Ok, __S::Error>
where
__S: _serde::Serializer,
{
prefix_dest::serialize(self.values.0, __s)
}
}
&__SerializeWith {
values: (&self.destination_state,),
phantom: _serde::__private::PhantomData::<DialStateData>,
}
},
_serde::__private::ser::FlatMapSerializer(&mut __serde_state),
) {
_serde::__private::Ok(__val) => __val,
_serde::__private::Err(__err) => {
return _serde::__private::Err(__err);
}
};
match _serde::ser::SerializeMap::serialize_entry(
&mut __serde_state,
"dialStatus",
&self.dial_status,
) {
_serde::__private::Ok(__val) => __val,
_serde::__private::Err(__err) => {
return _serde::__private::Err(__err);
}
};
_serde::ser::SerializeMap::end(__serde_state)
}
}
};
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for DialStateData {}
#[automatically_derived]
impl ::core::cmp::PartialEq for DialStateData {
#[inline]
fn eq(&self, other: &DialStateData) -> bool {
self.caller_state == other.caller_state
&& self.destination_state == other.destination_state
&& self.dial_status == other.dial_status
}
}
#[automatically_derived]
impl ::core::clone::Clone for DialStateData {
#[inline]
fn clone(&self) -> DialStateData {
DialStateData {
caller_state: ::core::clone::Clone::clone(&self.caller_state),
destination_state: ::core::clone::Clone::clone(&self.destination_state),
dial_status: ::core::clone::Clone::clone(&self.dial_status),
}
}
}
#[automatically_derived]
impl ::core::default::Default for DialStateData {
#[inline]
fn default() -> DialStateData {
DialStateData {
caller_state: ::core::default::Default::default(),
destination_state: ::core::default::Default::default(),
dial_status: ::core::default::Default::default(),
}
}
}
const _: () = {
#[automatically_derived]
#[allow(unused_braces)]
impl schemars::JsonSchema for DialStateData {
fn schema_name() -> std::string::String {
"DialStateData".to_owned()
}
fn json_schema(
gen: &mut schemars::gen::SchemaGenerator,
) -> schemars::schema::Schema {
schemars::_private::apply_metadata(
{
let mut schema_object = schemars::schema::SchemaObject {
instance_type: Some(
schemars::schema::InstanceType::Object.into(),
),
..Default::default()
};
let object_validation = schema_object.object();
{
object_validation
.properties
.insert(
"dialStatus".to_owned(),
gen.subschema_for::<AsteriskDialStatus>(),
);
if !<AsteriskDialStatus as schemars::JsonSchema>::_schemars_private_is_option() {
object_validation.required.insert("dialStatus".to_owned());
}
}
schemars::schema::Schema::Object(schema_object)
.flatten(
schemars::_private::json_schema_for_flatten::<
AsteriskLineData,
>(gen, false),
)
.flatten(
schemars::_private::json_schema_for_flatten::<
prefix_dest,
>(gen, false),
)
},
schemars::schema::Metadata {
description: Some(
"Available Asterisk 20 DialState fields, cf. https://wiki.asterisk.org/wiki/display/AST/Asterisk+20+ManagerEvent_DialState has the same exact fields as NewConnectedLine plus the same fields again for the destination plus 'DialStatus'"
.to_owned(),
),
..Default::default()
},
)
}
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment