Skip to content

Bump educe from 0.7.6 to 0.8.0 - #437

Closed
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/cargo/educe-0.8.0
Closed

dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/cargo/educe-0.8.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 16, 2026

Copy link
Copy Markdown
Contributor

Bumps educe from 0.7.6 to 0.8.0.

Changelog

Sourced from educe's changelog.

Changelog: 0.7.6 to 0.8.0

This document compares v0.7.6 (8b73bc2) with 0.8.0 and focuses on changes that affect crate users. Several correctness fixes change generated bounds, conversion signatures, or method resolution, so they are released as 0.8.0.

Breaking and Upgrade Notes

  • Empty attribute parameter lists now follow the same validation rules as bare attributes. For example, a field-level #[educe(Clone())] that was previously accepted without effect is now rejected, just like #[educe(Clone)]. Remove such attributes or provide supported parameters; empty lists remain accepted where the bare attribute is allowed. Deref and DerefMut are the exception: they take no parameters at all, so #[educe(Deref())] is rejected even though #[educe(Deref)] is accepted.

  • Associated types that share the source type's name now receive precise field-type bounds instead of being treated as recursive. For example, cloning a field T::Value inside Value<T> requires T::Value: Clone instead of T: Clone. If a custom method relied on the old parameter bound, add it explicitly with bound(...).

  • For structs and enums with any generic parameters, a nonempty custom Copy(bound(...)) disables the whole-value Clone shortcut. clone and clone_from use the field-wise implementation, so Clone stays available even when the custom Copy conditions do not hold. This includes lifetime bounds and const parameters that do not appear in fields. Field clone side effects can become observable even if the custom bound is redundant; the performance difference has not been measured. Other Copy bound modes and union cloning keep their existing behavior.

  • Automatic Eq now requires every ordinary struct or enum field to implement Eq, including concrete fields such as f64 and fields that use const generic parameters. A type that previously compiled with an ordinary non-Eq field can now fail to compile. If an external, manually written PartialEq implementation provides an equivalence relation without requiring every field to implement Eq, use explicit Eq(bound(false)), Eq(bound(*)), or custom predicates. The author remains responsible for reflexive, symmetric, and transitive equality.

  • When Educe derives PartialEq and Eq together, fields marked PartialEq(ignore) or PartialEq(method = ...) are excluded from automatic Eq bounds and field checks. Add explicit bounds if another custom method relied on an automatically added T: Eq. Educe cannot inspect an external PartialEq implementation, so its fields are checked as ordinary fields.

  • Into targets now preserve explicit reference lifetimes, mutability, and reference depth. For example, Into(&'a mut T) keeps &'a mut T instead of becoming &'static T. Adjust target declarations or caller types if they relied on the old normalization. Omitted lifetimes on target references still default to 'static.

  • Self in custom Into method paths now refers to the source type, including its generic arguments, even when the generated implementation is From for the target type. Use an explicit target type path if the method belongs to the target.

  • Self in the source type's original generic bounds and where clause stays tied to the source when those bounds are moved into From. Custom bound(...) predicates remain verbatim: their Self refers to the target in From and to the source in a direct Into implementation. Put intended target constraints in an explicit bound(...).

  • Automatic bounds for HashMap and HashSet with an explicit hasher now use the complete container type. This preserves the container's actual requirements, such as a default hasher for Default, without requiring the hasher to implement Debug for formatting. Add explicit predicates if custom methods relied on former per-parameter bounds such as T: Clone.

  • Fields that use const generic parameters now participate in automatic bound inference. This can make a generated implementation conditional where it was previously unconditional.

  • When Copy and Clone are derived together and a field uses a const generic parameter, cloning now follows the field methods instead of the bitwise-copy shortcut. Field clone and clone_from side effects can become observable; the performance difference has not been measured.

  • Custom method paths now preserve qualified types and avoid capture by generated local variables. Code that depended on a dropped qualifier or accidental name capture can resolve to a different method or fail to compile. Write the intended function as an explicit path.

  • A #[repr(packed)] or #[repr(packed(N))] type now has each field it reads copied into a temporary before being borrowed, so every field the generated code reads must implement Copy. Every packing level is treated the same way, matching the built-in derives, because a field's alignment cannot be worked out from the type syntax.

... (truncated)

Commits
  • 33c8577 drop the changelogs of the releases before 0.8.0
  • e91d6b4 share the repeated diagnostics and name the ambiguous Into field error
  • 8db38f5 correct the union Clone bound and the Default expression descriptions
  • 88f6e56 avoid name clashes with generated identifiers and fix associated type bounds
  • bbea893 cover bound(*) and bound(false) for every trait
  • 4dc0d12 cover the Ord field attributes an enum PartialOrd falls back to
  • a9ebd7a cover the full feature and keep the two documents in step
  • 62170a9 walk a field type once when looking for generic parameters
  • 7dbc359 share the Debug field loop between its output shapes
  • 3eb8924 share the named and unnamed field handling
  • Additional commits viewable in compare view

Dependabot compatibility score

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)

Bumps [educe](https://github.com/magiclen/educe) from 0.7.6 to 0.8.0.
- [Changelog](https://github.com/magiclen/educe/blob/master/CHANGELOG-0.7.6-to-0.8.0.md)
- [Commits](magiclen/educe@v0.7.6...v0.8.0)

---
updated-dependencies:
- dependency-name: educe
  dependency-version: 0.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file rust Pull requests that update rust code labels Sep 16, 2026
@dependabot @github

dependabot Bot commented on behalf of github Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #438.

@dependabot dependabot Bot closed this Sep 17, 2026
@dependabot
dependabot Bot deleted the dependabot/cargo/educe-0.8.0 branch September 17, 2026 04:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants