Crates.io | ferrunix |
lib.rs | ferrunix |
version | 0.3.2 |
source | src |
created_at | 2024-10-09 07:07:48.265781 |
updated_at | 2024-11-21 19:33:55.222888 |
description | A lightweight run-time dependency injection framework for Rust |
homepage | https://github.com/Leandros/ferrunix |
repository | https://github.com/Leandros/ferrunix |
max_upload_size | |
id | 1402087 |
size | 50,740 |
[dependencies]
ferrunix = "0.3"
Compiler support: requires rustc 1.67.1+
Check out the User Guide.
Due to how the various features affect the public API of the library, the documentation is provided for each major feature separately.
Feature Flags | Link to Documentation |
---|---|
none |
link to docs |
multithread |
link to docs |
tokio |
link to docs |
Can register and inject any type (incl. generics, types must be Send
if the
multithread
feature is enabled, and Send + Sync
if tokio
is enabled).
Simple and elegant Rust API; making the derive macro purely optional.
Different dependency lifetimes:
Dependency resolution happens at run time, making it possible to dynamically register types.
Injection of concrete value types (T
), Box<T>
, Rc<T>
, and Arc<T>
.
Derive macro (#[derive(Inject)]
) to simplify registration.
Automatic registration of types, thanks to
inventory
.
One global registry; with support for multiple sub-registries.
Ferrunix has the following features to enable further functionality.
Features enabled by default are marked with *
.
multithread
: Enables support for accessing the registry from multiple
threads. This adds a bound that all registered types must be Send
.derive
(*
): Enables support for the #[derive(Inject)]
macro.tokio
: Enables support for async
constructors. Bumps the MSRV up to
1.75.0
because some of the internal traits require
RPITIT.tracing
: Enables support for tracing and annotates all public functions with
tracing::instrument
.