use std::{any::Any, sync::Arc};
pub trait DynSized: 'static + Any + Send + Sync + deepsize::DeepSizeOf {
fn arc_to_any(self: Arc<Self>) -> Arc<dyn Any + Send + Sync>;
fn ref_to_any(&self) -> &(dyn Any + Send + Sync);
fn deep_size_of(&self) -> usize;
}
impl<T: 'static + Any + Send + Sync + deepsize::DeepSizeOf> DynSized for T {
fn arc_to_any(self: Arc<Self>) -> Arc<dyn Any + Send + Sync> {
self
}
fn ref_to_any(&self) -> &(dyn Any + Send + Sync) {
self
}
fn deep_size_of(&self) -> usize {
<Self as deepsize::DeepSizeOf>::deep_size_of(self)
}
}