diff options
author | HampusM <hampus@hampusmat.com> | 2022-11-19 15:45:12 +0100 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2022-11-19 15:45:12 +0100 |
commit | 9f27a925bd323e8e0864bedeb33a3c6953517ea1 (patch) | |
tree | ea5d8faaed82c58fa037fa377173bb365e1cd697 /src | |
parent | d99cbf9fa95856cbc14a3217e1cd3f13aeb2e0b3 (diff) |
refactor: reorganize non-public API items
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 |