A procedural macro helper for easily writing derives macros for enums.
Add this to your Cargo.toml
:
toml
[dependencies]
derive_utils = "0.12"
Compiler support: requires rustc 1.31+
[quick_derive!
] macro make easy to write proc_macro_derive
like deriving trait to enum so long as all variants are implemented that trait.
```rust use deriveutils::quickderive; use proc_macro::TokenStream;
pub fn deriveiterator(input: TokenStream) -> TokenStream {
quickderive! {
input,
// trait path
std::iter::Iterator,
// trait definition
trait Iterator {
type Item;
fn next(&mut self) -> Option
pub fn deriveexactsizeiterator(input: TokenStream) -> TokenStream {
quickderive! {
input,
// trait path
std::iter::ExactSizeIterator,
// super trait's associated types
When deriving for enum like the following:
```rust
enum Enum { A(A), B(B), } ```
Code like this will be generated:
```rust enum Enum { A(A), B(B), }
impl std::iter::Iterator for Enum
where
A: std::iter::Iterator,
B: std::iter::Iterator
impl std::iter::ExactSizeIterator for Enum
where
A: std::iter::ExactSizeIterator,
B: std::iter::ExactSizeIterator
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.