use crate::injector::Injector;
use crate::{Error, runtime::Shared};
use std::future::Future;
use std::pin::Pin;
#[cfg(not(feature = "thread-safe"))]
pub type ModuleLifecycleFuture = Pin<Box<dyn Future<Output = Result<(), Error>> + 'static>>;
#[cfg(feature = "thread-safe")]
pub type ModuleLifecycleFuture = Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'static>>;
#[cfg(not(feature = "thread-safe"))]
mod trait_non_thread_safe;
#[cfg(feature = "thread-safe")]
mod trait_thread_safe;
#[cfg(not(feature = "thread-safe"))]
pub use trait_non_thread_safe::Module;
#[cfg(feature = "thread-safe")]
pub use trait_thread_safe::Module;
#[cfg(test)]
mod tests;