1use std::{any::Any, sync::Arc};
2
3pub trait DynSized: 'static + Any + Send + Sync + deepsize::DeepSizeOf {
4 fn arc_to_any(self: Arc<Self>) -> Arc<dyn Any + Send + Sync>;
8 fn ref_to_any(&self) -> &(dyn Any + Send + Sync);
9 fn deep_size_of(&self) -> usize;
10}
11impl<T: 'static + Any + Send + Sync + deepsize::DeepSizeOf> DynSized for T {
12 fn arc_to_any(self: Arc<Self>) -> Arc<dyn Any + Send + Sync> {
13 self
14 }
15
16 fn ref_to_any(&self) -> &(dyn Any + Send + Sync) {
17 self
18 }
19
20 fn deep_size_of(&self) -> usize {
21 <Self as deepsize::DeepSizeOf>::deep_size_of(self)
22 }
23}