@@ -144,26 +144,118 @@ union BadIntoBytesUnionGeneric<T: imp::Copy> {
144144
145145util_assert_not_impl_any ! ( BadIntoBytesUnionGeneric <u8 >: imp:: IntoBytes ) ;
146146
147- #[ cfg( __ZEROCOPY_INTERNAL_USE_ONLY_NIGHTLY_FEATURES_IN_TESTS) ]
148- mod trivial_bounds {
149- use super :: * ;
147+ #[ derive( imp:: FromBytes ) ]
148+ #[ zerocopy( on_error = "skip" ) ]
149+ #[ zerocopy( crate = "zerocopy_renamed" ) ]
150+ #[ repr( transparent) ]
151+ struct TrivialBounds ( bool ) ;
152+
153+ util_assert_not_impl_any ! ( TrivialBounds : imp:: FromBytes ) ;
154+
155+ #[ derive( imp:: IntoBytes ) ]
156+ #[ zerocopy( on_error = "skip" ) ]
157+ #[ zerocopy( crate = "zerocopy_renamed" ) ]
158+ #[ repr( C ) ]
159+ struct BadIntoBytesStructPadding {
160+ a : u8 ,
161+ b : u16 ,
162+ }
163+
164+ util_assert_not_impl_any ! ( BadIntoBytesStructPadding : imp:: IntoBytes ) ;
165+
166+ #[ derive( imp:: most_traits) ]
167+ #[ zerocopy( crate = "zerocopy_renamed" ) ]
168+ #[ repr( C ) ]
169+ struct NotFromBytes {
170+ a : [ bool ] ,
171+ }
172+
173+ util_assert_impl_all ! ( NotFromBytes :
174+ imp:: SplitAt ,
175+ imp:: IntoBytes ,
176+ imp:: KnownLayout ,
177+ imp:: Unaligned ,
178+ imp:: Immutable ,
179+ ) ;
180+ util_assert_not_impl_any ! ( NotFromBytes : imp:: FromBytes ) ;
181+
182+ #[ derive( imp:: most_traits) ]
183+ #[ zerocopy( crate = "zerocopy_renamed" ) ]
184+ #[ repr( C ) ]
185+ struct NotFromZeros {
186+ a : [ imp:: core:: num:: NonZeroU8 ] ,
187+ }
150188
151- #[ derive( imp:: FromBytes ) ]
152- #[ zerocopy( on_error = "skip" ) ]
153- #[ zerocopy( crate = "zerocopy_renamed" ) ]
154- #[ repr( transparent) ]
155- struct TrivialBounds ( bool ) ;
189+ util_assert_impl_all ! ( NotFromZeros :
190+ imp:: SplitAt ,
191+ imp:: IntoBytes ,
192+ imp:: KnownLayout ,
193+ imp:: Unaligned ,
194+ imp:: Immutable ,
195+ ) ;
196+ util_assert_not_impl_any ! ( NotFromZeros : imp:: FromZeros ) ;
156197
157- util_assert_not_impl_any ! ( TrivialBounds : imp:: FromBytes ) ;
198+ #[ derive( imp:: most_traits) ]
199+ #[ zerocopy( crate = "zerocopy_renamed" ) ]
200+ #[ repr( C ) ]
201+ struct NotUnaligned {
202+ a : [ u16 ] ,
203+ }
158204
159- # [ derive ( imp :: IntoBytes ) ]
160- # [ zerocopy ( on_error = "skip" ) ]
161- # [ zerocopy ( crate = "zerocopy_renamed" ) ]
162- # [ repr ( C ) ]
163- struct BadIntoBytesStructPadding {
164- a : u8 ,
165- b : u16 ,
166- }
205+ util_assert_impl_all ! ( NotUnaligned :
206+ imp :: FromBytes ,
207+ imp :: IntoBytes ,
208+ imp :: KnownLayout ,
209+ imp :: Immutable ,
210+ imp :: SplitAt ,
211+ ) ;
212+ util_assert_not_impl_any ! ( NotUnaligned : imp :: Unaligned ) ;
167213
168- util_assert_not_impl_any ! ( BadIntoBytesStructPadding : imp:: IntoBytes ) ;
214+ #[ derive( imp:: most_traits) ]
215+ #[ zerocopy( crate = "zerocopy_renamed" ) ]
216+ #[ repr( C ) ]
217+ struct NotIntoBytes {
218+ a : [ imp:: core:: mem:: MaybeUninit < u8 > ] ,
169219}
220+
221+ util_assert_impl_all ! ( NotIntoBytes :
222+ imp:: FromBytes ,
223+ imp:: KnownLayout ,
224+ imp:: SplitAt ,
225+ imp:: Unaligned ,
226+ imp:: Immutable ,
227+ ) ;
228+ util_assert_not_impl_any ! ( NotIntoBytes : imp:: IntoBytes ) ;
229+
230+ #[ derive( imp:: most_traits) ]
231+ #[ zerocopy( crate = "zerocopy_renamed" ) ]
232+ #[ repr( C ) ]
233+ struct NotImmutable {
234+ a : [ imp:: core:: cell:: UnsafeCell < u8 > ] ,
235+ }
236+
237+ util_assert_impl_all ! ( NotImmutable :
238+ imp:: FromBytes ,
239+ imp:: IntoBytes ,
240+ imp:: KnownLayout ,
241+ imp:: SplitAt ,
242+ imp:: Unaligned ,
243+ ) ;
244+ util_assert_not_impl_any ! ( NotImmutable : imp:: Immutable ) ;
245+
246+ #[ derive( imp:: most_traits) ]
247+ #[ zerocopy( crate = "zerocopy_renamed" ) ]
248+ #[ repr( C ) ]
249+ struct NotSplit {
250+ a : u8 ,
251+ b : u8 ,
252+ }
253+
254+ util_assert_impl_all ! ( NotSplit :
255+ imp:: FromBytes ,
256+ imp:: IntoBytes ,
257+ imp:: KnownLayout ,
258+ imp:: Unaligned ,
259+ imp:: Immutable ,
260+ ) ;
261+ util_assert_not_impl_any ! ( NotSplit : imp:: SplitAt ) ;
0 commit comments