use deflect::Reflect;
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
#[allow(dead_code)]
struct Foo {
a: u8,
}
let context = deflect::default_provider()?;
let data: Box<dyn std::any::Any> = Box::new(Foo { a: 42 });
let erased: &dyn Reflect = &data;
let value: deflect::Value = erased.reflect(&context)?;
assert_eq!(value.to_string(), "box Foo { a: 42 }");
let value: deflect::value::BoxedDyn = value.try_into()?;
let value: deflect::Value = value.deref()?;
let value: deflect::value::Struct = value.try_into()?;
assert_eq!(value.to_string(), "Foo { a: 42 }");
Ok(())
}