Trait serde_traitobject::Any
source · pub trait Any: Any + Serialize + Deserialize {
fn as_any(&self) -> &dyn Any;
fn as_any_mut(&mut self) -> &mut dyn Any;
fn into_any(self: Box<Self>) -> Box<dyn Any>;
}
Expand description
A convenience trait implemented on all (de)serializable implementors of std::any::Any
.
It can be made into a trait object which is then (de)serializable.
Example
extern crate serde_json;
extern crate serde_traitobject as s;
use std::any::Any;
let erased: s::Box<dyn s::Any> = s::Box::new(String::from("hi there"));
let serialized = serde_json::to_string(&erased).unwrap();
let deserialized: s::Box<dyn s::Any> = serde_json::from_str(&serialized).unwrap();
let downcast: Box<String> = Box::<dyn Any>::downcast(deserialized.into_any()).unwrap();
println!("{}!", downcast);
// hi there!
Required Methods§
sourcefn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
Convert to a &mut std::any::Any
.
Implementations§
Trait Implementations§
source§impl<'de> Deserialize<'de> for Box<dyn Any + 'static>
impl<'de> Deserialize<'de> for Box<dyn Any + 'static>
source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl<'de> Deserialize<'de> for Box<dyn Any + Send + 'static>
impl<'de> Deserialize<'de> for Box<dyn Any + Send + 'static>
source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more