@@ -33,3 +33,29 @@ unsafe impl<T: ?Sized> ZeroableInOption for &'_ mut T {}
33
33
#[ cfg( feature = "extern_crate_alloc" ) ]
34
34
#[ cfg_attr( feature = "nightly_docs" , doc( cfg( feature = "extern_crate_alloc" ) ) ) ]
35
35
unsafe impl < T : ?Sized > ZeroableInOption for alloc:: boxed:: Box < T > { }
36
+
37
+ macro_rules! impl_for_fn {
38
+ ( $( $ArgTy: ident) ,* $( , ) ?) => {
39
+ unsafe impl <$( $ArgTy, ) * R > ZeroableInOption for fn ( $( $ArgTy, ) * ) -> R { }
40
+ unsafe impl <$( $ArgTy, ) * R > ZeroableInOption for unsafe fn ( $( $ArgTy, ) * ) -> R { }
41
+ unsafe impl <$( $ArgTy, ) * R > ZeroableInOption for extern "C" fn ( $( $ArgTy, ) * ) -> R { }
42
+ unsafe impl <$( $ArgTy, ) * R > ZeroableInOption for unsafe extern "C" fn ( $( $ArgTy, ) * ) -> R { }
43
+ unsafe impl <$( $ArgTy, ) * R > ZeroableInOption for extern "system" fn ( $( $ArgTy, ) * ) -> R { }
44
+ unsafe impl <$( $ArgTy, ) * R > ZeroableInOption for unsafe extern "system" fn ( $( $ArgTy, ) * ) -> R { }
45
+ } ;
46
+ }
47
+
48
+ impl_for_fn ! ( ) ;
49
+ impl_for_fn ! ( A ) ;
50
+ impl_for_fn ! ( A , B ) ;
51
+ impl_for_fn ! ( A , B , C ) ;
52
+ impl_for_fn ! ( A , B , C , D ) ;
53
+ impl_for_fn ! ( A , B , C , D , E ) ;
54
+ impl_for_fn ! ( A , B , C , D , E , F ) ;
55
+ impl_for_fn ! ( A , B , C , D , E , F , G ) ;
56
+ impl_for_fn ! ( A , B , C , D , E , F , G , H ) ;
57
+ impl_for_fn ! ( A , B , C , D , E , F , G , H , I ) ;
58
+ impl_for_fn ! ( A , B , C , D , E , F , G , H , I , J ) ;
59
+ impl_for_fn ! ( A , B , C , D , E , F , G , H , I , J , K ) ;
60
+ impl_for_fn ! ( A , B , C , D , E , F , G , H , I , J , K , L ) ;
61
+ impl_for_fn ! ( A , B , C , D , E , F , G , H , I , J , K , L , M ) ;
0 commit comments