@@ -670,11 +670,15 @@ impl Bindgen for FunctionBindgen<'_, '_> {
670670 let val = format ! ( "vec{}" , tmp) ;
671671 let ptr = format ! ( "ptr{}" , tmp) ;
672672 let len = format ! ( "len{}" , tmp) ;
673+ let vec = self . r#gen . path_to_vec ( ) ;
673674 if realloc. is_none ( ) {
674675 self . push_str ( & format ! ( "let {} = {};\n " , val, operands[ 0 ] ) ) ;
675676 } else {
676677 let op0 = operands. pop ( ) . unwrap ( ) ;
677- self . push_str ( & format ! ( "let {} = ({}).into_boxed_slice();\n " , val, op0) ) ;
678+ self . push_str ( & format ! (
679+ "let {} = <_ as Into<{vec}<_>>>::into({}).into_boxed_slice();\n " ,
680+ val, op0
681+ ) ) ;
678682 }
679683 self . push_str ( & format ! ( "let {} = {}.as_ptr().cast::<u8>();\n " , ptr, val) ) ;
680684 self . push_str ( & format ! ( "let {} = {}.len();\n " , len, val) ) ;
@@ -691,7 +695,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
691695 self . push_str ( & format ! ( "let {} = {};\n " , len, operands[ 1 ] ) ) ;
692696 let vec = self . r#gen . path_to_vec ( ) ;
693697 let result = format ! (
694- "{vec}:: from_raw_parts({}.cast(), {1}, {1})" ,
698+ "<_ as From< {vec}<_>>>::from({vec}:: from_raw_parts({}.cast(), {1}, {1}) )" ,
695699 operands[ 0 ] , len
696700 ) ;
697701 results. push ( result) ;
0 commit comments