The "recursion depth" const generic of the Tree* traits has been removed in favor of
explicit newtypes implementing the traits for leaf values Leaf<T> and StrLeaf<T>.
This reduces code duplication, macro usage and complexity.
It enables any recursion depth, does away with most manual tracking of recursion depth
in proc macro attributes, and simplifies code and derive macros, at the expense of having
to wrap leaves in newtypes and having to pass an indices length to TreeKey::nodes().
TreeKey::nodes requires the indices length as a const generic.
get, get_mut, validate proc macro attributes are now Expr
Key::find and Keys::finalize return a Result, not an Option to reduce code duplication
Derive macro lifetime and type param trait bound heuristics have been improved.
They should now yield the correct result in mpst cases.
Internal nodes must always have at least one leaf. Trait impls for [T; 0] and ()
have been removed. The len argument to the traverse_by_key closure is now a
NonZero<usize>.
Added
Leaf to explicitly manage Serialize/Deserialize leaf values.
StrLeaf to manage values via AsRef<str>/TryFrom<&str> (e.g. Enums via strum)
Tree* impls for heterogeneous inline tuples (T0, T1, ...) up to length 8 (also useful
for enum variants)
impl Tree* for &{mut,} T where T: Tree* blanket impls to simplify usage downstream
defer derive attribute to quickly defer to a downstream field without having to write accessors
Metadata now also computes maximum Packed bits usage
... (truncated)
Commits
02b178f Merge pull request #266 from quartiq/release-v0.18.0
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps miniconf from 0.16.3 to 0.18.0.
Changelog
Sourced from miniconf's changelog.
... (truncated)
Commits
02b178f
Merge pull request #266 from quartiq/release-v0.18.09a8323b
release v0.18.0c7e9b11
Merge pull request #265 from quartiq/trees5cf3a73
mqtt: add notes9056ada
mqtt: fir dump list logice61e257
style073b14d
style43409a4
rm trees4367959
walk: restructure39a0240
walk: always indexDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show