All notable changes to this project will be documented in this file.
0.3.0 - 2024-10-18
- Breaking: Raise MSRV to 1.61.0
- Breaking:
toml
,yaml
andjson5
are 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: u32
to call the given function during field deserialization.#[config(validate(!s.is_empty(), "user must not be empty"))] user: String
is 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::source
in theDisplay
output ofError
(d454f0957
) - Improve & refactor docs of
derive(Config
a 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.
0.2.6 - 2024-10-10
- Fix compile errors when using
confique
derive without havingserde
in your direct dependencies (see #38). - Update
toml
dependency to 0.8 - Fix some typos in docs
0.2.5 - 2023-12-10
- Add
#[config(partial_attr(...))]
struct attribute to specify attributes for the partial type. - Allow "yes" and "no" as values when deserializing
bool
from env. Also, the match is done completely case insensitive now, such that e.g. "True", "tRuE" are accepted now.
0.2.4 - 2023-07-02
- Fixed enum deserialization from env values
0.2.3 - 2023-03-10
- Add
#[allow(missing_docs)]
to some generated code to avoid problems in crates that#[forbid(missing_docs)]
globally. - Fix badge in README
- Add short docs to generated module (to explains its purpose and avoid confusion when people find it in their docs)
- Internal change that potentially improves compile time a tiny bit.
0.2.2 - 2022-11-25
- Use fully qualified paths for all symbols emitted by the derive macro.
Before this, the derive would throw errors if you shadowed any of the symbols
Result
,Option
,Ok
,None
orSome
. A test has been added to make sure this does not happen again in the future. (Partially in #23, thanks @aschey)
0.2.1 - 2022-11-06
parse_env
attribute for custom parsing of environment variables (allows you to load lists and other complex objects from env vars). (in #22, thanks @cyphersnake)
- Updated
serde_yaml
to 0.9 (this is only an internal dependency).
0.2.0 - 2022-10-21
- 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
PartialEq
for allmeta
items - Impl
Serialize
formeta::Expr
- Breaking: rename
{toml,yaml}::format
totemplate
- Breaking: make
FormatOptions
and somemeta
types#[non_exhaustive]
- Move to Rust 2021 (bumps MSRV to 1.56)
- Improved docs
- 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
- Rewrite large parts of the crate, mostly to deduplicate logic
- Add lots of tests
0.1.4 - 2022-10-14
- Derive attribute
env
can now be used together withdeserialize_with
(#2)
0.1.3 - 2022-04-07
- Derive macro does not product unparsable output anymore if the visibility
modifier of the struct is
pub
orpub(in path)
.
- The output of
toml::format
now emits empty lines above nested objects in a more useful manner.
0.1.2 - 2022-03-30
- Fixed output of
toml::format
when leaf fields were listed afternested
fields in a configuration.
0.1.1 - 2021-11-03
deserialize_with
attribute which is (basically) forwarded toserde
- Improve some spans in error messages
- Everything.