@@ -2045,6 +2045,8 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
2045
2045
write ! ( w, "{}" , sliceconv( false , None ) ) . unwrap ( ) ;
2046
2046
}
2047
2047
}
2048
+ } else if let syn:: Type :: Array ( _) = & * s. elem {
2049
+ write ! ( w, "{}" , sliceconv( false , Some ( ".map(|a| *a)" ) ) ) . unwrap ( ) ;
2048
2050
} else { unimplemented ! ( ) ; }
2049
2051
} ,
2050
2052
syn:: Type :: Tuple ( t) => {
@@ -2397,6 +2399,12 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
2397
2399
ptr_for_ref = true ;
2398
2400
convert_container ! ( "Slice" , 1 , || ty. iter( ) ) ;
2399
2401
unimplemented ! ( "convert_container should return true as container_lookup should succeed for slices" ) ;
2402
+ } else if let syn:: Type :: Array ( _) = & * s. elem {
2403
+ is_ref = false ;
2404
+ ptr_for_ref = true ;
2405
+ let arr_elem = [ ( * s. elem ) . clone ( ) ] ;
2406
+ convert_container ! ( "Slice" , 1 , || arr_elem. iter( ) ) ;
2407
+ unimplemented ! ( "convert_container should return true as container_lookup should succeed for slices" ) ;
2400
2408
} else { unimplemented ! ( ) }
2401
2409
} ,
2402
2410
syn:: Type :: Tuple ( t) => {
@@ -2907,6 +2915,22 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
2907
2915
let mut segments = syn:: punctuated:: Punctuated :: new ( ) ;
2908
2916
segments. push ( parse_quote ! ( Vec <#args>) ) ;
2909
2917
self . write_c_type_intern ( w, & syn:: Type :: Path ( syn:: TypePath { qself : None , path : syn:: Path { leading_colon : None , segments } } ) , generics, false , is_mut, ptr_for_ref, with_ref_lifetime, c_ty)
2918
+ } else if let syn:: Type :: Array ( a) = & * s. elem {
2919
+ if let syn:: Expr :: Lit ( l) = & a. len {
2920
+ if let syn:: Lit :: Int ( i) = & l. lit {
2921
+ let mut buf = Vec :: new ( ) ;
2922
+ self . write_rust_type ( & mut buf, generics, & * a. elem , false ) ;
2923
+ let arr_ty = String :: from_utf8 ( buf) . unwrap ( ) ;
2924
+
2925
+ let arr_str = format ! ( "[{}; {}]" , arr_ty, i. base10_digits( ) ) ;
2926
+ let ty = self . c_type_from_path ( & arr_str, false , ptr_for_ref) . unwrap ( )
2927
+ . rsplitn ( 2 , "::" ) . next ( ) . unwrap ( ) ;
2928
+
2929
+ let mangled_container = format ! ( "CVec_{}Z" , ty) ;
2930
+ write ! ( w, "{}::{}" , Self :: generated_container_path( ) , mangled_container) . unwrap ( ) ;
2931
+ self . check_create_container ( mangled_container, "Vec" , vec ! [ & * s. elem] , generics, false )
2932
+ } else { false }
2933
+ } else { false }
2910
2934
} else { false }
2911
2935
} ,
2912
2936
syn:: Type :: Tuple ( t) => {
0 commit comments