JelteF

JelteF/derive_more

Rust MIT Dev Tools

Some more derive(Trait) options

2.1k stars
148 forks
recent
GitHub +2 / week

2.1k

Stars

148

Forks

88

Open issues

30

Contributors

v2.1.1 22 Dec 2025

AI Analysis

derive_more is a Rust procedural macro library that eliminates boilerplate by deriving common standard traits (Add, Display, From, Into, etc.) for custom structs and enums. It is purpose-built for the newtype pattern and wrapper types, enabling developers to avoid manually implementing traits that would otherwise be tedious but straightforward—benefiting any Rust developer working with simple newtypes or wrapper types, though it is not for complex trait implementations or projects that need f...

Dev Tools Library Discovery value: 4/10
Documentation 8/10
Activity 8/10
Community 8/10
Code quality 8/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

derive-macros rust-codegen trait-derivation boilerplate-reduction newtype-pattern
Actively maintained Well documented MIT licensed Niche/specialized use case Beginner friendly Production ready
Deep Analysis · Based on README and public signals
6d ago

Rust proc-macro library that derives boilerplate for common traits—stable maintenance, narrow but reliable niche.

derive_more is a Rust procedural macro crate that automatically generates implementations of standard library traits (Add, Display, From, Into, Deref, etc.) for user-defined structs and enums, eliminating repetitive boilerplate. It targets Rust developers building libraries and applications who use the newtype pattern or want operator overloading without manual trait implementation. Adoption appears concentrated in the Rust ecosystem as a developer productivity tool rather than a runtime-critical dependency.

Origin

Created in 2016 as a response to Rust's trait-heavy API design and the verbosity of manual trait implementations. The project grew organically within the Rust community and has remained maintained with periodic updates. It reflects a practical pain point in Rust development: the tension between Rust's zero-cost abstractions and the boilerplate required to wrap types.

Growth

Stars accumulated steadily from 2016 to 2024 (reaching ~2,100), then plateaued; only 3 stars added in the past 7 days (as of 2026-07-04). Growth appears mature/stable rather than accelerating. No evidence of viral adoption waves. The project serves a defined use case that does not require exponential growth to remain valuable.

In production

Adoption not verified through explicit case studies or public testimonials in README. Presence on crates.io and docs.rs indicates available as a dependency. 2,118 stars and 148 forks suggest some level of community interest, but stars alone do not confirm production usage. README examples are illustrative, not testimonial. Lack of downstream project visibility in public discussions.

Code analysis
Architecture

Procedural macro crate using `syn` and `quote` for AST manipulation (implied by peers like thiserror, proc-macro-workshop). Likely generates trait implementations via token-level code generation. README explicitly lists 30+ derivable traits across conversion, formatting, error-handling, and operator categories. Appears to use attribute macros for customization (e.g., `#[display("...")]` shown in examples).

Tests

Not documented in README. Build status badge present (CI via GitHub Actions), suggesting tests exist, but coverage metrics and test count not disclosed.

Maintenance

Last push 2026-06-19 (15 days before evaluation date). Active CI badge. Requires Rust 1.81+, indicating ongoing compatibility maintenance. No evidence of inactivity, but low weekly star growth suggests incremental, not accelerated, activity. Appears to be slow-burn maintenance: not abandoned, not ramping.

Honest verdict

ADOPT IF: You write Rust code using newtypes, operator overloading, or type conversions and want to eliminate boilerplate trait implementations. The crate is stable, well-documented, actively maintained, and reduces real developer friction. AVOID IF: You need cutting-edge proc-macro features or experimental Rust unstable features; this crate targets stable Rust and conservative derive patterns. You also may not need it if your types are simple enough that manual implementations are clearer. MONITOR IF: You rely on it in a production library and want to track API changes; the slow growth rate suggests low velocity in new feature development, which may be intentional design (focused scope) rather than abandonment.

Independent dimensions

Mainstream potential

4/10

Technical importance

6/10

Adoption evidence

3/10

Risks
  • Slow development velocity: 3 stars in 7 days and limited recent commits suggest low contributor activity. If a critical bug emerges, response time may lag behind high-velocity projects.
  • Proc-macro complexity: Procedural macros are notoriously difficult to debug and maintain. Without access to the source code, we cannot verify implementation rigor or edge-case handling.
  • Dependency lock-in: Projects that heavily use derive_more for operator overloading may face difficulty refactoring if the library stops being maintained, since trait implementations become scattered across generated code.
  • Rust version churn: Requires Rust 1.81+. Future breaking changes in Rust's proc-macro API could require maintenance effort; no evidence of a large maintainer team to absorb that burden.
  • Limited real-world adoption evidence: No public examples of large-scale production use disclosed. Adoption may be wider than apparent, but unverified high-profile projects would strengthen confidence.
Prediction

derive_more will likely remain stable but slow-growing, serving as a reliable mid-tier productivity tool in the Rust ecosystem. Unlikely to see explosive adoption or displacement by alternatives, but also unlikely to be abandoned given its niche fit and low maintenance burden. May see incremental trait additions as Rust's std library evolves, but no paradigm shifts expected.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Rust
100%
Shell
0%

Information

Language
Rust
License
MIT
Last updated
3w ago
Created
125mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

dtolnay

dtolnay/thiserror

thiserror is a derive macro for implementing Rust's std::error::Error trait...

5.5k Rust Dev Tools
idanarye

idanarye/rust-typed-builder

A Rust proc-macro library that generates compile-time type-checked builder...

1.2k Rust Dev Tools
dtolnay

dtolnay/async-trait

async-trait is a Rust macro that enables async functions in trait definitions...

2.2k Rust Dev Tools
dtolnay

dtolnay/proc-macro-workshop

An educational workshop teaching Rust procedural macro development through five...

4.8k Rust Education
dtolnay

dtolnay/case-studies

A specialized educational repository that dissects tricky Rust code patterns...

2k Rust Education
vs. alternatives
thiserror (dtolnay, 5,471 stars)

Narrower scope: thiserror focuses only on Error trait derivation with custom error messages. derive_more covers 30+ traits. thiserror likely dominates error-handling use cases; derive_more is broader but less specialized.

typed-builder (idanarye, 1,180 stars)

Orthogonal: typed-builder generates type-safe builders, mainly for struct construction. derive_more covers operators and type conversions. Different problems solved; not directly competing.

syn (dtolnay, 3,339 stars)

Foundational dependency: syn is infrastructure for proc macros. derive_more likely depends on syn. Not a competitor; syn enables tools like derive_more.

async-trait (dtolnay, 2,163 stars)

Specialized: async-trait derives async fn in traits. derive_more does not solve async problems. Complementary, not competing.

derive-new (mentioned in README)

Focused: derive-new specializes in constructor derivation. derive_more includes Constructor but also 30+ other traits. derive_more broader; derive-new deeper for constructors.