Add an protobuf::__internal::SealedInternal trait
The purpose of this trait is that it is declared as a supertrait of the traits that we don't want application code to implement (like "Proxied" and "MessageView"); application code can see those traits but not the supertrait, which enables them to use them but not implement them.
PiperOrigin-RevId: 657555025
diff --git a/rust/repeated.rs b/rust/repeated.rs
index 1a43dce..1fd5e0e 100644
--- a/rust/repeated.rs
+++ b/rust/repeated.rs
@@ -17,7 +17,7 @@
use crate::{
AsMut, AsView, IntoMut, IntoProxied, IntoView, Mut, MutProxied, MutProxy, Proxied, Proxy, View,
ViewProxy,
- __internal::Private,
+ __internal::{Private, SealedInternal},
__runtime::{InnerRepeated, InnerRepeatedMut, RawRepeatedField},
};
@@ -382,6 +382,8 @@
type View<'msg> = RepeatedView<'msg, T> where Repeated<T>: 'msg;
}
+impl<T> SealedInternal for Repeated<T> where T: ProxiedInRepeated {}
+
impl<T> AsView for Repeated<T>
where
T: ProxiedInRepeated,
@@ -411,6 +413,8 @@
}
}
+impl<'msg, T> SealedInternal for RepeatedView<'msg, T> where T: ProxiedInRepeated + 'msg {}
+
impl<'msg, T> Proxy<'msg> for RepeatedView<'msg, T> where T: ProxiedInRepeated + 'msg {}
impl<'msg, T> AsView for RepeatedView<'msg, T>
@@ -440,6 +444,8 @@
impl<'msg, T> ViewProxy<'msg> for RepeatedView<'msg, T> where T: ProxiedInRepeated + 'msg {}
+impl<'msg, T> SealedInternal for RepeatedMut<'msg, T> where T: ProxiedInRepeated + 'msg {}
+
impl<'msg, T> Proxy<'msg> for RepeatedMut<'msg, T> where T: ProxiedInRepeated + 'msg {}
impl<'msg, T> AsView for RepeatedMut<'msg, T>