diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/di_container/asynchronous/binding/builder.rs | 8 | ||||
| -rw-r--r-- | src/di_container/asynchronous/mod.rs | 17 | ||||
| -rw-r--r-- | src/di_container/blocking/binding/builder.rs | 4 | ||||
| -rw-r--r-- | src/di_container/blocking/mod.rs | 11 | ||||
| -rw-r--r-- | src/interfaces/async_injectable.rs | 2 | ||||
| -rw-r--r-- | src/interfaces/injectable.rs | 2 | ||||
| -rw-r--r-- | src/interfaces/mod.rs | 8 | ||||
| -rw-r--r-- | src/lib.rs | 7 | ||||
| -rw-r--r-- | src/libs/intertrait/LICENSE-APACHE | 176 | ||||
| -rw-r--r-- | src/libs/intertrait/LICENSE-MIT | 17 | ||||
| -rw-r--r-- | src/libs/intertrait/cast/mod.rs | 20 | ||||
| -rw-r--r-- | src/libs/mod.rs | 3 | ||||
| -rw-r--r-- | src/private/any_factory.rs (renamed from src/interfaces/any_factory.rs) | 2 | ||||
| -rw-r--r-- | src/private/cast/arc.rs (renamed from src/libs/intertrait/cast/arc.rs) | 4 | ||||
| -rw-r--r-- | src/private/cast/boxed.rs (renamed from src/libs/intertrait/cast/box.rs) | 4 | ||||
| -rw-r--r-- | src/private/cast/error.rs (renamed from src/libs/intertrait/cast/error.rs) | 2 | ||||
| -rw-r--r-- | src/private/cast/mod.rs (renamed from src/libs/intertrait/mod.rs) | 17 | ||||
| -rw-r--r-- | src/private/cast/rc.rs (renamed from src/libs/intertrait/cast/rc.rs) | 4 | ||||
| -rw-r--r-- | src/private/castable_factory/blocking.rs (renamed from src/castable_factory/blocking.rs) | 4 | ||||
| -rw-r--r-- | src/private/castable_factory/mod.rs (renamed from src/castable_factory/mod.rs) | 0 | ||||
| -rw-r--r-- | src/private/castable_factory/threadsafe.rs (renamed from src/castable_factory/threadsafe.rs) | 4 | ||||
| -rw-r--r-- | src/private/factory.rs (renamed from src/interfaces/factory.rs) | 4 | ||||
| -rw-r--r-- | src/private/mod.rs | 15 | ||||
| -rw-r--r-- | src/provider/async.rs | 12 | ||||
| -rw-r--r-- | src/provider/blocking.rs | 12 | ||||
| -rw-r--r-- | src/test_utils.rs | 2 | 
26 files changed, 69 insertions, 292 deletions
| diff --git a/src/di_container/asynchronous/binding/builder.rs b/src/di_container/asynchronous/binding/builder.rs index 3ea8a35..8ba5be3 100644 --- a/src/di_container/asynchronous/binding/builder.rs +++ b/src/di_container/asynchronous/binding/builder.rs @@ -191,7 +191,7 @@ where          FactoryFunc:              Fn<(Arc<DIContainerType>,), Output = BoxFn<Args, Return>> + Send + Sync,      { -        use crate::castable_factory::threadsafe::ThreadsafeCastableFactory; +        use crate::private::castable_factory::threadsafe::ThreadsafeCastableFactory;          use crate::provider::r#async::AsyncFactoryVariant;          if self.di_container.has_binding::<Interface>(None).await { @@ -288,7 +288,7 @@ where              > + Send              + Sync,      { -        use crate::castable_factory::threadsafe::ThreadsafeCastableFactory; +        use crate::private::castable_factory::threadsafe::ThreadsafeCastableFactory;          use crate::provider::r#async::AsyncFactoryVariant;          if self.di_container.has_binding::<Interface>(None).await { @@ -378,7 +378,7 @@ where              > + Send              + Sync,      { -        use crate::castable_factory::threadsafe::ThreadsafeCastableFactory; +        use crate::private::castable_factory::threadsafe::ThreadsafeCastableFactory;          use crate::provider::r#async::AsyncFactoryVariant;          if self.di_container.has_binding::<Interface>(None).await { @@ -472,7 +472,7 @@ where              > + Send              + Sync,      { -        use crate::castable_factory::threadsafe::ThreadsafeCastableFactory; +        use crate::private::castable_factory::threadsafe::ThreadsafeCastableFactory;          use crate::provider::r#async::AsyncFactoryVariant;          if self.di_container.has_binding::<Interface>(None).await { diff --git a/src/di_container/asynchronous/mod.rs b/src/di_container/asynchronous/mod.rs index 65f5c9e..ad1f44f 100644 --- a/src/di_container/asynchronous/mod.rs +++ b/src/di_container/asynchronous/mod.rs @@ -62,8 +62,9 @@ use crate::di_container::asynchronous::binding::builder::AsyncBindingBuilder;  use crate::di_container::binding_storage::DIContainerBindingStorage;  use crate::errors::async_di_container::AsyncDIContainerError;  use crate::future::BoxFuture; -use crate::libs::intertrait::cast::error::CastError; -use crate::libs::intertrait::cast::{CastArc, CastBox}; +use crate::private::cast::arc::CastArc; +use crate::private::cast::boxed::CastBox; +use crate::private::cast::error::CastError;  use crate::provider::r#async::{AsyncProvidable, IAsyncProvider};  use crate::ptr::{SomeThreadsafePtr, TransientPtr}; @@ -286,7 +287,7 @@ impl AsyncDIContainer              }              #[cfg(feature = "factory")]              AsyncProvidable::Factory(factory_binding) => { -                use crate::interfaces::factory::IThreadsafeFactory; +                use crate::private::factory::IThreadsafeFactory;                  let factory = factory_binding                      .cast::<dyn IThreadsafeFactory<(Arc<AsyncDIContainer>,), Interface>>() @@ -315,7 +316,7 @@ impl AsyncDIContainer              }              #[cfg(feature = "factory")]              AsyncProvidable::DefaultFactory(binding) => { -                use crate::interfaces::factory::IThreadsafeFactory; +                use crate::private::factory::IThreadsafeFactory;                  let default_factory = Self::cast_factory_binding::<                      dyn IThreadsafeFactory< @@ -328,7 +329,7 @@ impl AsyncDIContainer              }              #[cfg(feature = "factory")]              AsyncProvidable::AsyncDefaultFactory(binding) => { -                use crate::interfaces::factory::IThreadsafeFactory; +                use crate::private::factory::IThreadsafeFactory;                  let async_default_factory = Self::cast_factory_binding::<                      dyn IThreadsafeFactory< @@ -350,7 +351,7 @@ impl AsyncDIContainer      #[cfg(feature = "factory")]      fn cast_factory_binding<Type: 'static + ?Sized>( -        factory_binding: Arc<dyn crate::interfaces::any_factory::AnyThreadsafeFactory>, +        factory_binding: Arc<dyn crate::private::any_factory::AnyThreadsafeFactory>,          binding_kind: &'static str,      ) -> Result<Arc<Type>, AsyncDIContainerError>      { @@ -667,7 +668,7 @@ mod tests          }          use crate as syrette; -        use crate::castable_factory::threadsafe::ThreadsafeCastableFactory; +        use crate::private::castable_factory::threadsafe::ThreadsafeCastableFactory;          #[crate::factory(threadsafe = true)]          type IUserManagerFactory = dyn Fn(Vec<i128>) -> dyn IUserManager; @@ -762,7 +763,7 @@ mod tests          }          use crate as syrette; -        use crate::castable_factory::threadsafe::ThreadsafeCastableFactory; +        use crate::private::castable_factory::threadsafe::ThreadsafeCastableFactory;          #[crate::factory(threadsafe = true)]          type IUserManagerFactory = dyn Fn(Vec<i128>) -> dyn IUserManager; diff --git a/src/di_container/blocking/binding/builder.rs b/src/di_container/blocking/binding/builder.rs index 29422b6..65fa40f 100644 --- a/src/di_container/blocking/binding/builder.rs +++ b/src/di_container/blocking/binding/builder.rs @@ -203,7 +203,7 @@ where          Interface: Fn<Args, Output = crate::ptr::TransientPtr<Return>>,          Func: Fn<(std::rc::Rc<DIContainerType>,), Output = Box<Interface>>,      { -        use crate::castable_factory::blocking::CastableFactory; +        use crate::private::castable_factory::blocking::CastableFactory;          if self.di_container.has_binding::<Interface>(None) {              return Err(BindingBuilderError::BindingAlreadyExists(type_name::< @@ -295,7 +295,7 @@ where              >,          >,      { -        use crate::castable_factory::blocking::CastableFactory; +        use crate::private::castable_factory::blocking::CastableFactory;          if self.di_container.has_binding::<Interface>(None) {              return Err(BindingBuilderError::BindingAlreadyExists(type_name::< diff --git a/src/di_container/blocking/mod.rs b/src/di_container/blocking/mod.rs index 97cca59..de7ef67 100644 --- a/src/di_container/blocking/mod.rs +++ b/src/di_container/blocking/mod.rs @@ -58,7 +58,8 @@ use crate::dependency_history::{DependencyHistory, IDependencyHistory};  use crate::di_container::binding_storage::DIContainerBindingStorage;  use crate::di_container::blocking::binding::builder::BindingBuilder;  use crate::errors::di_container::DIContainerError; -use crate::libs::intertrait::cast::{CastBox, CastRc}; +use crate::private::cast::boxed::CastBox; +use crate::private::cast::rc::CastRc;  use crate::provider::blocking::{IProvider, Providable};  use crate::ptr::SomePtr; @@ -243,7 +244,7 @@ impl DIContainer              )),              #[cfg(feature = "factory")]              Providable::Factory(factory_binding) => { -                use crate::interfaces::factory::IFactory; +                use crate::private::factory::IFactory;                  let factory = factory_binding                      .cast::<dyn IFactory<(Rc<DIContainer>,), Interface>>() @@ -256,7 +257,7 @@ impl DIContainer              }              #[cfg(feature = "factory")]              Providable::DefaultFactory(factory_binding) => { -                use crate::interfaces::factory::IFactory; +                use crate::private::factory::IFactory;                  use crate::ptr::TransientPtr;                  let default_factory = factory_binding @@ -463,7 +464,7 @@ mod tests      #[cfg(feature = "factory")]      fn can_get_factory() -> Result<(), Box<dyn Error>>      { -        use crate::castable_factory::blocking::CastableFactory; +        use crate::private::castable_factory::blocking::CastableFactory;          use crate::ptr::FactoryPtr;          trait IUserManager @@ -547,7 +548,7 @@ mod tests      #[cfg(feature = "factory")]      fn can_get_factory_named() -> Result<(), Box<dyn Error>>      { -        use crate::castable_factory::blocking::CastableFactory; +        use crate::private::castable_factory::blocking::CastableFactory;          use crate::ptr::FactoryPtr;          trait IUserManager diff --git a/src/interfaces/async_injectable.rs b/src/interfaces/async_injectable.rs index 4e614a3..e6a050e 100644 --- a/src/interfaces/async_injectable.rs +++ b/src/interfaces/async_injectable.rs @@ -6,7 +6,7 @@ use crate::dependency_history::IDependencyHistory;  use crate::di_container::asynchronous::IAsyncDIContainer;  use crate::errors::injectable::InjectableError;  use crate::future::BoxFuture; -use crate::libs::intertrait::CastFromSync; +use crate::private::cast::CastFromSync;  use crate::ptr::TransientPtr;  /// Interface for structs that can be injected into or be injected to. diff --git a/src/interfaces/injectable.rs b/src/interfaces/injectable.rs index 6130d2b..b70e13f 100644 --- a/src/interfaces/injectable.rs +++ b/src/interfaces/injectable.rs @@ -5,7 +5,7 @@ use std::rc::Rc;  use crate::dependency_history::IDependencyHistory;  use crate::di_container::blocking::IDIContainer;  use crate::errors::injectable::InjectableError; -use crate::libs::intertrait::CastFrom; +use crate::private::cast::CastFrom;  use crate::ptr::TransientPtr;  /// Interface for structs that can be injected into or be injected to. diff --git a/src/interfaces/mod.rs b/src/interfaces/mod.rs index 9815a11..e7068ad 100644 --- a/src/interfaces/mod.rs +++ b/src/interfaces/mod.rs @@ -2,14 +2,6 @@  pub mod injectable; -#[cfg(feature = "factory")] -#[doc(hidden)] -pub mod any_factory; - -#[cfg(feature = "factory")] -#[doc(hidden)] -pub mod factory; -  #[cfg(feature = "async")]  #[cfg_attr(doc_cfg, doc(cfg(feature = "async")))]  pub mod async_injectable; @@ -108,14 +108,9 @@ pub use di_container::blocking::DIContainer;  pub use syrette_macros::{declare_default_factory, factory};  pub use syrette_macros::{declare_interface, injectable, named}; -#[cfg(feature = "factory")] -#[doc(hidden)] -pub mod castable_factory; -  #[doc(hidden)] -pub mod libs; +pub mod private; -// Private  mod provider;  #[cfg(test)] diff --git a/src/libs/intertrait/LICENSE-APACHE b/src/libs/intertrait/LICENSE-APACHE deleted file mode 100644 index d9a10c0..0000000 --- a/src/libs/intertrait/LICENSE-APACHE +++ /dev/null @@ -1,176 +0,0 @@ -                                 Apache License -                           Version 2.0, January 2004 -                        http://www.apache.org/licenses/ - -   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -   1. Definitions. - -      "License" shall mean the terms and conditions for use, reproduction, -      and distribution as defined by Sections 1 through 9 of this document. - -      "Licensor" shall mean the copyright owner or entity authorized by -      the copyright owner that is granting the License. - -      "Legal Entity" shall mean the union of the acting entity and all -      other entities that control, are controlled by, or are under common -      control with that entity. For the purposes of this definition, -      "control" means (i) the power, direct or indirect, to cause the -      direction or management of such entity, whether by contract or -      otherwise, or (ii) ownership of fifty percent (50%) or more of the -      outstanding shares, or (iii) beneficial ownership of such entity. - -      "You" (or "Your") shall mean an individual or Legal Entity -      exercising permissions granted by this License. - -      "Source" form shall mean the preferred form for making modifications, -      including but not limited to software source code, documentation -      source, and configuration files. - -      "Object" form shall mean any form resulting from mechanical -      transformation or translation of a Source form, including but -      not limited to compiled object code, generated documentation, -      and conversions to other media types. - -      "Work" shall mean the work of authorship, whether in Source or -      Object form, made available under the License, as indicated by a -      copyright notice that is included in or attached to the work -      (an example is provided in the Appendix below). - -      "Derivative Works" shall mean any work, whether in Source or Object -      form, that is based on (or derived from) the Work and for which the -      editorial revisions, annotations, elaborations, or other modifications -      represent, as a whole, an original work of authorship. For the purposes -      of this License, Derivative Works shall not include works that remain -      separable from, or merely link (or bind by name) to the interfaces of, -      the Work and Derivative Works thereof. - -      "Contribution" shall mean any work of authorship, including -      the original version of the Work and any modifications or additions -      to that Work or Derivative Works thereof, that is intentionally -      submitted to Licensor for inclusion in the Work by the copyright owner -      or by an individual or Legal Entity authorized to submit on behalf of -      the copyright owner. For the purposes of this definition, "submitted" -      means any form of electronic, verbal, or written communication sent -      to the Licensor or its representatives, including but not limited to -      communication on electronic mailing lists, source code control systems, -      and issue tracking systems that are managed by, or on behalf of, the -      Licensor for the purpose of discussing and improving the Work, but -      excluding communication that is conspicuously marked or otherwise -      designated in writing by the copyright owner as "Not a Contribution." - -      "Contributor" shall mean Licensor and any individual or Legal Entity -      on behalf of whom a Contribution has been received by Licensor and -      subsequently incorporated within the Work. - -   2. Grant of Copyright License. Subject to the terms and conditions of -      this License, each Contributor hereby grants to You a perpetual, -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable -      copyright license to reproduce, prepare Derivative Works of, -      publicly display, publicly perform, sublicense, and distribute the -      Work and such Derivative Works in Source or Object form. - -   3. Grant of Patent License. Subject to the terms and conditions of -      this License, each Contributor hereby grants to You a perpetual, -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable -      (except as stated in this section) patent license to make, have made, -      use, offer to sell, sell, import, and otherwise transfer the Work, -      where such license applies only to those patent claims licensable -      by such Contributor that are necessarily infringed by their -      Contribution(s) alone or by combination of their Contribution(s) -      with the Work to which such Contribution(s) was submitted. If You -      institute patent litigation against any entity (including a -      cross-claim or counterclaim in a lawsuit) alleging that the Work -      or a Contribution incorporated within the Work constitutes direct -      or contributory patent infringement, then any patent licenses -      granted to You under this License for that Work shall terminate -      as of the date such litigation is filed. - -   4. Redistribution. You may reproduce and distribute copies of the -      Work or Derivative Works thereof in any medium, with or without -      modifications, and in Source or Object form, provided that You -      meet the following conditions: - -      (a) You must give any other recipients of the Work or -          Derivative Works a copy of this License; and - -      (b) You must cause any modified files to carry prominent notices -          stating that You changed the files; and - -      (c) You must retain, in the Source form of any Derivative Works -          that You distribute, all copyright, patent, trademark, and -          attribution notices from the Source form of the Work, -          excluding those notices that do not pertain to any part of -          the Derivative Works; and - -      (d) If the Work includes a "NOTICE" text file as part of its -          distribution, then any Derivative Works that You distribute must -          include a readable copy of the attribution notices contained -          within such NOTICE file, excluding those notices that do not -          pertain to any part of the Derivative Works, in at least one -          of the following places: within a NOTICE text file distributed -          as part of the Derivative Works; within the Source form or -          documentation, if provided along with the Derivative Works; or, -          within a display generated by the Derivative Works, if and -          wherever such third-party notices normally appear. The contents -          of the NOTICE file are for informational purposes only and -          do not modify the License. You may add Your own attribution -          notices within Derivative Works that You distribute, alongside -          or as an addendum to the NOTICE text from the Work, provided -          that such additional attribution notices cannot be construed -          as modifying the License. - -      You may add Your own copyright statement to Your modifications and -      may provide additional or different license terms and conditions -      for use, reproduction, or distribution of Your modifications, or -      for any such Derivative Works as a whole, provided Your use, -      reproduction, and distribution of the Work otherwise complies with -      the conditions stated in this License. - -   5. Submission of Contributions. Unless You explicitly state otherwise, -      any Contribution intentionally submitted for inclusion in the Work -      by You to the Licensor shall be under the terms and conditions of -      this License, without any additional terms or conditions. -      Notwithstanding the above, nothing herein shall supersede or modify -      the terms of any separate license agreement you may have executed -      with Licensor regarding such Contributions. - -   6. Trademarks. This License does not grant permission to use the trade -      names, trademarks, service marks, or product names of the Licensor, -      except as required for reasonable and customary use in describing the -      origin of the Work and reproducing the content of the NOTICE file. - -   7. Disclaimer of Warranty. Unless required by applicable law or -      agreed to in writing, Licensor provides the Work (and each -      Contributor provides its Contributions) on an "AS IS" BASIS, -      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -      implied, including, without limitation, any warranties or conditions -      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -      PARTICULAR PURPOSE. You are solely responsible for determining the -      appropriateness of using or redistributing the Work and assume any -      risks associated with Your exercise of permissions under this License. - -   8. Limitation of Liability. In no event and under no legal theory, -      whether in tort (including negligence), contract, or otherwise, -      unless required by applicable law (such as deliberate and grossly -      negligent acts) or agreed to in writing, shall any Contributor be -      liable to You for damages, including any direct, indirect, special, -      incidental, or consequential damages of any character arising as a -      result of this License or out of the use or inability to use the -      Work (including but not limited to damages for loss of goodwill, -      work stoppage, computer failure or malfunction, or any and all -      other commercial damages or losses), even if such Contributor -      has been advised of the possibility of such damages. - -   9. Accepting Warranty or Additional Liability. While redistributing -      the Work or Derivative Works thereof, You may choose to offer, -      and charge a fee for, acceptance of support, warranty, indemnity, -      or other liability obligations and/or rights consistent with this -      License. However, in accepting such obligations, You may act only -      on Your own behalf and on Your sole responsibility, not on behalf -      of any other Contributor, and only if You agree to indemnify, -      defend, and hold each Contributor harmless for any liability -      incurred by, or claims asserted against, such Contributor by reason -      of your accepting any such warranty or additional liability. - -   END OF TERMS AND CONDITIONS diff --git a/src/libs/intertrait/LICENSE-MIT b/src/libs/intertrait/LICENSE-MIT deleted file mode 100644 index 969d061..0000000 --- a/src/libs/intertrait/LICENSE-MIT +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/src/libs/intertrait/cast/mod.rs b/src/libs/intertrait/cast/mod.rs deleted file mode 100644 index a0342cf..0000000 --- a/src/libs/intertrait/cast/mod.rs +++ /dev/null @@ -1,20 +0,0 @@ -//! Originally from Intertrait by CodeChain -//! -//! <https://github.com/CodeChain-io/intertrait> -//! <https://crates.io/crates/intertrait/0.2.2> -//! -//! Licensed under either of -//! -//! Apache License, Version 2.0 (LICENSE-APACHE or <http://www.apache.org/licenses/LICENSE-2.0>) -//! MIT license (LICENSE-MIT or <http://opensource.org/licenses/MIT>) -//! -//! at your option. -pub mod error; - -mod arc; -mod r#box; -mod rc; - -pub use arc::*; -pub use r#box::*; -pub use rc::*; diff --git a/src/libs/mod.rs b/src/libs/mod.rs deleted file mode 100644 index 8d5583d..0000000 --- a/src/libs/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod intertrait; - -pub extern crate linkme; diff --git a/src/interfaces/any_factory.rs b/src/private/any_factory.rs index e47018b..bdd68a6 100644 --- a/src/interfaces/any_factory.rs +++ b/src/private/any_factory.rs @@ -2,7 +2,7 @@  use std::fmt::Debug; -use crate::libs::intertrait::{CastFrom, CastFromSync}; +use crate::private::cast::{CastFrom, CastFromSync};  /// Interface for any factory to ever exist.  pub trait AnyFactory: CastFrom + Debug {} diff --git a/src/libs/intertrait/cast/arc.rs b/src/private/cast/arc.rs index a1b2c30..7ea8b49 100644 --- a/src/libs/intertrait/cast/arc.rs +++ b/src/private/cast/arc.rs @@ -12,8 +12,8 @@  use std::any::type_name;  use std::sync::Arc; -use crate::libs::intertrait::cast::error::CastError; -use crate::libs::intertrait::{get_caster, CastFromSync}; +use crate::private::cast::error::CastError; +use crate::private::cast::{get_caster, CastFromSync};  pub trait CastArc  { diff --git a/src/libs/intertrait/cast/box.rs b/src/private/cast/boxed.rs index fcd5f70..074346c 100644 --- a/src/libs/intertrait/cast/box.rs +++ b/src/private/cast/boxed.rs @@ -12,8 +12,8 @@  use std::any::type_name; -use crate::libs::intertrait::cast::error::CastError; -use crate::libs::intertrait::{get_caster, CastFrom}; +use crate::private::cast::error::CastError; +use crate::private::cast::{get_caster, CastFrom};  pub trait CastBox  { diff --git a/src/libs/intertrait/cast/error.rs b/src/private/cast/error.rs index d253fc5..c6ed01d 100644 --- a/src/libs/intertrait/cast/error.rs +++ b/src/private/cast/error.rs @@ -1,4 +1,4 @@ -use crate::libs::intertrait::{CasterError, GetCasterError}; +use crate::private::cast::{CasterError, GetCasterError};  #[derive(thiserror::Error, Debug)]  pub enum CastError diff --git a/src/libs/intertrait/mod.rs b/src/private/cast/mod.rs index d2ace67..0b80057 100644 --- a/src/libs/intertrait/mod.rs +++ b/src/private/cast/mod.rs @@ -1,15 +1,3 @@ -//! A library providing direct casting among trait objects implemented by a type. -//! -//! In Rust, an object of a sub-trait of [`Any`] can be downcast to a concrete type -//! at runtime if the type is known. But no direct casting between two trait objects -//! (i.e. without involving the concrete type of the backing value) is possible -//! (even no coercion from a trait object to that of its super-trait yet). -//! -//! With this crate, any trait object with [`CastFrom`] as its super-trait can be cast -//! directly to another trait object implemented by the underlying type if the target -//! traits are registered beforehand with the macros provided by this crate. -//! -//!  //! Originally from Intertrait by CodeChain  //!  //! <https://github.com/CodeChain-io/intertrait> @@ -29,7 +17,10 @@ use ahash::AHashMap;  use linkme::distributed_slice;  use once_cell::sync::Lazy; -pub mod cast; +pub mod arc; +pub mod boxed; +pub mod error; +pub mod rc;  pub type BoxedCaster = Box<dyn Any + Send + Sync>; diff --git a/src/libs/intertrait/cast/rc.rs b/src/private/cast/rc.rs index 8567d1e..11d137a 100644 --- a/src/libs/intertrait/cast/rc.rs +++ b/src/private/cast/rc.rs @@ -12,8 +12,8 @@  use std::any::type_name;  use std::rc::Rc; -use crate::libs::intertrait::cast::error::CastError; -use crate::libs::intertrait::{get_caster, CastFrom}; +use crate::private::cast::error::CastError; +use crate::private::cast::{get_caster, CastFrom};  pub trait CastRc  { diff --git a/src/castable_factory/blocking.rs b/src/private/castable_factory/blocking.rs index f16d86a..abc3e26 100644 --- a/src/castable_factory/blocking.rs +++ b/src/private/castable_factory/blocking.rs @@ -2,8 +2,8 @@ use std::any::type_name;  use std::fmt::Debug;  use std::marker::Tuple; -use crate::interfaces::any_factory::AnyFactory; -use crate::interfaces::factory::IFactory; +use crate::private::any_factory::AnyFactory; +use crate::private::factory::IFactory;  use crate::ptr::TransientPtr;  pub struct CastableFactory<Args, ReturnInterface> diff --git a/src/castable_factory/mod.rs b/src/private/castable_factory/mod.rs index e81b842..e81b842 100644 --- a/src/castable_factory/mod.rs +++ b/src/private/castable_factory/mod.rs diff --git a/src/castable_factory/threadsafe.rs b/src/private/castable_factory/threadsafe.rs index d17a87f..3d2b653 100644 --- a/src/castable_factory/threadsafe.rs +++ b/src/private/castable_factory/threadsafe.rs @@ -2,8 +2,8 @@ use std::any::type_name;  use std::fmt::Debug;  use std::marker::Tuple; -use crate::interfaces::any_factory::{AnyFactory, AnyThreadsafeFactory}; -use crate::interfaces::factory::IThreadsafeFactory; +use crate::private::any_factory::{AnyFactory, AnyThreadsafeFactory}; +use crate::private::factory::IThreadsafeFactory;  use crate::ptr::TransientPtr;  pub struct ThreadsafeCastableFactory<Args, ReturnInterface> diff --git a/src/interfaces/factory.rs b/src/private/factory.rs index c67abd6..8b8354d 100644 --- a/src/interfaces/factory.rs +++ b/src/private/factory.rs @@ -1,6 +1,6 @@  use std::marker::Tuple; -use crate::libs::intertrait::CastFrom; +use crate::private::cast::CastFrom;  use crate::ptr::TransientPtr;  /// Interface for a factory. @@ -15,7 +15,7 @@ where  /// Interface for a threadsafe factory.  #[cfg(feature = "async")]  pub trait IThreadsafeFactory<Args, ReturnInterface>: -    Fn<Args, Output = TransientPtr<ReturnInterface>> + crate::libs::intertrait::CastFromSync +    Fn<Args, Output = TransientPtr<ReturnInterface>> + crate::private::cast::CastFromSync  where      Args: Tuple,      ReturnInterface: 'static + ?Sized, diff --git a/src/private/mod.rs b/src/private/mod.rs new file mode 100644 index 0000000..8b20333 --- /dev/null +++ b/src/private/mod.rs @@ -0,0 +1,15 @@ +//! This module contains items that's not in the public API but is used by the +//! library user with the expansions of the macros in the syrette_macros crate. + +pub mod cast; + +pub extern crate linkme; + +#[cfg(feature = "factory")] +pub mod any_factory; + +#[cfg(feature = "factory")] +pub mod factory; + +#[cfg(feature = "factory")] +pub mod castable_factory; diff --git a/src/provider/async.rs b/src/provider/async.rs index 557617b..da42c7b 100644 --- a/src/provider/async.rs +++ b/src/provider/async.rs @@ -24,19 +24,19 @@ where      #[cfg(feature = "factory")]      Factory(          crate::ptr::ThreadsafeFactoryPtr< -            dyn crate::interfaces::any_factory::AnyThreadsafeFactory, +            dyn crate::private::any_factory::AnyThreadsafeFactory,          >,      ),      #[cfg(feature = "factory")]      DefaultFactory(          crate::ptr::ThreadsafeFactoryPtr< -            dyn crate::interfaces::any_factory::AnyThreadsafeFactory, +            dyn crate::private::any_factory::AnyThreadsafeFactory,          >,      ),      #[cfg(feature = "factory")]      AsyncDefaultFactory(          crate::ptr::ThreadsafeFactoryPtr< -            dyn crate::interfaces::any_factory::AnyThreadsafeFactory, +            dyn crate::private::any_factory::AnyThreadsafeFactory,          >,      ),  } @@ -228,7 +228,7 @@ pub enum AsyncFactoryVariant  pub struct AsyncFactoryProvider  {      factory: crate::ptr::ThreadsafeFactoryPtr< -        dyn crate::interfaces::any_factory::AnyThreadsafeFactory, +        dyn crate::private::any_factory::AnyThreadsafeFactory,      >,      variant: AsyncFactoryVariant,  } @@ -238,7 +238,7 @@ impl AsyncFactoryProvider  {      pub fn new(          factory: crate::ptr::ThreadsafeFactoryPtr< -            dyn crate::interfaces::any_factory::AnyThreadsafeFactory, +            dyn crate::private::any_factory::AnyThreadsafeFactory,          >,          variant: AsyncFactoryVariant,      ) -> Self @@ -354,7 +354,7 @@ mod tests      #[cfg(feature = "factory")]      async fn async_factory_provider_works() -> Result<(), Box<dyn Error>>      { -        use crate::interfaces::any_factory::AnyThreadsafeFactory; +        use crate::private::any_factory::AnyThreadsafeFactory;          use crate::ptr::ThreadsafeFactoryPtr;          #[derive(Debug)] diff --git a/src/provider/blocking.rs b/src/provider/blocking.rs index ebe0c37..ea506ab 100644 --- a/src/provider/blocking.rs +++ b/src/provider/blocking.rs @@ -16,11 +16,9 @@ where      Transient(TransientPtr<dyn Injectable<DIContainerType, DependencyHistoryType>>),      Singleton(SingletonPtr<dyn Injectable<DIContainerType, DependencyHistoryType>>),      #[cfg(feature = "factory")] -    Factory(crate::ptr::FactoryPtr<dyn crate::interfaces::any_factory::AnyFactory>), +    Factory(crate::ptr::FactoryPtr<dyn crate::private::any_factory::AnyFactory>),      #[cfg(feature = "factory")] -    DefaultFactory( -        crate::ptr::FactoryPtr<dyn crate::interfaces::any_factory::AnyFactory>, -    ), +    DefaultFactory(crate::ptr::FactoryPtr<dyn crate::private::any_factory::AnyFactory>),  }  #[cfg_attr(test, mockall::automock, allow(dead_code))] @@ -135,7 +133,7 @@ where  #[cfg(feature = "factory")]  pub struct FactoryProvider  { -    factory: crate::ptr::FactoryPtr<dyn crate::interfaces::any_factory::AnyFactory>, +    factory: crate::ptr::FactoryPtr<dyn crate::private::any_factory::AnyFactory>,      is_default_factory: bool,  } @@ -143,7 +141,7 @@ pub struct FactoryProvider  impl FactoryProvider  {      pub fn new( -        factory: crate::ptr::FactoryPtr<dyn crate::interfaces::any_factory::AnyFactory>, +        factory: crate::ptr::FactoryPtr<dyn crate::private::any_factory::AnyFactory>,          is_default_factory: bool,      ) -> Self      { @@ -239,7 +237,7 @@ mod tests      #[cfg(feature = "factory")]      fn factory_provider_works() -> Result<(), Box<dyn Error>>      { -        use crate::interfaces::any_factory::AnyFactory; +        use crate::private::any_factory::AnyFactory;          use crate::ptr::FactoryPtr;          #[derive(Debug)] diff --git a/src/test_utils.rs b/src/test_utils.rs index db055d4..6fba778 100644 --- a/src/test_utils.rs +++ b/src/test_utils.rs @@ -10,7 +10,7 @@ pub mod subjects      use crate::dependency_history::IDependencyHistory;      use crate::di_container::blocking::IDIContainer;      use crate::interfaces::injectable::Injectable; -    use crate::libs::intertrait::CastFromSync; +    use crate::private::cast::CastFromSync;      use crate::ptr::TransientPtr;      pub trait IUserManager | 
