Remove rust::Slice repr conversion on the C++ side
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 5b67e09..489d85a 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -747,15 +747,8 @@
     } else if efn.ret.is_some() {
         write!(out, "return ");
     }
-    match &efn.ret {
-        Some(Type::Ref(_)) => write!(out, "&"),
-        Some(ty @ Type::SliceRef(_)) if !indirect_return => {
-            out.builtin.rust_slice_repr = true;
-            write!(out, "::rust::impl<");
-            write_type(out, ty);
-            write!(out, ">::repr(");
-        }
-        _ => {}
+    if let Some(Type::Ref(_)) = efn.ret {
+        write!(out, "&");
     }
     match &efn.receiver {
         None => write!(out, "{}$(", efn.name.rust),
@@ -782,14 +775,6 @@
             out.builtin.unsafe_bitcopy = true;
             write_type(out, &arg.ty);
             write!(out, "(::rust::unsafe_bitcopy, *{})", arg.name.cxx);
-        } else if let Type::SliceRef(slice) = &arg.ty {
-            write_type(out, &arg.ty);
-            write!(out, "(static_cast<");
-            if slice.mutability.is_none() {
-                write!(out, "const ");
-            }
-            write_type_space(out, &slice.inner);
-            write!(out, "*>({0}.ptr), {0}.len)", arg.name.cxx);
         } else if out.types.needs_indirect_abi(&arg.ty) {
             out.include.utility = true;
             write!(out, "::std::move(*{})", arg.name.cxx);
@@ -801,7 +786,6 @@
     match &efn.ret {
         Some(Type::RustBox(_)) => write!(out, ".into_raw()"),
         Some(Type::UniquePtr(_)) => write!(out, ".release()"),
-        Some(Type::SliceRef(_)) if !indirect_return => write!(out, ")"),
         _ => {}
     }
     if indirect_return {
@@ -1000,12 +984,6 @@
                 write!(out, "(");
             }
             Type::Ref(_) => write!(out, "*"),
-            Type::SliceRef(_) => {
-                out.builtin.rust_slice_new = true;
-                write!(out, "::rust::impl<");
-                write_type(out, ret);
-                write!(out, ">::slice(");
-            }
             _ => {}
         }
     }
@@ -1023,21 +1001,13 @@
         if needs_comma {
             write!(out, ", ");
         }
-        match &arg.ty {
-            Type::SliceRef(_) => {
-                out.builtin.rust_slice_repr = true;
-                write!(out, "::rust::impl<");
-                write_type(out, &arg.ty);
-                write!(out, ">::repr(");
-            }
-            ty if out.types.needs_indirect_abi(ty) => write!(out, "&"),
-            _ => {}
+        if out.types.needs_indirect_abi(&arg.ty) {
+            write!(out, "&");
         }
         write!(out, "{}", arg.name.cxx);
         match &arg.ty {
             Type::RustBox(_) => write!(out, ".into_raw()"),
             Type::UniquePtr(_) => write!(out, ".release()"),
-            Type::SliceRef(_) => write!(out, ")"),
             ty if ty != RustString && out.types.needs_indirect_abi(ty) => write!(out, "$.value"),
             _ => {}
         }
@@ -1059,7 +1029,7 @@
     write!(out, ")");
     if !indirect_return {
         if let Some(ret) = &sig.ret {
-            if let Type::RustBox(_) | Type::UniquePtr(_) | Type::SliceRef(_) = ret {
+            if let Type::RustBox(_) | Type::UniquePtr(_) = ret {
                 write!(out, ")");
             }
         }
@@ -1130,10 +1100,6 @@
             write_type(out, &ty.inner);
             write!(out, " *");
         }
-        Some(Type::SliceRef(_)) => {
-            out.builtin.ptr_len = true;
-            write!(out, "::rust::repr::PtrLen ");
-        }
         Some(ty) if out.types.needs_indirect_abi(ty) => write!(out, "void "),
         _ => write_return_type(out, ty),
     }
@@ -1145,10 +1111,6 @@
             write_type_space(out, &ty.inner);
             write!(out, "*");
         }
-        Type::SliceRef(_) => {
-            out.builtin.ptr_len = true;
-            write!(out, "::rust::repr::PtrLen ");
-        }
         _ => write_type_space(out, &arg.ty),
     }
     if out.types.needs_indirect_abi(&arg.ty) {