1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
//! Shaku is a compile time dependency injection library. It can be used directly or through //! integration with application frameworks such as [Rocket] (see //! [`shaku_rocket`]). //! //! # Getting started //! See the [getting started guide] //! //! # Crate features //! By default shaku is thread-safe and exposes macros, but these can be disabled by opting out of //! the following features: //! //! - `thread_safe`: Requires components to be `Send + Sync` //! - `derive`: Uses the `shaku_derive` crate to provide proc-macro derives of `Component` and //! `Provider`, and the `module` macro. //! //! [Rocket]: https://rocket.rs //! [`shaku_rocket`]: https://crates.io/crates/shaku_rocket //! [getting started guide]: guide/index.html // This lint is ignored because proc-macros aren't allowed in statement position // (at least until 1.45). Removing the main function makes rustdoc think the // module macro is a statement instead of top-level item. #![allow(clippy::needless_doctest_main)] // Modules #[macro_use] mod trait_alias; mod component; mod module; mod parameters; mod provider; pub mod guide; // Reexport proc macros #[cfg(feature = "derive")] pub use {shaku_derive::module, shaku_derive::Component, shaku_derive::Provider}; // Expose a flat module structure pub use crate::{component::*, module::*, provider::*};