Skip to content

Chore(deps): Update educe requirement from 0.6.0 to 0.7.3#2033

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/educe-0.7.3
Open

Chore(deps): Update educe requirement from 0.6.0 to 0.7.3#2033
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/educe-0.7.3

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 6, 2026

Copy link
Copy Markdown
Contributor

Updates the requirements on educe to permit the latest version.

Changelog

Sourced from educe's changelog.

Changelog: 0.5.11 to 0.7.0

This document compares v0.5.11 with the current 0.7.0 worktree. It focuses on changes that can affect users of the crate. Internal refactoring details are not listed.

Breaking and Upgrade Notes

  • The minimum supported Rust version was raised from Rust 1.60 to Rust 1.89.
  • The crate now uses the Rust 2024 edition.
  • Automatic trait bounds changed a lot. The generated where clauses are now based on the field types that the generated code really uses. This can remove old unnecessary bounds, but it can also change the public bounds of generated impls.
  • Precise generated bounds can show private field types in docs, compiler errors, or public where clauses. If your type is public, check that this is acceptable for your API.
  • Use bound(*) when you want Educe to add Param: Trait for every generic type parameter, similar to the built-in derives. This option was added after 0.5.11.
  • Eq is now treated as a marker trait. Field-level equality settings such as ignore and method should be written on PartialEq, not on Eq.
  • Into derives now generate impl From<YourType> for Target by default. Calling value.into() still works through Rust's blanket impl, and Target::from(value) also works. Use #[educe(Into(Target, into))] if you need a direct one-way Into impl instead.
  • If you already wrote your own From<YourType> for Target impl, check for conflicts with the new default Into behavior.

Trait Bounds

  • Automatic bounds are more precise and more clearly documented.
  • Ignored fields and fields handled by a custom method do not add automatic bounds for that trait.
  • Field types without generic parameters do not add constant bounds.
  • Common standard library wrapper types are handled more carefully. For example, Option<T> can add T: Trait, and Vec<Box<T>> can add only the needed inner bound.
  • Types that always implement a trait, such as PhantomData, raw pointers, function pointers, and selected standard library types, can avoid unnecessary bounds.
  • Other field types use precise bounds such as Wrapper<T>: Clone instead of always falling back to T: Clone.
  • Self-recursive generic types are handled better. For example, a type like List<T> containing Box<List<T>> can avoid trait solver overflow by adding bounds on the type parameters.
  • Mutually recursive generic types are still a known limitation. Use bound(*) or a custom bound(...) for those cases.
  • Related traits can inherit generated predicates when they are derived together by Educe: Copy from Clone, Eq and PartialOrd from PartialEq, and Ord from Eq and PartialOrd.
  • Explicit bound(...) values are used as written. If an explicit bound does not satisfy a required supertrait, the compiler will ask for the missing bound.
  • Older cases where bounds could leak from one generated impl into another were fixed.

Trait Behavior

  • Debug with explicit field methods was fixed for generic types and now avoids more name clashes with user code.
  • Debug output handles field names as strings. Tuple field names and custom names are printed more correctly, including tuple indexes such as 0.
  • Copy, Clone, Eq, PartialOrd, and Ord derive behavior is more consistent with their real Rust trait relationships.
  • Copy can work with an Educe-generated or built-in Clone impl, while still respecting the bounds that Copy really needs.
  • PartialOrd and Ord work together more consistently. When both are derived, PartialOrd can follow Ord field settings such as ignore, rank, and method so that partial_cmp and cmp stay consistent.
  • When both comparison traits are derived, Ord can follow PartialOrd field settings for ignore and rank. A PartialOrd method cannot be reused for Ord because it returns Option<Ordering>.
  • Ord can be built when the PartialOrd feature is not enabled.
  • Into supports the new default From generation for concrete target types and for generic target types whose type parameters are covered by the target type.

Generated Code and Lints

  • Generated impls are marked with #[automatically_derived].
  • Lint-level attributes from the input type, such as allow, expect, warn, and deny, are copied to generated impls. This makes generated code behave more like built-in derives under strict lint settings.
  • Diagnostics for invalid attributes and helper parsing were improved.

Documentation and Safety Notes

  • The README now has a dedicated Trait Bounds section that explains the automatic bound rules, bound inheritance, bound(*), and known limitations.
  • Documentation for unsafe union derives is clearer. It now states that Debug, PartialEq, and Hash union impls may read, compare, or hash the whole union memory, including padding bytes.

... (truncated)

Commits
  • 8d446b3 bump version
  • 843a61d allow clippy lints on the generated Debug/Clone method markers
  • 5366aa5 bump version
  • 4a38810 remove unnecessary #[allow(dead_code)]
  • f8df4af mark custom Debug/Clone methods as used to avoid dead-code warnings
  • 607e0d8 bump version
  • 3fa27c1 fix unsound enum discriminant comparison in PartialOrd/Ord (solve #36)
  • 4383cea add SAFETY comments for all unsafe blocks (solve #45)
  • 0234668 add CHANGELOG files (written by GPT-5.5)
  • 6783890 fix min-dependencies
  • Additional commits viewable in compare view

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 show <dependency name> 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)

Updates the requirements on [educe](https://github.com/magiclen/educe) to permit the latest version.
- [Changelog](https://github.com/magiclen/educe/blob/master/CHANGELOG-0.5.11-to-0.7.0.md)
- [Commits](magiclen/educe@v0.6.0...v0.7.3)

---
updated-dependencies:
- dependency-name: educe
  dependency-version: 0.7.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added the dependencies upgrades to dependencies label Jul 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies upgrades to dependencies

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants