Skip to main content

yazi_shared/data/
any.rs

1use std::{any::Any, fmt};
2
3use dyn_clone::DynClone;
4
5pub trait DataAny: Any + Send + Sync + DynClone {
6	fn as_any(&self) -> &dyn Any;
7
8	fn into_any(self: Box<Self>) -> Box<dyn Any>;
9}
10
11impl<T> DataAny for T
12where
13	T: Any + Send + Sync + DynClone,
14{
15	fn as_any(&self) -> &dyn Any { self }
16
17	fn into_any(self: Box<Self>) -> Box<dyn Any> { self }
18}
19
20impl Clone for Box<dyn DataAny> {
21	fn clone(&self) -> Self { dyn_clone::clone_box(&**self) }
22}
23
24impl fmt::Debug for dyn DataAny {
25	fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
26		f.debug_struct("DataAny").finish_non_exhaustive()
27	}
28}