NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1866 most downloaded on crates.io
A procedural macro helper for easily writing derive macros for enums.
Last release 2 months ago
24 Jul 2026
Ships fairly regularly
a new release about every 5 months
Nearly every release is documented
notes for 32 of 32 stable releases
2 versions withdrawn
withdrawn after publishing
8 years old
34 releases · first in 2018
Update syn dependency to 3. ( #49 , thanks @cuviper )
Enable release immutability .
One column per quarter.
Use #[automatically_derived] on generated impls to improve coverage support.
#[automatically_derived] on generated impls to improve coverage support.Disable derive feature of syn dependency.
derive feature of syn dependency.Fix "overflow evaluating the requirement" error when the first variant and the other variant have the same type.
Fix "overflow evaluating the requirement" error when the first variant and the other variant have the same type.
Fix a bug introduced in 0.14.0.
This is considered as a breaking change because it will no longer allow a comma after the trait definition.
Allow quote variables in the trait definition of quick_derive! macro.
This is considered as a breaking change because it will no longer allow a comma after the trait definition.
Change the second argument of derive_trait and EnumImpl::from_trait from syn::Path to &syn::Path.
Fix "overflow evaluating the requirement" error on recursive structures without type parameters. (#47)
Note: This release has been yanked due to a bug fixed in 0.14.1.
Allow quote variables in the trait definition of quick_derive! macro.
This is considered as a breaking change because it will no longer allow a comma after the trait definition.
Change the second argument of derive_trait and EnumImpl::from_trait from syn::Path to &syn::Path.
Fix "overflow evaluating the requirement" error on recursive structures without type parameters. (#47)
Fix diagnostic regression introduced in 0.13.0.
Fix build error from dependency when built with -Z minimal-versions .
-Z minimal-versions.Update syn dependency to 2. This increase the minimum supported Rust version from Rust 1.31 to Rust 1.56.
syn dependency to 2. This increase the minimum supported Rust version from Rust 1.31 to Rust 1.56.Remove support for self: Pin<&(mut) Self> . See #41 for more.
self: Pin<&(mut) Self>. See #41 for more.Exclude unneeded files from crates.io.
- Documentation improvements.
quick_derive!, derive_trait, EnumImpl::from_trait, EnumImpl::push_method, and EnumImpl::append_items_from_trait are now panic if an unsupported trait
quick_derive!, derive_trait, EnumImpl::from_trait, EnumImpl::push_method, and EnumImpl::append_items_from_trait are now panic if an unsupported trait definition passed, instead of return error. See #35 for details.quick_derive! macro now accepts both proc_macro2::TokenStream and proc_macro::TokenStream as input.
quick_derive! macro now accepts both proc_macro2::TokenStream and proc_macro::TokenStream as input.
quick_derive! macro no longer supports trait path elision.
The parentheses that wrap the trait path passed to quick_derive! macro are no longer needed. For example:
quick_derive! {
input,
// trait path
- (std::iter::Iterator),
+ std::iter::Iterator,
// trait definition
trait Iterator {
type Item;
fn next(&mut self) -> Option<Self::Item>;
fn size_hint(&self) -> (usize, Option<usize>);
}
}
The way of specifying super trait's associated types has been changed.
quick_derive! {
input,
- // super trait's associated types
- Item,
- // trait path
- (std::iter::ExactSizeIterator),
+ // trait path
+ std::iter::ExactSizeIterator,
+ // super trait's associated types
+ <Item>,
// trait definition
trait ExactSizeIterator: Iterator {
fn len(&self) -> usize;
}
}
Added derive_trait function.
Added EnumImpl::{new, from_trait} functions.
Added EnumData::{field_types, variant_idents} methods.
Removed derive_trait! macro in favor of derive_trait function.
Removed EnumData::make_impl and EnumData::impl_with_capacity in favor of EnumImpl::new.
Removed EnumData::make_impl_trait and EnumData::impl_trait_with_capacity in favor of EnumImpl::from_trait.
Removed EnumImpl::push_generic_param_ident in favor of EnumImpl::push_generic_param(TypeParam::from(ident).into()).
Removed MaybeEnum and EnumElements in favor of syn::parse::<EnumData>().
Removed some hidden APIs.
Implemented Deref<Target = syn::ItemEnum>, syn::parse::Parse, and quote::ToTokens for EnumData
Implemented From<EnumData> for syn::ItemEnum
Weakened requirements to a number of enum variants.
Updated proc-macro2, syn, and quote to 1.0.
Updated proc-macro2, syn, and quote to 1.0.
Banned manual implementation of MaybeEnum for forward compatibility.
Added vis: Visibility field to EnumElements.
Hided some undocumented items from the public API.
Added quote::ToTokens bound to MaybeEnum.
Added quote::ToTokens bound to MaybeEnum.
Removed EnumData::{from_item, from_derive} in favor of EnumData::new
Improved error messages.
- Improved error messages.
Improved support for arbitrary self type.
Improved support for arbitrary self type.
Improved error messages.
Transition to Rust 2018. With this change, the minimum required version will go up to Rust 1.31.
Transition to Rust 2018. With this change, the minimum required version will go up to Rust 1.31.
Improved error messages.
Removed Error and Result types. The current derive_utils uses syn::Error and syn::Result types.
Updated minimum syn version to 0.15.22.
Added EnumData::new method.
Updated minimum syn version to 0.15.22.
Removed dependency on smallvec.
Added Error::to_compile_error method.
Added Error::to_compile_error method.
Hided some undocumented items from the public API.
Improved support for self: Pin<&Self> and self: Pin<&mut Self>.
Improved support for self: Pin<&Self> and self: Pin<&mut Self>.
Updated minimum smallvec version to 0.6.8.
Removed deprecated push_method_pin* methods. Use push_method instead.
Removed "std" feature and std_root function. derive_utils can generate accurate code without "std" feature.
Removed deprecated push_method_pin* methods. Use push_method instead.
Documentation improvements.
- Documentation improvements.
Improved macro implementations. The trailing comma is supported.
Improved macro implementations. The trailing comma is supported.
Improved error messages.
Hided some undocumented items from the public API.
Updated to stable Pin API. Pin::get_mut_unchecked renamed to Pin::get_unchecked_mut in stabilization.
Pin::get_mut_unchecked renamed to Pin::get_unchecked_mut in stabilization.Removed derive_trait_with_capacity macro.
Added quick_derive macro.
Removed derive_trait_with_capacity macro.
Added support for self: Pin<&Self> and self: Pin<&mut Self>.
Added support for self: Pin<&Self> and self: Pin<&mut Self>.
Allow using the trait name as trait path.
Add derive_trait and derive_trait_with_capacity macros. With this change, the minimum required version will go up to Rust 1.30.
derive_trait and derive_trait_with_capacity macros. With this change, the minimum required version will go up to Rust 1.30.- Support Rust 1.27.
Add std::Error impls for derive_utils::Error.
std::error::Error impls for derive_utils::Error.Note: This release has been yanked.
Note: This release has been yanked.
Initial release
Your coding agent can read these notes before it upgrades. Set up the MCP server →