Change upb singular scalar accessors to not use upb C accessor codegen.

PiperOrigin-RevId: 666879420
diff --git a/rust/upb/lib.rs b/rust/upb/lib.rs
index 125a0f2..a24f78e 100644
--- a/rust/upb/lib.rs
+++ b/rust/upb/lib.rs
@@ -34,19 +34,15 @@
 };
 
 mod message;
-pub use message::{
-    upb_Message, upb_Message_Clear, upb_Message_DeepClone, upb_Message_DeepCopy,
-    upb_Message_IsEqual, upb_Message_MergeFrom, upb_Message_New, upb_Message_SetBaseField,
-    RawMessage,
-};
+pub use message::*;
 
 mod message_value;
 pub use message_value::{upb_MessageValue, upb_MutableMessageValue};
 
 mod mini_table;
 pub use mini_table::{
-    upb_MiniTable, upb_MiniTableField, upb_MiniTable_FindFieldByNumber, RawMiniTable,
-    RawMiniTableField,
+    upb_MiniTable, upb_MiniTableField, upb_MiniTable_FindFieldByNumber,
+    upb_MiniTable_GetFieldByIndex, RawMiniTable, RawMiniTableField,
 };
 
 mod opaque_pointee;
diff --git a/rust/upb/message.rs b/rust/upb/message.rs
index b78e495..caaa80a 100644
--- a/rust/upb/message.rs
+++ b/rust/upb/message.rs
@@ -13,17 +13,22 @@
 pub type RawMessage = NonNull<upb_Message>;
 
 extern "C" {
-    /// SAFETY:
+    /// # Safety
     /// - `mini_table` and `arena` must be valid to deref
     pub fn upb_Message_New(mini_table: *const upb_MiniTable, arena: RawArena)
     -> Option<RawMessage>;
 
-    /// SAFETY:
+    /// # Safety
     /// - `m` and `mini_table` must be valid to deref
-    /// - `mini_table` must be the MiniTable associtaed with `m`
+    /// - `mini_table` must be the MiniTable associated with `m`
     pub fn upb_Message_Clear(m: RawMessage, mini_table: *const upb_MiniTable);
 
-    /// SAFETY:
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `f`
+    pub fn upb_Message_ClearBaseField(m: RawMessage, f: *const upb_MiniTableField);
+
+    /// # Safety
     /// - All four arguments must be valid to deref
     /// - `mini_table` must be the MiniTable associated with both `dst` and
     ///   `src`
@@ -34,7 +39,7 @@
         arena: RawArena,
     );
 
-    /// SAFETY:
+    /// # Safety
     /// - All three arguments must be valid to deref
     /// - `mini_table` must be the MiniTable associated with `m`
     pub fn upb_Message_DeepClone(
@@ -43,18 +48,86 @@
         arena: RawArena,
     ) -> Option<RawMessage>;
 
-    /// SAFETY:
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `f`
+    pub fn upb_Message_GetBool(
+        m: RawMessage,
+        mini_table: *const upb_MiniTableField,
+        default_val: bool,
+    ) -> bool;
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `m`
+    pub fn upb_Message_GetInt32(
+        m: RawMessage,
+        f: *const upb_MiniTableField,
+        default_val: i32,
+    ) -> i32;
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `m`
+    pub fn upb_Message_GetInt64(
+        m: RawMessage,
+        f: *const upb_MiniTableField,
+        default_val: i64,
+    ) -> i64;
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `m`
+    pub fn upb_Message_GetUInt32(
+        m: RawMessage,
+        f: *const upb_MiniTableField,
+        default_val: u32,
+    ) -> u32;
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `m`
+    pub fn upb_Message_GetUInt64(
+        m: RawMessage,
+        f: *const upb_MiniTableField,
+        default_val: u64,
+    ) -> u64;
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `m`
+    pub fn upb_Message_GetFloat(
+        m: RawMessage,
+        f: *const upb_MiniTableField,
+        default_val: f32,
+    ) -> f32;
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `m`
+    pub fn upb_Message_GetDouble(
+        m: RawMessage,
+        f: *const upb_MiniTableField,
+        default_val: f64,
+    ) -> f64;
+
+    /// # Safety
     /// - `m` and `mini_table` must be valid to deref
     /// - `mini_table` must be the MiniTable associated with `m`
+    pub fn upb_Message_HasBaseField(m: RawMessage, mini_table: *const upb_MiniTableField) -> bool;
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `m`
     /// - `val` must be a pointer to legally readable memory of the correct type
     ///   for the field described by `mini_table`
     pub fn upb_Message_SetBaseField(
         m: RawMessage,
-        mini_table: *const upb_MiniTableField,
+        f: *const upb_MiniTableField,
         val: *const std::ffi::c_void,
     );
 
-    /// SAFETY:
+    /// # Safety
     /// - All four arguments must be valid to deref
     /// - `mini_table` must be the MiniTable associated with both `m1` and `m2`
     pub fn upb_Message_IsEqual(
@@ -64,7 +137,7 @@
         options: i32,
     ) -> bool;
 
-    /// SAFETY:
+    /// # Safety
     /// - `dst`, `src`, `mini_table` and `arena` must be valid to deref
     /// - `extreg` must be valid to deref or nullptr
     /// - `mini_table` must be the MiniTable associated with both `dst` and
@@ -76,4 +149,43 @@
         extreg: *const upb_ExtensionRegistry,
         arena: RawArena,
     ) -> bool;
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `f`
+    pub fn upb_Message_SetBaseFieldBool(
+        m: RawMessage,
+        mini_table: *const upb_MiniTableField,
+        val: bool,
+    );
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `m`
+    pub fn upb_Message_SetBaseFieldInt32(m: RawMessage, f: *const upb_MiniTableField, val: i32);
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `m`
+    pub fn upb_Message_SetBaseFieldInt64(m: RawMessage, f: *const upb_MiniTableField, val: i64);
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `m`
+    pub fn upb_Message_SetBaseFieldUInt32(m: RawMessage, f: *const upb_MiniTableField, val: u32);
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `m`
+    pub fn upb_Message_SetBaseFieldUInt64(m: RawMessage, f: *const upb_MiniTableField, val: u64);
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `m`
+    pub fn upb_Message_SetBaseFieldFloat(m: RawMessage, f: *const upb_MiniTableField, val: f32);
+
+    /// # Safety
+    /// - `m` and `mini_table` must be valid to deref
+    /// - `f` must be a field associated with `m`
+    pub fn upb_Message_SetBaseFieldDouble(m: RawMessage, f: *const upb_MiniTableField, val: f64);
 }
diff --git a/rust/upb/mini_table.rs b/rust/upb/mini_table.rs
index 64b64ec..cfc19c8 100644
--- a/rust/upb/mini_table.rs
+++ b/rust/upb/mini_table.rs
@@ -19,4 +19,9 @@
         m: *const upb_MiniTable,
         number: u32,
     ) -> *const upb_MiniTableField;
+
+    pub fn upb_MiniTable_GetFieldByIndex(
+        m: *const upb_MiniTable,
+        number: u32,
+    ) -> *const upb_MiniTableField;
 }