# Hypospray
A lightweight dependency injection library
[](https://crates.io/crates/hypospray)
[](#license)
## What is Dependency Injection?
[5-minute introduction.](https://youtu.be/IKD2-MAkXyQ)
## Goals
* Focused, reusable, testable components
* A dependency graph checked at compile time
## Cyclic Dependency
DI is not for circular dependency resolution: [Circular dependency is something that is to be avoided][di post].
## Quick-start
### Documentation
* [master](https://docs.rs/hypospray)
### Version Info.
```sh
$ rustup -V
rustup 1.0.0 (17b6d21 2016-12-15)
$ rustc -V
rustc 1.16.0-nightly (7821a9b99 2017-01-23)
```
### Usage
To use `hypospray`, add the following to `Cargo.toml`:
```toml
[dependencies]
hypospray = "0.1.0"
hypospray_extensions = "0.1.0"
```
Then, add the following to your crate root:
```rust
#![feature(plugin)]
#![plugin(hypospray_extensions)]
extern crate hypospray;
..
```
## License
Licensed under either:
* Apache License, Version 2.0, ([LICENSE-APACHE](http://www.apache.org/licenses/LICENSE-2.0))
* MIT license ([LICENSE-MIT](http://opensource.org/licenses/MIT))
[di post]: http://misko.hevery.com/2008/08/01/circular-dependency-in-constructors-and-dependency-injection/