Releases: LukasKalbertodt/confique
Releases · LukasKalbertodt/confique
v0.4.0
The main feature of this release is better compatibility with using other derives on your config types, e.g. clap or typed-builder. See the added examples.
- Breaking: rename
PartialtoLayer(includingfrom_partial->from_layer,partial_attr->layer_attr, and more).- The new name more accurately reflects how the type is used most of the time. It is also less awkward to read/use as unlike "partial", "layer" is a proper noun.
- Breaking: require the (unresolved) symbol
Optionto be in scope and refer tostd::option::Optionwherederive(Config)is used.- While technically breaking, this is unlikely to affect anyone, since hardly any Rust code shadows
Option. - This change allows
confiqueto emit justOptionfor the partial type, which in turn enables you to use other derives with it (e.g.clap).
- While technically breaking, this is unlikely to affect anyone, since hardly any Rust code shadows
- Allow multiple
validateattributes on fields (all validations are performed). - Forward field docs to layer type. This is especially useful when using derives on the layer, which read the docs.
- Add examples
clapandbuilder, showing how you can derive useful traits for the layer type. - Add clarification about
ConfigvsDeserializeto the docs. - (Technically breaking) Remove implicit crate feature
serde_yaml. Useyamlinstead!
v0.3.1
v0.3.0
- Breaking: Raise MSRV to 1.61.0
- Breaking:
toml,yamlandjson5are no longer default features (19d9ddc). You now have to manually specify the features you need inCargo.toml. - Breaking: env vars set to an empty string, which fail to deserialize/parse/validate are now treated as not set. This is technically a breaking change, but I think this is the expected behavior and shouldn't affect you. (#39)
- ⭐ Add validation feature (#40)
#[config(validate = path::to::function)] field: u32to call the given function during field deserialization.#[config(validate(!s.is_empty(), "user must not be empty"))] user: Stringis aassert!-style syntax to simple validation checks.- Validation can also be added to full structs.
- See docs and examples for more information!
- Stop including
Error::sourcein theDisplayoutput ofError(d454f0957) - Improve & refactor docs of
derive(Configa bit - Update dependencies (syn to 2.0, heck to 0.5): this shouldn't affect you, except for faster compile times due to smaller dependency tree.
v0.2.6
v0.2.5
- Add
#[config(partial_attr(...))]struct attribute to specify attributes for
the partial type. - Allow "yes" and "no" as values when deserializing
boolfrom env. Also, the
match is done completely case insensitive now, such that e.g. "True", "tRuE"
are accepted now.
0.2.4
- Fixed enum deserialization from env values
v0.2.3
Fixed
- Add
#[allow(missing_docs)]to some generated code to avoid problems in
crates that#[forbid(missing_docs)]globally. - Fix badge in README
Added
- Add short docs to generated module (to explains its purpose and avoid
confusion when people find it in their docs)
Changed
- Internal change that potentially improves compile time a tiny bit.
v0.2.2
Fixed
v0.2.1
Added
parse_envattribute for custom parsing of environment variables (allows you
to load lists and other complex objects from env vars).
(in #22, thanks @cyphersnake)
Changed
- Updated
serde_yamlto 0.9 (this is only an internal dependency).
v0.2.0
Added
- Add support for array default values, e.g.
#[config(default = [1, 2, 3]) - Add support for map default values, e.g.
#[config(default = { "cat": 3, "dog": 5 }) - Add JSON5 support
- Show environment variable key in config template
- Impl
PartialEqfor allmetaitems - Impl
Serializeformeta::Expr
Changed
- Breaking: rename
{toml,yaml}::formattotemplate - Breaking: make
FormatOptionsand somemetatypes#[non_exhaustive] - Move to Rust 2021 (bumps MSRV to 1.56)
- Improved docs
Fixed
- Fix type inference for float default values
- Fix name clash with generated helper functions
- Fix incorrect newlines for string default values in YAML config template
Internal
- Rewrite large parts of the crate, mostly to deduplicate logic
- Add lots of tests