3 releases (breaking)
0.3.0 | Oct 2, 2023 |
---|---|
0.2.0 | Sep 27, 2023 |
0.1.0 | Sep 26, 2023 |
#552 in Configuration
Used in cazzo
24KB
523 lines
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. ForVec
andString
appended values are added to the end as expected.#[figa(update)]
tells the codegen that field must be updated. This means thatFiga::update
will be called on for it recursively. For collections this means that values with same keys or indices are updated usingFiga
trait 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.
Dependencies
~100–690KB
~12K SLoC