Skip to content

m1guelpf/silhouette

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Silhouette

A simple dependency injection library for Rust

crates.io download count badge docs.rs

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.

Getting Started

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()?;

Refer to the documentation on docs.rs for detailed usage instructions.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

A simple dependency injection library for Rust

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Languages