diff --git a/rust/upb/lib.rs b/rust/upb/lib.rs index 9d3490d73a..0cc73a95f8 100644 --- a/rust/upb/lib.rs +++ b/rust/upb/lib.rs @@ -22,8 +22,8 @@ pub use map::{ 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 1aad3a4745..6368075526 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 @@ extern "C" { 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 8842aa6d12..952021a3d7 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 7660c84e9c..dc3a3b9c03 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)]