diff options
Diffstat (limited to 'syrette_macros')
-rw-r--r-- | syrette_macros/src/lib.rs | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/syrette_macros/src/lib.rs b/syrette_macros/src/lib.rs index 0302c07..91a0562 100644 --- a/syrette_macros/src/lib.rs +++ b/syrette_macros/src/lib.rs @@ -29,7 +29,7 @@ const IMPL_NEW_METHOD_SELF_PARAM_ERR_MESSAGE: &str = const IMPL_NEW_METHOD_PARAM_TYPES_ERR_MESSAGE: &str = concat!( "All parameters of the new method of the attached to trait implementation ", - "must be either std::boxed::Box or std::rc:Rc (for factories)" + "must be either syrette::ptr::InterfacePtr or syrrete::ptr::FactoryPtr (for factories)" ); const INVALID_ALIASED_FACTORY_TRAIT_ERR_MESSAGE: &str = @@ -118,18 +118,17 @@ fn get_dependency_types(item_impl: &ItemImpl) -> Vec<Type> |mut acc, arg_type_path| { let arg_type_path_string = path_to_string(&arg_type_path.path); - if arg_type_path_string != "Box" - && arg_type_path_string != "std::boxed::Box" - && arg_type_path_string != "boxed::Box" - && arg_type_path_string != "Rc" - && arg_type_path_string != "std::rc::Rc" - && arg_type_path_string != "rc::Rc" + if arg_type_path_string != "InterfacePtr" + && arg_type_path_string != "ptr::InterfacePtr" + && arg_type_path_string != "syrrete::ptr::InterfacePtr" + && arg_type_path_string != "FactoryPtr" + && arg_type_path_string != "ptr::FactoryPtr" + && arg_type_path_string != "syrrete::ptr::FactoryPtr" { panic!("{}", IMPL_NEW_METHOD_PARAM_TYPES_ERR_MESSAGE); } // Assume the type path has a last segment. - // The Box check wouldn't pass if it didn't let last_path_segment = arg_type_path.path.segments.last().unwrap(); match &last_path_segment.arguments { @@ -138,7 +137,8 @@ fn get_dependency_types(item_impl: &ItemImpl) -> Vec<Type> let opt_first_generic_arg = generic_args.first(); - // Assume a first generic argument exists because Box requires one + // Assume a first generic argument exists because InterfacePtr and + // FactoryPtr requires one let first_generic_arg = opt_first_generic_arg.as_ref().unwrap(); match first_generic_arg { @@ -266,11 +266,13 @@ pub fn injectable(args_stream: TokenStream, impl_stream: TokenStream) -> TokenSt impl syrette::interfaces::injectable::Injectable for #self_type_path { fn resolve( di_container: &syrette::DIContainer - ) -> error_stack::Result<Box<Self>, syrette::errors::injectable::ResolveError> + ) -> error_stack::Result< + syrette::ptr::InterfacePtr<Self>, + syrette::errors::injectable::ResolveError> { use error_stack::ResultExt; - return Ok(Box::new(Self::new( + return Ok(syrette::ptr::InterfacePtr::new(Self::new( #(#get_dependencies .change_context(syrette::errors::injectable::ResolveError) .attach_printable( |