Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::any::Any;
- trait T {
- fn foo(&self) -> &'static str;
- fn into_any(self: Box<Self>) -> Box<dyn Any>;
- }
- struct A();
- impl T for A {
- fn foo(&self) -> &'static str {
- "a"
- }
- fn into_any(self: Box<Self>) -> Box<dyn Any> {
- self
- }
- }
- fn main() {
- // construct Box<dyn T>
- let a: Box<dyn T> = Box::new(A());
- println!("{}", a.foo());
- // convert Box<A> to Box<dyn Any>
- let a: Box<A> = Box::new(A());
- let a = a as Box<dyn Any>;
- println!("{}", a.downcast::<A>().unwrap().foo());
- // convert Box<dyn T> to Box<dyn Any>
- let a: Box<dyn T> = Box::new(A());
- let a = a.into_any();
- println!("{}", a.downcast::<A>().unwrap().foo());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement