Unreleased
v0.4.1 - 2022-10-30
Bug Fixes
- remove unused Rust feature flag
Build System/Dependency Changes
- bump versions to 0.4.1
Code Refactoring
- add dependency history type
- improve injectable macro error messages
- add Debug implementations for castable factories
- rename DI container binding map to DI container storage
- reduce DI container coupling
- improve internals of macros & add unit tests
- reorganize DI containers
- remove relying on Rust nightly for better handling of features
- clarify binding builder to_factory signature
- improve management of feature specific items
- stop using the async_trait macro for AsyncInjectable
- shorten async binding builder trait bounds
Code Testing
- add binding configurator unit tests
- add castable factory unit tests
- add provider unit tests
- add binding builder unit tests
- add more unit tests
- fix the can bind to factory unit tests
Documentation Changes
- add sealed notices to DI container interfaces
- add coverage badge
- fix the example usage in the readme
- fix unresolved links to DI container types
- fix spelling mistakes in blocking & async DI containers
- add binding builder examples
- add async binding builder examples
- remove unnecessary feature notices
BREAKING CHANGE
Binding builders & configurators now take dependency history type arguments, the DetectedCircular variant of InjectableError now contains a dependency history field & the injectable traits take dependency history instead of a Vec
You now have to import the DI containers's interfaces to use the DI containers's methods
DIContainer, AsyncDIContainer & the binding structs have been relocated
v0.4.0 - 2022-10-01
Bug Fixes
- prevent problems caused by non send + sync traits
- add missing semicolon in the factory macro
Build System/Dependency Changes
- bump versions to 0.4.0
- add required features for the async-factory example
- improve async dependencies
Chores
- remove repetition of allowing clippy::module_name_repetitions
Code Refactoring
- remove unused import in DI container module
- remove IFactory from public API
- remove repetition of declaring factory interfaces
- reorganize modules in the macros crate
- make the async & non-async DI container bind methods must_use
- add put factory return types in TransientPtr automatically
- prevent look for default factory without factory feature
- make async DI container be used inside of a Arc
- make DI container be used inside of a Rc
- improve DI container cast errors
- remove braces from expected injectable macro input
- rename the factory macro flag 'async' to 'threadsafe'
- remove unused import of ItemTrait
- improve async DI container cast errors
- replace arc cast panic with an error
- limit FactoryPtr & AnyFactory to the factory feature
- make DI container have single get function
- move specifying binding scope to a binding scope configurator
- improve private method names & clean up InjectableImpl
Code Testing
- move some factory function types to type aliases
Documentation Changes
- add v0.4.0 to changelog
- improve item links in the injectable macro
- fix unresolved link to TransientPtr
- make IFood in async example Send + Sync
- fix ambiguous link to the factory macro
- add missing modules in the async example
- add async support to readme
- improve & add examples
- use anyhow in the unbound example
- correct the example in the readme
- add CI shield to readme
- update the DI container example
- remove license shield from readme
Features
- add bind async default factories to async DI container
- add binding async factories to async DI container
- add factory macro async flag
- allow factories to access async DI container
- allow factories access to DI container
- add a threadsafe flag to the declare_default_factory macro
- implement async functionality
- implement named bindings
Style Improvements
- add rustfmt config options
BREAKING CHANGE
The to_default_factory method of the blocking and async DI containers now expect a function returning another function
The to_factory & to_default_factory methods of AsyncBindingBuilder now expects a function returning a factory function
The async DI container is to be used inside of a Arc & it also no longer implements Default
Factory types should now be written with the Fn trait instead of the IFactory trait and the to_factory & to_default_factory methods of BindingBuilder now expect a function returning a factory function
The DI container is to be used inside of a Rc & it also no longer implements Default
The injectable macro no longer expects braces around it's flags
FactoryPtr has been limited to the factory feature
The DI container get_singleton & get_factory functions have been replaced by the get function now returning a enum
Specifying the scope of a DI container binding is now done with a binding scope configurator
v0.3.0 - 2022-08-21
Bug Fixes
- make DI container get_factory calls in the injectable macro valid
Build System/Dependency Changes
- bump versions to 0.3.0
- change license in manifests to LGPL-2.1-only
Chores
- change license to MIT or Apache-2.0
Code Refactoring
- change errors to be more sane
- make the declare_default_factory macro take a ty
- only re-export DIContainer
- add Cargo feature for preventing circular dependencies
- move creating a dependency trace to it's own function
- hide AnyFactory from docs
- limit the factory macro to the factory feature
Code Testing
- correct DI container bind tests
- reduce repetition in DI container tests
Documentation Changes
- add v0.3.0 to changelog
- change project descriptions to describe it as a framework
- fix declare_default_factory example
- add injection of 3rd-party structs & traits to features list
- add example for displaying a unbound interface error
- simplify with-3rd-party example
- add a example that uses a 3rd party library
- fix IFactory example use statement
- improve the factory example
- correct examples
- fix DI container module documentation
- add license shield to readme
- add factory feature notices
Features
- allow bind interface to default factory
- prevent binding the same interface more than once
- add detection and prevention of circular dependencies
- add hide impl of Injectable from documentation
BREAKING CHANGE
Major improvements have been made to error types and the error_stack crate is no longer used
Only DIContainer is re-exported from the di_container module
The 'to' and 'to_factory' methods of BindingBuilder now return 'Result'
v0.2.1 - 2022-08-01
Build System/Dependency Changes
- bump versions to 0.2.1
Documentation Changes
- add v0.2.1 to changelog
- add doc comments & deny missing docs
- add contributing section in readme
v0.2.0 - 2022-07-31
Build System/Dependency Changes
- bump versions to 0.2.0
- add docs.rs all-features flag
Code Refactoring
- tidy up DI container internals
- add Intertrait cast error
- rename InterfacePtr to TransientPtr
- add back Intertrait tests & Rc support
- hide castable factory from docs
- clean up intertrait lib
Documentation Changes
- add v0.2.0 to changelog
- add binding singletons to list of features
- add asynchronous functionality to todo
- add generics support to list of features
Features
- add injecting singletons into constructors
- implement binding singletons
- add support for generics
Performance Improvements
- use ahash in DI container
BREAKING CHANGE
InterfacePtr has been renamed to TransientPtr
v0.1.1 - 2022-07-22
Build System/Dependency Changes
- bump versions to 0.1.1
- add local path to macros dependency
Code Refactoring
- make factories an optional feature
- re-export dependency of error_stack
- reorganize folder hierarchy
Documentation Changes
- add v0.1.1 to changelog
- add optional factory feature name in readme
- add changelog
- fix typo in example in readme
- add shields, examples & more to readme
- rename example folder to examples
- use syrette from crates.io in example
v0.1.0 - 2022-07-20
Build System/Dependency Changes
- use syrette_macros from crates.io
Chores
- add repository & keywords to Cargo manifests
Code Refactoring
- use aggressive clippy linting
- remove unused intertrait code
- rename the castable_to macro to declare_interface
- reduce the capabilities of the castable_to macro
- reorganize and improve macros
- use common pointer type aliases
- add dedicated interface & error modules
- move injectable type provider to own file
Code Testing
- add DI container unit tests
Documentation Changes
- replace symlinked readme with a copy
- add readme symlink to syrette
- improve and clean up doc comment examples
- split example into multiple files
- correct declare_interface macro example
- remove the crate root example
- add example
- add documentation comments
- add readme
Features
- add binding factories to DI container
- add DI container
Style Improvements
- group imports
- add rustfmt config