Implement returning Box from Rust to C++
diff --git a/gen/write.rs b/gen/write.rs
index f0bcaf9..7dc625e 100644
--- a/gen/write.rs
+++ b/gen/write.rs
@@ -336,8 +336,13 @@
             write!(out, "  ");
         } else if let Some(ret) = &efn.ret {
             write!(out, "return ");
-            if let Type::Ref(_) = ret {
-                write!(out, "*");
+            match ret {
+                Type::RustBox(_) => {
+                    write_type(out, ret);
+                    write!(out, "::from_raw(");
+                }
+                Type::Ref(_) => write!(out, "*"),
+                _ => {}
             }
         }
         for name in out.namespace.clone() {
@@ -368,7 +373,13 @@
             }
             write!(out, "&return$.value");
         }
-        writeln!(out, ");");
+        write!(out, ")");
+        if let Some(ret) = &efn.ret {
+            if let Type::RustBox(_) = ret {
+                write!(out, ")");
+            }
+        }
+        writeln!(out, ";");
         if indirect_return {
             writeln!(out, "  return ::std::move(return$.value);");
         }