@@ -3761,15 +3761,19 @@ pub struct TyAlias {
37613761
37623762#[ derive( Clone , Encodable , Decodable , Debug ) ]
37633763pub struct Impl {
3764+ pub generics : Generics ,
3765+ pub of_trait : Option < Box < TraitImplHeader > > ,
3766+ pub self_ty : P < Ty > ,
3767+ pub items : ThinVec < P < AssocItem > > ,
3768+ }
3769+
3770+ #[ derive( Clone , Encodable , Decodable , Debug ) ]
3771+ pub struct TraitImplHeader {
37643772 pub defaultness : Defaultness ,
37653773 pub safety : Safety ,
3766- pub generics : Generics ,
37673774 pub constness : Const ,
37683775 pub polarity : ImplPolarity ,
3769- /// The trait being implemented, if any.
3770- pub of_trait : Option < TraitRef > ,
3771- pub self_ty : P < Ty > ,
3772- pub items : ThinVec < P < AssocItem > > ,
3776+ pub trait_ref : TraitRef ,
37733777}
37743778
37753779#[ derive( Clone , Encodable , Decodable , Debug , Default , Walkable ) ]
@@ -3893,7 +3897,7 @@ pub enum ItemKind {
38933897 /// An implementation.
38943898 ///
38953899 /// E.g., `impl<A> Foo<A> { .. }` or `impl<A> Trait for Foo<A> { .. }`.
3896- Impl ( Box < Impl > ) ,
3900+ Impl ( Impl ) ,
38973901 /// A macro invocation.
38983902 ///
38993903 /// E.g., `foo!(..)`.
@@ -3980,7 +3984,7 @@ impl ItemKind {
39803984 | Self :: Union ( _, generics, _)
39813985 | Self :: Trait ( box Trait { generics, .. } )
39823986 | Self :: TraitAlias ( _, generics, _)
3983- | Self :: Impl ( box Impl { generics, .. } ) => Some ( generics) ,
3987+ | Self :: Impl ( Impl { generics, .. } ) => Some ( generics) ,
39843988 _ => None ,
39853989 }
39863990 }
@@ -4140,7 +4144,7 @@ mod size_asserts {
41404144 static_assert_size ! ( GenericArg , 24 ) ;
41414145 static_assert_size ! ( GenericBound , 88 ) ;
41424146 static_assert_size ! ( Generics , 40 ) ;
4143- static_assert_size ! ( Impl , 136 ) ;
4147+ static_assert_size ! ( Impl , 64 ) ;
41444148 static_assert_size ! ( Item , 144 ) ;
41454149 static_assert_size ! ( ItemKind , 80 ) ;
41464150 static_assert_size ! ( LitKind , 24 ) ;
@@ -4153,6 +4157,7 @@ mod size_asserts {
41534157 static_assert_size ! ( PathSegment , 24 ) ;
41544158 static_assert_size ! ( Stmt , 32 ) ;
41554159 static_assert_size ! ( StmtKind , 16 ) ;
4160+ static_assert_size ! ( TraitImplHeader , 80 ) ;
41564161 static_assert_size ! ( Ty , 64 ) ;
41574162 static_assert_size ! ( TyKind , 40 ) ;
41584163 // tidy-alphabetical-end
0 commit comments