@@ -49,7 +49,6 @@ use print::pprust;
4949use util;
5050
5151use std:: fmt;
52- use std:: { iter, option, slice} ;
5352use serialize:: { Encodable , Encoder , Decoder } ;
5453
5554#[ derive( Clone , PartialEq , Eq , RustcEncodable , RustcDecodable , Hash , Copy ) ]
@@ -1024,7 +1023,7 @@ pub struct EnumDef {
10241023pub struct Variant_ {
10251024 pub name : Name ,
10261025 pub attrs : Vec < Attribute > ,
1027- pub data : P < VariantData > ,
1026+ pub data : VariantData ,
10281027 /// Explicit discriminant, eg `Foo = 1`
10291028 pub disr_expr : Option < P < Expr > > ,
10301029}
@@ -1179,17 +1178,12 @@ pub enum VariantData {
11791178 Unit ( NodeId ) ,
11801179}
11811180
1182- pub type FieldIter < ' a > = iter:: FlatMap < option:: IntoIter < & ' a Vec < StructField > > ,
1183- slice:: Iter < ' a , StructField > ,
1184- fn ( & Vec < StructField > ) -> slice:: Iter < StructField > > ;
1185-
11861181impl VariantData {
1187- pub fn fields ( & self ) -> FieldIter {
1188- fn vec_iter < T > ( v : & Vec < T > ) -> slice:: Iter < T > { v. iter ( ) }
1182+ pub fn fields ( & self ) -> & [ StructField ] {
11891183 match * self {
1190- VariantData :: Struct ( ref fields, _) | VariantData :: Tuple ( ref fields, _) => Some ( fields) ,
1191- _ => None ,
1192- } . into_iter ( ) . flat_map ( vec_iter )
1184+ VariantData :: Struct ( ref fields, _) | VariantData :: Tuple ( ref fields, _) => fields,
1185+ _ => & [ ] ,
1186+ }
11931187 }
11941188 pub fn id ( & self ) -> NodeId {
11951189 match * self {
@@ -1248,7 +1242,7 @@ pub enum Item_ {
12481242 /// An enum definition, e.g. `enum Foo<A, B> {C<A>, D<B>}`
12491243 ItemEnum ( EnumDef , Generics ) ,
12501244 /// A struct definition, e.g. `struct Foo<A> {x: A}`
1251- ItemStruct ( P < VariantData > , Generics ) ,
1245+ ItemStruct ( VariantData , Generics ) ,
12521246 /// Represents a Trait Declaration
12531247 ItemTrait ( Unsafety , Generics , TyParamBounds , Vec < P < TraitItem > > ) ,
12541248
0 commit comments