From b5eaa5bb0f9f5c5e757b9e7aec07f9e81e4b86b8 Mon Sep 17 00:00:00 2001 From: Michael van Straten Date: Tue, 26 Mar 2024 22:25:47 +0100 Subject: [PATCH] Remove unessesary boxing of type --- Cargo.toml | 2 +- src/lib.rs | 2 -- src/type_aware_impl.rs | 18 ++++++------------ 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 210434e..2069dd3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "derive-elves" authors = ["Michael van Straten"] -version = "0.1.1" +version = "0.1.2" edition = "2021" license = "MIT" documentation = "https://docs.rs/derive-elves/" diff --git a/src/lib.rs b/src/lib.rs index 0b738af..eeca858 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -61,8 +61,6 @@ impl Trait for (#ident, A, B, C) ``` */ -#![feature(box_into_inner)] - pub use type_aware_impl::*; mod type_aware_impl; diff --git a/src/type_aware_impl.rs b/src/type_aware_impl.rs index ae14819..d43f123 100644 --- a/src/type_aware_impl.rs +++ b/src/type_aware_impl.rs @@ -30,20 +30,14 @@ pub fn type_aware_impl(input: TokenStream, target_type: &DeriveInput) -> TokenSt } } - impl_statement.to_token_stream().into() + impl_statement.to_token_stream() } Err(err) => err.into_compile_error(), } } -fn add_type_generics(impl_type: &mut Box, target_type: &DeriveInput) { - let recurse = |impl_type: &mut Box| add_type_generics(impl_type, target_type); - - let boxed = |not_boxed_type: &mut Type| { - let mut boxed_type = Box::new(not_boxed_type.clone()); - recurse(&mut boxed_type); - *not_boxed_type = Box::::into_inner(boxed_type); - }; +fn add_type_generics(impl_type: &mut Type, target_type: &DeriveInput) { + let recurse = |impl_type: &mut Type| add_type_generics(impl_type, target_type); let path = |path: &mut Path| { if path.is_ident(&target_type.ident) { @@ -65,13 +59,13 @@ fn add_type_generics(impl_type: &mut Box, target_type: &DeriveInput) { .for_each(drop) }; - match **impl_type { + match *impl_type { syn::Type::Array(ref mut type_array) => recurse(&mut type_array.elem), syn::Type::BareFn(ref mut bare_fn) => { bare_fn .inputs .iter_mut() - .map(|argument| boxed(&mut argument.ty)) + .map(|argument| recurse(&mut argument.ty)) .for_each(drop); match bare_fn.output { @@ -92,7 +86,7 @@ fn add_type_generics(impl_type: &mut Box, target_type: &DeriveInput) { syn::Type::Reference(ref mut reference) => recurse(&mut reference.elem), syn::Type::Slice(ref mut slice) => recurse(&mut slice.elem), syn::Type::TraitObject(ref mut trait_object) => bounds(&mut trait_object.bounds), - syn::Type::Tuple(ref mut tuple) => tuple.elems.iter_mut().map(boxed).for_each(drop), + syn::Type::Tuple(ref mut tuple) => tuple.elems.iter_mut().map(recurse).for_each(drop), _ => (), }; }