[][src]Trait serde_traitobject::Any

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>; }

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

fn as_any(&self) -> &dyn Any

Convert to a &std::any::Any.

fn as_any_mut(&mut self) -> &mut dyn Any

Convert to a &mut std::any::Any.

fn into_any(self: Box<Self>) -> Box<dyn Any>

Convert to a std::boxed::Box<dyn std::any::Any>.

Loading content...

Methods

impl dyn Any + Send[src]

pub fn into_any_send(self: Box<Self>) -> Box<dyn Any + Send>[src]

Convert into a std::boxed::Box<dyn std::any::Any + Send>.

impl dyn Any + Sync[src]

pub fn into_any_sync(self: Box<Self>) -> Box<dyn Any + Sync>[src]

Convert into a std::boxed::Box<dyn std::any::Any + Sync>.

impl dyn Any + Send + Sync[src]

pub fn into_any_send_sync(self: Box<Self>) -> Box<dyn Any + Send + Sync>[src]

Convert into a std::boxed::Box<dyn std::any::Any + Send + Sync>.

Trait Implementations

impl AsRef<dyn Any + 'static> for dyn Any[src]

impl AsRef<dyn Any + 'static + Send> for dyn Any + Send[src]

impl Serialize for dyn Any[src]

impl Serialize for dyn Any + Send[src]

Implementors

impl<T> Any for T where
    T: Any + Serialize + Deserialize
[src]

Loading content...