diff options
author | HampusM <hampus@hampusmat.com> | 2023-08-16 18:32:20 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2023-08-16 18:36:34 +0200 |
commit | cc48563f774423fe591911fed413cf3db4ba326e (patch) | |
tree | 81fcd79ca6bc52a2d7bee2d6f56dde198422f8a6 | |
parent | 096c27c0e5cc3b0f4dbf7dbf7f335acf705b9b6a (diff) |
chore!: remove the factory macro async flag
BREAKING CHANGE: The factory macro's async flag has been removed
-rw-r--r-- | examples/async-factory/main.rs | 2 | ||||
-rw-r--r-- | macros/src/factory/macro_args.rs | 44 | ||||
-rw-r--r-- | macros/src/lib.rs | 13 | ||||
-rw-r--r-- | src/di_container/asynchronous/binding/builder.rs | 4 |
4 files changed, 10 insertions, 53 deletions
diff --git a/examples/async-factory/main.rs b/examples/async-factory/main.rs index d368a32..3335700 100644 --- a/examples/async-factory/main.rs +++ b/examples/async-factory/main.rs @@ -16,7 +16,7 @@ trait IFoo: Send + Sync fn bar(&self); } -#[factory(async = true)] +#[factory] type IFooFactory = dyn Fn(i32) -> BoxFuture<'static, TransientPtr<dyn IFoo>> + Send + Sync; diff --git a/macros/src/factory/macro_args.rs b/macros/src/factory/macro_args.rs index cb2cbc9..76b29a2 100644 --- a/macros/src/factory/macro_args.rs +++ b/macros/src/factory/macro_args.rs @@ -5,7 +5,7 @@ use syn::Token; use crate::macro_flag::MacroFlag; use crate::util::iterator_ext::IteratorExt; -pub const FACTORY_MACRO_FLAGS: &[&str] = &["threadsafe", "async"]; +pub const FACTORY_MACRO_FLAGS: &[&str] = &["threadsafe"]; pub struct FactoryMacroArgs { @@ -59,7 +59,7 @@ mod tests fn can_parse_with_single_flag() -> Result<(), Box<dyn Error>> { let input_args = quote! { - async = true + threadsafe = true }; let factory_macro_args = parse2::<FactoryMacroArgs>(input_args)?; @@ -67,7 +67,7 @@ mod tests assert_eq!( factory_macro_args.flags, Punctuated::from_iter(vec![MacroFlag { - name: format_ident!("async"), + name: format_ident!("threadsafe"), value: MacroFlagValue::Literal(Lit::Bool(LitBool::new( true, Span::call_site() @@ -79,42 +79,10 @@ mod tests } #[test] - fn can_parse_with_multiple_flags() -> Result<(), Box<dyn Error>> - { - let input_args = quote! { - async = true, threadsafe = false - }; - - let factory_macro_args = parse2::<FactoryMacroArgs>(input_args)?; - - assert_eq!( - factory_macro_args.flags, - Punctuated::from_iter(vec![ - MacroFlag { - name: format_ident!("async"), - value: MacroFlagValue::Literal(Lit::Bool(LitBool::new( - true, - Span::call_site() - ))) - }, - MacroFlag { - name: format_ident!("threadsafe"), - value: MacroFlagValue::Literal(Lit::Bool(LitBool::new( - false, - Span::call_site() - ))) - } - ]) - ); - - Ok(()) - } - - #[test] fn cannot_parse_with_invalid_flag() { let input_args = quote! { - async = true, threadsafe = false, foo = true + threadsafe = false, foo = true }; assert!(parse2::<FactoryMacroArgs>(input_args).is_err()); @@ -126,7 +94,7 @@ mod tests assert!( // Formatting is weird without this comment parse2::<FactoryMacroArgs>(quote! { - async = true, threadsafe = false, async = true + threadsafe = true, threadsafe = true }) .is_err() ); @@ -134,7 +102,7 @@ mod tests assert!( // Formatting is weird without this comment parse2::<FactoryMacroArgs>(quote! { - async = true, threadsafe = false, async = false + threadsafe = true, threadsafe = false }) .is_err() ); diff --git a/macros/src/lib.rs b/macros/src/lib.rs index b11186e..e9aaeb0 100644 --- a/macros/src/lib.rs +++ b/macros/src/lib.rs @@ -253,7 +253,6 @@ pub fn injectable(args_stream: TokenStream, input_stream: TokenStream) -> TokenS /// /// # Flags /// - `threadsafe` - Mark as threadsafe. -/// - `async` - Mark as async. Infers the `threadsafe` flag. /// /// # Examples /// ``` @@ -294,22 +293,12 @@ pub fn factory(args_stream: TokenStream, input_stream: TokenStream) -> TokenStre let FactoryMacroArgs { flags } = parse(args_stream).unwrap_or_abort(); - let mut is_threadsafe = flags + let is_threadsafe = flags .iter() .find(|flag| flag.name() == "threadsafe") .map_or(Ok(false), MacroFlag::get_bool) .unwrap_or_abort(); - let is_async = flags - .iter() - .find(|flag| flag.name() == "async") - .map_or(Ok(false), MacroFlag::get_bool) - .unwrap_or_abort(); - - if is_async { - is_threadsafe = true; - } - let FactoryTypeAlias { type_alias, factory_interface, diff --git a/src/di_container/asynchronous/binding/builder.rs b/src/di_container/asynchronous/binding/builder.rs index 306d196..9fa5115 100644 --- a/src/di_container/asynchronous/binding/builder.rs +++ b/src/di_container/asynchronous/binding/builder.rs @@ -238,7 +238,7 @@ where /// # /// # impl Foo for Bar {} /// # - /// # #[factory(async = true)] + /// # #[factory] /// # type FooFactory = dyn Fn(i32, String) -> BoxFuture< /// # 'static, /// # TransientPtr<dyn Foo> @@ -602,7 +602,7 @@ mod tests use crate::{self as syrette, factory}; #[rustfmt::skip] - #[factory(async = true)] + #[factory] type IUserManagerFactory = dyn Fn(String) -> BoxFuture< 'static, TransientPtr<dyn subjects_async::IUserManager> |