implement repeated_new and repeated_free for enums and messages. Drop the default impl since it is now required

PiperOrigin-RevId: 652567229
diff --git a/rust/repeated.rs b/rust/repeated.rs
index 4044b8c..99c935b 100644
--- a/rust/repeated.rs
+++ b/rust/repeated.rs
@@ -287,18 +287,14 @@
 pub unsafe trait ProxiedInRepeated: Proxied {
     /// Constructs a new owned `Repeated` field.
     #[doc(hidden)]
-    fn repeated_new(_private: Private) -> Repeated<Self> {
-        unimplemented!("not required")
-    }
+    fn repeated_new(_private: Private) -> Repeated<Self>;
 
     /// Frees the repeated field in-place, for use in `Drop`.
     ///
     /// # Safety
     /// - After `repeated_free`, no other methods on the input are safe to call.
     #[doc(hidden)]
-    unsafe fn repeated_free(_private: Private, _repeated: &mut Repeated<Self>) {
-        unimplemented!("not required")
-    }
+    unsafe fn repeated_free(_private: Private, _repeated: &mut Repeated<Self>);
 
     /// Gets the length of the repeated field.
     fn repeated_len(repeated: View<Repeated<Self>>) -> usize;
@@ -365,7 +361,7 @@
         T::repeated_new(Private)
     }
 
-    pub(crate) fn from_inner(inner: InnerRepeated) -> Self {
+    pub fn from_inner(_private: Private, inner: InnerRepeated) -> Self {
         Self { inner, _phantom: PhantomData }
     }