diff --git a/src/data.rs b/src/data.rs
index b6199a7..4f5b4cb 100644
--- a/src/data.rs
+++ b/src/data.rs
@@ -65,42 +65,24 @@
     }
 }
 
-/// The `Iterator` type returned by [`Fields::iter`].
-///
-/// [`Fields::iter`]: struct.Fields.html#method.iter
-///
-/// *This type is available if Syn is build with the `"derive"` or `"full"`
-/// feature.*
-pub struct FieldsIter<'a>(Option<punctuated::Iter<'a, Field, Token![,]>>);
-
-impl<'a> Iterator for FieldsIter<'a> {
-    type Item = &'a Field;
-    fn next(&mut self) -> Option<&'a Field> {
-        match self.0 {
-            Some(ref mut i) => i.next(),
-            None => None,
-        }
-    }
-}
-
 impl Fields {
     /// Get an iterator over the [`Field`] items in this object. This iterator
     /// can be used to iterate over a named or unnamed struct or variant's
     /// fields uniformly.
     ///
     /// [`Field`]: struct.Field.html
-    pub fn iter(&self) -> FieldsIter {
+    pub fn iter(&self) -> punctuated::Iter<Field, Token![,]> {
         match *self {
-            Fields::Unit => FieldsIter(None),
-            Fields::Named(ref f) => FieldsIter(Some(f.named.iter())),
-            Fields::Unnamed(ref f) => FieldsIter(Some(f.unnamed.iter())),
+            Fields::Unit => punctuated::Iter::private_empty(),
+            Fields::Named(ref f) => f.named.iter(),
+            Fields::Unnamed(ref f) => f.unnamed.iter(),
         }
     }
 }
 
 impl<'a> IntoIterator for &'a Fields {
     type Item = &'a Field;
-    type IntoIter = FieldsIter<'a>;
+    type IntoIter = punctuated::Iter<'a, Field, Token![,]>;
 
     fn into_iter(self) -> Self::IntoIter {
         self.iter()
diff --git a/src/lib.rs b/src/lib.rs
index 380552c..77b0d23 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -287,8 +287,8 @@
 #[cfg(any(feature = "full", feature = "derive"))]
 mod data;
 #[cfg(any(feature = "full", feature = "derive"))]
-pub use data::{Field, Fields, FieldsNamed, FieldsUnnamed, FieldsIter, Variant,
-               VisCrate, VisPublic, VisRestricted, Visibility};
+pub use data::{Field, Fields, FieldsNamed, FieldsUnnamed, Variant, VisCrate, VisPublic,
+               VisRestricted, Visibility};
 
 #[cfg(any(feature = "full", feature = "derive"))]
 mod expr;
diff --git a/src/punctuated.rs b/src/punctuated.rs
index afc163c..a826de5 100644
--- a/src/punctuated.rs
+++ b/src/punctuated.rs
@@ -398,6 +398,17 @@
     inner: slice::Iter<'a, (T, Option<P>)>,
 }
 
+#[cfg(any(feature = "full", feature = "derive"))]
+impl<'a, T, P> Iter<'a, T, P> {
+    // Not public API.
+    #[doc(hidden)]
+    pub fn private_empty() -> Self {
+        Iter {
+            inner: [].iter(),
+        }
+    }
+}
+
 impl<'a, T, P> Iterator for Iter<'a, T, P> {
     type Item = &'a T;
 
