aboutsummaryrefslogtreecommitdiff
path: root/macros/src
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2023-08-04 17:38:00 +0200
committerHampusM <hampus@hampusmat.com>2023-08-04 17:38:00 +0200
commitb4ddc1e626fbd11d784b442d246ddc5f54c35b51 (patch)
treeb8f87926310b8490fce701d17dcd0a612067034d /macros/src
parente0216c7cbf008f2867ef92955abce28dba27f5e3 (diff)
refactor!: rename the async flag of the declare_interface macro
BREAKING CHANGE: The flag 'async' of the declare_interface macro has been renamed to 'threadsafe_sharable'. The reason being that the name 'async' was an outright lie. The new name describes exactly what the flag enables
Diffstat (limited to 'macros/src')
-rw-r--r--macros/src/declare_interface_args.rs12
-rw-r--r--macros/src/factory/build_declare_interfaces.rs4
-rw-r--r--macros/src/lib.rs15
3 files changed, 17 insertions, 14 deletions
diff --git a/macros/src/declare_interface_args.rs b/macros/src/declare_interface_args.rs
index 79004da..fea6c7b 100644
--- a/macros/src/declare_interface_args.rs
+++ b/macros/src/declare_interface_args.rs
@@ -5,7 +5,7 @@ use syn::{Token, TypePath};
use crate::macro_flag::MacroFlag;
use crate::util::iterator_ext::IteratorExt;
-pub const DECLARE_INTERFACE_FLAGS: &[&str] = &["async"];
+pub const DECLARE_INTERFACE_FLAGS: &[&str] = &["threadsafe_sharable"];
pub struct DeclareInterfaceArgs
{
@@ -110,7 +110,7 @@ mod tests
fn can_parse_with_flags() -> Result<(), Box<dyn Error>>
{
let input_args = quote! {
- Foobar -> IFoobar, async = true
+ Foobar -> IFoobar, threadsafe_sharable = true
};
let decl_interface_args = parse2::<DeclareInterfaceArgs>(input_args)?;
@@ -140,7 +140,7 @@ mod tests
assert_eq!(
decl_interface_args.flags,
Punctuated::from_iter(vec![MacroFlag {
- name: format_ident!("async"),
+ name: format_ident!("threadsafe_sharable"),
value: MacroFlagValue::Literal(Lit::Bool(LitBool::new(
true,
Span::call_site()
@@ -155,7 +155,7 @@ mod tests
fn cannot_parse_with_invalid_flag()
{
let input_args = quote! {
- Foobar -> IFoobar, xyz = false, async = true
+ Foobar -> IFoobar, xyz = false, threadsafe_sharable = true
};
assert!(parse2::<DeclareInterfaceArgs>(input_args).is_err());
@@ -167,7 +167,7 @@ mod tests
assert!(
// Formatting is weird without this comment
parse2::<DeclareInterfaceArgs>(quote! {
- Foobar -> IFoobar, async = true, async = true
+ Foobar -> IFoobar, threadsafe_sharable = true, threadsafe_sharable = true
})
.is_err()
);
@@ -175,7 +175,7 @@ mod tests
assert!(
// Formatting is weird without this comment
parse2::<DeclareInterfaceArgs>(quote! {
- Foobar -> IFoobar, async = true, async = false
+ Foobar -> IFoobar, threadsafe_sharable = true, threadsafe_sharable = false
})
.is_err()
);
diff --git a/macros/src/factory/build_declare_interfaces.rs b/macros/src/factory/build_declare_interfaces.rs
index 038d29d..e4fc01b 100644
--- a/macros/src/factory/build_declare_interfaces.rs
+++ b/macros/src/factory/build_declare_interfaces.rs
@@ -18,7 +18,7 @@ pub fn build_declare_factory_interfaces(
(std::sync::Arc<syrette::AsyncDIContainer>,),
#factory_interface
>,
- async = true
+ threadsafe_sharable = true
);
syrette::declare_interface!(
@@ -26,7 +26,7 @@ pub fn build_declare_factory_interfaces(
(std::sync::Arc<syrette::AsyncDIContainer>,),
#factory_interface
> -> syrette::private::any_factory::AnyThreadsafeFactory,
- async = true
+ threadsafe_sharable = true
);
}
} else {
diff --git a/macros/src/lib.rs b/macros/src/lib.rs
index 80274fd..b261974 100644
--- a/macros/src/lib.rs
+++ b/macros/src/lib.rs
@@ -220,14 +220,14 @@ pub fn injectable(args_stream: TokenStream, input_stream: TokenStream) -> TokenS
});
let maybe_decl_interface = if let Some(interface) = opt_interface {
- let async_flag = if is_async {
- quote! {, async = true}
+ let threadsafe_sharable_flag = if is_async {
+ quote! { , threadsafe_sharable = true }
} else {
quote! {}
};
quote! {
- syrette::declare_interface!(#self_type -> #interface #async_flag);
+ syrette::declare_interface!(#self_type -> #interface #threadsafe_sharable_flag);
}
} else {
quote! {}
@@ -443,7 +443,8 @@ pub fn declare_default_factory(args_stream: TokenStream) -> TokenStream
/// * (Zero or more) Flags. Like `a = true, b = false`
///
/// # Flags
-/// - `async` - Mark as async.
+/// - `threadsafe_sharable` - Enables the use of thread-safe shared instances of the
+/// implementation accessed with the interface.
///
/// # Examples
/// ```
@@ -468,9 +469,11 @@ pub fn declare_interface(input: TokenStream) -> TokenStream
flags,
} = parse(input).unwrap_or_abort();
- let opt_async_flag = flags.iter().find(|flag| flag.name() == "async");
+ let threadsafe_sharable_flag = flags
+ .iter()
+ .find(|flag| flag.name() == "threadsafe_sharable");
- let is_async = opt_async_flag
+ let is_async = threadsafe_sharable_flag
.map_or_else(|| Ok(false), MacroFlag::get_bool)
.unwrap_or_abort();