Add downgrade conversion from SharedPtr to WeakPtr
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 327dee4..359eb22 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -1799,6 +1799,13 @@
     writeln!(out, "}}");
     writeln!(
         out,
+        "void cxxbridge1$weak_ptr${}$downgrade(const ::std::shared_ptr<{}>& shared, ::std::weak_ptr<{}> *weak) noexcept {{",
+        instance, inner, inner,
+    );
+    writeln!(out, "  ::new (weak) ::std::weak_ptr<{}>(shared);", inner);
+    writeln!(out, "}}");
+    writeln!(
+        out,
         "void cxxbridge1$weak_ptr${}$drop(::std::weak_ptr<{}> *self) noexcept {{",
         instance, inner,
     );