aboutsummaryrefslogtreecommitdiff
path: root/syrette_macros/src/lib.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2022-07-20 14:29:45 +0200
committerHampusM <hampus@hampusmat.com>2022-07-20 14:29:45 +0200
commit2d1a6b2d432408d74eb57e0bda3f7434617e1070 (patch)
tree7e21f8126edfdfd9c40b4b51ba5626c6440442d9 /syrette_macros/src/lib.rs
parent7863d9859a5cbce99c3769e4fdb40283115d358d (diff)
refactor: reorganize folder hierarchy
Diffstat (limited to 'syrette_macros/src/lib.rs')
-rw-r--r--syrette_macros/src/lib.rs96
1 files changed, 0 insertions, 96 deletions
diff --git a/syrette_macros/src/lib.rs b/syrette_macros/src/lib.rs
deleted file mode 100644
index ed1a509..0000000
--- a/syrette_macros/src/lib.rs
+++ /dev/null
@@ -1,96 +0,0 @@
-#![deny(clippy::all)]
-#![deny(clippy::pedantic)]
-
-use proc_macro::TokenStream;
-use quote::quote;
-use syn::{parse, parse_macro_input};
-
-mod declare_interface_args;
-mod factory_type_alias;
-mod injectable_impl;
-mod injectable_macro_args;
-mod libs;
-
-use declare_interface_args::DeclareInterfaceArgs;
-use factory_type_alias::FactoryTypeAlias;
-use injectable_impl::InjectableImpl;
-use injectable_macro_args::InjectableMacroArgs;
-use libs::intertrait_macros::gen_caster::generate_caster;
-
-/// Makes a struct injectable. Thereby usable with `DIContainer`.
-///
-/// # Arguments
-/// * A interface trait the struct implements.
-///
-/// # Panics
-/// If the attributed item is not a impl.
-#[proc_macro_attribute]
-pub fn injectable(args_stream: TokenStream, impl_stream: TokenStream) -> TokenStream
-{
- let InjectableMacroArgs {
- interface: interface_type_path,
- } = parse_macro_input!(args_stream);
-
- let injectable_impl: InjectableImpl = parse(impl_stream).unwrap();
-
- let expanded_injectable_impl = injectable_impl.expand();
-
- let self_type = &injectable_impl.self_type;
-
- quote! {
- #expanded_injectable_impl
-
- syrette::declare_interface!(#self_type -> #interface_type_path);
- }
- .into()
-}
-
-/// Makes a type alias usable as a factory interface.
-///
-/// # Panics
-/// If the attributed item is not a type alias.
-#[proc_macro_attribute]
-pub fn factory(_: TokenStream, type_alias_stream: TokenStream) -> TokenStream
-{
- let FactoryTypeAlias {
- type_alias,
- factory_interface,
- arg_types,
- return_type,
- } = parse(type_alias_stream).unwrap();
-
- quote! {
- #type_alias
-
- syrette::declare_interface!(
- syrette::castable_factory::CastableFactory<
- #arg_types,
- #return_type
- > -> #factory_interface
- );
-
- syrette::declare_interface!(
- syrette::castable_factory::CastableFactory<
- #arg_types,
- #return_type
- > -> syrette::castable_factory::AnyFactory
- );
- }
- .into()
-}
-
-/// Declares the interface trait of a implementation.
-///
-/// # Arguments
-/// {Implementation} -> {Interface}
-///
-#[proc_macro]
-pub fn declare_interface(input: TokenStream) -> TokenStream
-{
- let DeclareInterfaceArgs {
- implementation,
- interface,
- } = parse_macro_input!(input);
-
- generate_caster(&implementation, &interface).into()
-}