Skip to content

Commit 857942e

Browse files
committed
Revert "Define Fields::members iterator type privately inside method"
This reverts commit e8a9292.
1 parent 65ec30d commit 857942e

File tree

1 file changed

+37
-37
lines changed

1 file changed

+37
-37
lines changed

src/data.rs

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -138,43 +138,6 @@ impl Fields {
138138
/// self.a.clone() }`. For structs with unnamed fields, `Self { 0:
139139
/// self.0.clone() }`. And for unit structs, `Self {}`.
140140
pub fn members(&self) -> impl Iterator<Item = Member> + Clone + '_ {
141-
struct Members<'a> {
142-
fields: punctuated::Iter<'a, Field>,
143-
index: u32,
144-
}
145-
146-
impl<'a> Iterator for Members<'a> {
147-
type Item = Member;
148-
149-
fn next(&mut self) -> Option<Self::Item> {
150-
let field = self.fields.next()?;
151-
let member = match &field.ident {
152-
Some(ident) => Member::Named(ident.clone()),
153-
None => {
154-
#[cfg(all(feature = "parsing", feature = "printing"))]
155-
let span = crate::spanned::Spanned::span(&field.ty);
156-
#[cfg(not(all(feature = "parsing", feature = "printing")))]
157-
let span = proc_macro2::Span::call_site();
158-
Member::Unnamed(Index {
159-
index: self.index,
160-
span,
161-
})
162-
}
163-
};
164-
self.index += 1;
165-
Some(member)
166-
}
167-
}
168-
169-
impl<'a> Clone for Members<'a> {
170-
fn clone(&self) -> Self {
171-
Members {
172-
fields: self.fields.clone(),
173-
index: self.index,
174-
}
175-
}
176-
}
177-
178141
Members {
179142
fields: self.iter(),
180143
index: 0,
@@ -234,6 +197,43 @@ ast_struct! {
234197
}
235198
}
236199

200+
pub struct Members<'a> {
201+
fields: punctuated::Iter<'a, Field>,
202+
index: u32,
203+
}
204+
205+
impl<'a> Iterator for Members<'a> {
206+
type Item = Member;
207+
208+
fn next(&mut self) -> Option<Self::Item> {
209+
let field = self.fields.next()?;
210+
let member = match &field.ident {
211+
Some(ident) => Member::Named(ident.clone()),
212+
None => {
213+
#[cfg(all(feature = "parsing", feature = "printing"))]
214+
let span = crate::spanned::Spanned::span(&field.ty);
215+
#[cfg(not(all(feature = "parsing", feature = "printing")))]
216+
let span = proc_macro2::Span::call_site();
217+
Member::Unnamed(Index {
218+
index: self.index,
219+
span,
220+
})
221+
}
222+
};
223+
self.index += 1;
224+
Some(member)
225+
}
226+
}
227+
228+
impl<'a> Clone for Members<'a> {
229+
fn clone(&self) -> Self {
230+
Members {
231+
fields: self.fields.clone(),
232+
index: self.index,
233+
}
234+
}
235+
}
236+
237237
#[cfg(feature = "parsing")]
238238
pub(crate) mod parsing {
239239
use crate::attr::Attribute;

0 commit comments

Comments
 (0)