A procedural macro helper for easily writing custom derives for enums.
APACHE-2.0 License
Bot releases are hidden (Show)
Published by taiki-e almost 4 years ago
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.Published by taiki-e over 4 years ago
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
Published by taiki-e about 5 years ago
Published by taiki-e about 5 years ago
Updated proc-macro2
, syn
, and quote
to 1.0.
Banned manual implementation of MaybeEnum
for forward compatibility.
Addef vis: Visibility
field to EnumElements
.
Hided some undocumented items from the public API.
Published by taiki-e about 5 years ago
Added quote::ToTokens
bound to MaybeEnum
.
Removed EnumData::{from_item, from_derive}
in favor of EnumData::new
Improved error messages.
Published by taiki-e over 5 years ago
Published by taiki-e over 5 years ago
Improved support for arbitrary self type.
Improved the error messages.
Published by taiki-e over 5 years ago
Transition to Rust 2018. With this change, the minimum required version will go up to Rust 1.31.
Improved the error messages.
Removed Error
and Result
types. The current derive_utils
uses syn::Error
and syn::Result
types.