Expand description
§About Silhouette
Silhouette implements a simple service container in Rust for dependency injection.
It not only provides a Container struct for local usage, but also a static interface (under facade::Container) for easily managing dependencies throughout your application.
It’s heavily inspired by Laravel’s Service Container.
§Usage
use silhouette::facade::Container;
struct DBPool {}
struct DBConnection {}
// will always use the same pool
Container::singleton(&|_| DBPool::new())?;
// will resolve a new connection each time
Container::bind(&|container| -> DBConnection {
let shared_pool = container.resolve::<DBPool>().unwrap();
shared_pool.get_conn()
})?;
// somewhere else in your app...
let connection: DBConnection = Container::resolve()?;§Features
nightly- Automatically resolves types that implementDefault. Requires the nightly compiler.
Modules§
- facade
- A static interface for the service container.
Structs§
- Container
- The service container.
Enums§
- Error
- An error that can occur when interacting with the container.