@@ -1080,16 +1080,24 @@ mod tuples {
10801080 // The types and indices at and after the current index.
10811081 [ $CurrT: ident $CurrV: ident $CurrI: tt $( $AfterT: ident $AfterV: ident $AfterI: tt) * ]
10821082 ) => {
1083+ impl <Replacement , $( $AllT) ,+> crate :: invariant:: Map <Replacement , crate :: Idx <{ $CurrI } >> for ( $( $AllT, ) +)
1084+ where
1085+ Replacement : crate :: invariant:: Validity ,
1086+ $( $AllT: crate :: invariant:: Validity , ) *
1087+ {
1088+ type Result = ( $( $BeforeT, ) * Replacement , $( $AfterT, ) * ) ;
1089+ }
1090+
10831091 // SAFETY:
10841092 // - `Self` is a struct (albeit anonymous), so `VARIANT_ID` is
10851093 // `STRUCT_VARIANT_ID`.
10861094 // - `$CurrI` is the field at index `$CurrI`, so `FIELD_ID` is
10871095 // `zerocopy::ident_id!($CurrI)`
1088- // - `() ` has the same visibility as the `.$CurrI` field (ie, `.0`,
1089- // `.1`, etc)
1096+ // - `crate::Idx ` has the same visibility as the `.$CurrI` field
1097+ // (ie, `.0`, `.1`, etc)
10901098 // - `Type` has the same type as `$CurrI`; i.e., `$CurrT`.
10911099 unsafe impl <$( $AllT) ,+> crate :: HasField <
1092- ( ) ,
1100+ crate :: Idx < { $CurrI } > ,
10931101 { crate :: STRUCT_VARIANT_ID } ,
10941102 { crate :: ident_id!( $CurrI) }
10951103 > for ( $( $AllT, ) +) {
@@ -1115,7 +1123,7 @@ mod tuples {
11151123
11161124 // SAFETY: See comments on items.
11171125 unsafe impl <Aliasing , Alignment , $( $AllT) ,+> crate :: ProjectField <
1118- ( ) ,
1126+ crate :: Idx < { $CurrI } > ,
11191127 ( Aliasing , Alignment , crate :: invariant:: Uninit ) ,
11201128 { crate :: STRUCT_VARIANT_ID } ,
11211129 { crate :: ident_id!( $CurrI) }
@@ -1141,7 +1149,7 @@ mod tuples {
11411149
11421150 // SAFETY: See comments on items.
11431151 unsafe impl <Aliasing , Alignment , $( $AllT) ,+> crate :: ProjectField <
1144- ( ) ,
1152+ crate :: Idx < { $CurrI } > ,
11451153 ( Aliasing , Alignment , crate :: invariant:: Initialized ) ,
11461154 { crate :: STRUCT_VARIANT_ID } ,
11471155 { crate :: ident_id!( $CurrI) }
@@ -1167,7 +1175,7 @@ mod tuples {
11671175
11681176 // SAFETY: See comments on items.
11691177 unsafe impl <Aliasing , Alignment , $( $AllT) ,+> crate :: ProjectField <
1170- ( ) ,
1178+ crate :: Idx < { $CurrI } > ,
11711179 ( Aliasing , Alignment , crate :: invariant:: Valid ) ,
11721180 { crate :: STRUCT_VARIANT_ID } ,
11731181 { crate :: ident_id!( $CurrI) }
@@ -1193,7 +1201,7 @@ mod tuples {
11931201
11941202 // SAFETY: See comments on items.
11951203 unsafe impl <Aliasing , Alignment , $( $AllT, ) + $( $AllV) ,+> crate :: ProjectField <
1196- ( ) ,
1204+ crate :: Idx < { $CurrI } > ,
11971205 ( Aliasing , Alignment , ( $( $AllV, ) +) ) ,
11981206 { crate :: STRUCT_VARIANT_ID } ,
11991207 { crate :: ident_id!( $CurrI) }
0 commit comments