Figa - layered configuration library.
Augments serde deserialization with customizeable updating mechanism.
Usage
This crate provides Figa trait to update values using serde deserialization.
The trait uses single method update.
The magic happens in derive macro. Enable "derive" feature to make it re-exported from figa crate, or use figa-proc crate directly.
Derive macro currently supports only structs without generics.
User may customize update behavior for struct fields using #[figa(*)] attribute:
#[figa(replace)]tells the codegen that field's value must be replaced with the new one.#[figa(append)]works for collections and tells the codegen that this field is a collection and new elements must be added. In case of maps, if value with the same key was present it will be replaced with new one. ForVecandStringappended values are added to the end as expected.#[figa(update)]tells the codegen that field must be updated. This means thatFiga::updatewill be called on for it recursively. For collections this means that values with same keys or indices are updated usingFigatrait and new values are appended.
Optional load feature
provides opinionated way to load configuration from .toml files in predefined set of locations.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contributions
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.