Move all #[derive] impls behind Cargo feature gates
This commit moves all #[derive] annotations behind Cargo feature gates to add
the ability to strip them all out entirely. The `Clone` and `Copy` impls
continue to be enabled by default as they tend to be mega useful but other
equality/hash/debug impls are all default behind the `extra-impls` gate.
This commit, on my computer, has the following timings:
| features | before | after
|-------------------------------|---------|------
| default | 3.67 | 2.96
| *none* | 1.78 | 0.49
| {printing, parsing} | 3.71 | 2.57
| default + {full} | 8.50 | 6.31
| {full} | 3.53 | 0.70
| {full, printing, parsing} | 8.10 | 5.29
Closes #143
diff --git a/src/data.rs b/src/data.rs
index d01d9e5..3916b25 100644
--- a/src/data.rs
+++ b/src/data.rs
@@ -247,7 +247,6 @@
mod printing {
use super::*;
use quote::{Tokens, ToTokens};
- use ty::PathParameters;
impl ToTokens for Variant {
fn to_tokens(&self, tokens: &mut Tokens) {
@@ -312,7 +311,7 @@
if !path.global &&
path.segments.len() == 1 &&
(path.segments[0].ident == "self" || path.segments[0].ident == "super") &&
- path.segments[0].parameters == PathParameters::none() {
+ path.segments[0].parameters.is_empty() {
// Don't emit preceding `in` if path is `self` or `super`
} else {