expose upb_Message_MergeFrom in rust upb bindings

PiperOrigin-RevId: 646471315
diff --git a/rust/upb/lib.rs b/rust/upb/lib.rs
index 9d3490d..0cc73a9 100644
--- a/rust/upb/lib.rs
+++ b/rust/upb/lib.rs
@@ -22,8 +22,8 @@
 
 mod message;
 pub use message::{
-    upb_Message, upb_Message_DeepClone, upb_Message_DeepCopy, upb_Message_IsEqual, upb_Message_New,
-    upb_Message_SetBaseField, RawMessage,
+    upb_Message, upb_Message_DeepClone, upb_Message_DeepCopy, upb_Message_IsEqual,
+    upb_Message_MergeFrom, upb_Message_New, upb_Message_SetBaseField, RawMessage,
 };
 
 mod message_value;
diff --git a/rust/upb/message.rs b/rust/upb/message.rs
index 1aad3a4..6368075 100644
--- a/rust/upb/message.rs
+++ b/rust/upb/message.rs
@@ -1,5 +1,5 @@
 use crate::opaque_pointee::opaque_pointee;
-use crate::{upb_MiniTable, upb_MiniTableField, RawArena};
+use crate::{upb_ExtensionRegistry, upb_MiniTable, upb_MiniTableField, RawArena};
 use std::ptr::NonNull;
 
 opaque_pointee!(upb_Message);
@@ -35,4 +35,12 @@
         mini_table: *const upb_MiniTable,
         options: i32,
     ) -> bool;
+
+    pub fn upb_Message_MergeFrom(
+        dst: RawMessage,
+        src: RawMessage,
+        mini_table: *const upb_MiniTable,
+        extreg: *const upb_ExtensionRegistry,
+        arena: RawArena,
+    ) -> bool;
 }
diff --git a/rust/upb/upb_api.c b/rust/upb/upb_api.c
index 8842aa6..952021a 100644
--- a/rust/upb/upb_api.c
+++ b/rust/upb/upb_api.c
@@ -10,12 +10,15 @@
 
 #define UPB_BUILD_API
 
-#include "upb/message/accessors.h"  // IWYU pragma: keep
-#include "upb/mem/arena.h"          // IWYU pragma: keep
-#include "upb/message/array.h"      // IWYU pragma: keep
-#include "upb/message/compare.h"    // IWYU pragma: keep
-#include "upb/message/copy.h"       // IWYU pragma: keep
-#include "upb/message/map.h"        // IWYU pragma: keep
-#include "upb/mini_table/message.h" // IWYU pragma: keep
+// go/keep-sorted start
+#include "upb/mem/arena.h"           // IWYU pragma: keep
+#include "upb/message/accessors.h"   // IWYU pragma: keep
+#include "upb/message/array.h"       // IWYU pragma: keep
+#include "upb/message/compare.h"     // IWYU pragma: keep
+#include "upb/message/copy.h"        // IWYU pragma: keep
+#include "upb/message/map.h"         // IWYU pragma: keep
+#include "upb/message/merge.h"       // IWYU pragma: keep
+#include "upb/mini_table/message.h"  // IWYU pragma: keep
+// go/keep-sorted end
 
 const size_t __rust_proto_kUpb_Map_Begin = kUpb_Map_Begin;
diff --git a/rust/upb/wire.rs b/rust/upb/wire.rs
index 7660c84..dc3a3b9 100644
--- a/rust/upb/wire.rs
+++ b/rust/upb/wire.rs
@@ -1,5 +1,4 @@
 use crate::{upb_ExtensionRegistry, upb_MiniTable, Arena, RawArena, RawMessage};
-use std::ptr::NonNull;
 
 // LINT.IfChange(encode_status)
 #[repr(C)]