#[proc_macro_attribute]
pub fn mt_derive(attr: TokenStream, item: TokenStream) -> TokenStream {
- let item2 = item.clone();
-
let attr_args = parse_macro_input!(attr as syn::AttributeArgs);
- let mut input = parse_macro_input!(item2 as syn::Item);
+ let mut input = parse_macro_input!(item as syn::Item);
let args = match MacroArgs::from_list(&attr_args) {
Ok(v) => v,
code
}
- Err(e) => return e.write_errors(),
+ Err(e) => e.write_errors(),
}
}
code
}
- Err(e) => return e.write_errors(),
+ Err(e) => e.write_errors(),
}
}
v.discriminant.clone().map(|x| x.1).unwrap_or(discr)
};
- f(&v, &discr);
+ f(v, &discr);
discr = parse_quote! { 1 + #discr };
}
let code = serialize_args(MtArgs::from_derive_input(&input), |args| {
match &input.data {
syn::Data::Enum(e) => {
- let repr = get_repr(&input, &args);
+ let repr = get_repr(&input, args);
let mut variants = TokStr::new();
- iter_variants(&e, &args, |v, discr| {
+ iter_variants(e, args, |v, discr| {
let (fields, fields_struct) = get_fields_struct(&v.fields);
let code =
serialize_args(MtArgs::from_variant(v), |_| serialize_fields(&fields));
let code = deserialize_args(MtArgs::from_derive_input(&input), |args| {
match &input.data {
syn::Data::Enum(e) => {
- let repr = get_repr(&input, &args);
+ let repr = get_repr(&input, args);
let mut consts = TokStr::new();
let mut arms = TokStr::new();
- iter_variants(&e, &args, |v, discr| {
+ iter_variants(e, args, |v, discr| {
let ident = &v.ident;
let (fields, fields_struct) = get_fields_struct(&v.fields);
let code = deserialize_args(MtArgs::from_variant(v), |_| {
}
fn read_len(reader: &mut impl Read) -> Result<Self::Len, DeserializeError> {
- Ok(Self::mt_deserialize::<DefCfg>(reader)?
+ Self::mt_deserialize::<DefCfg>(reader)?
.try_into()
- .map_err(Into::into)?)
+ .map_err(Into::into)
}
}
.try_for_each(|item| item.mt_serialize::<C::Inner>(writer))
}
-pub fn mt_deserialize_seq<'a, C: MtCfg, T: MtDeserialize>(
- reader: &'a mut impl Read,
-) -> Result<impl Iterator<Item = Result<T, DeserializeError>> + 'a, DeserializeError> {
+pub fn mt_deserialize_seq<C: MtCfg, T: MtDeserialize>(
+ reader: &mut impl Read,
+) -> Result<impl Iterator<Item = Result<T, DeserializeError>> + '_, DeserializeError> {
let len = C::read_len(reader)?;
mt_deserialize_sized_seq::<C, _>(&len, reader)
}