rust/tests/ui/traits/object-one-type-two-traits.rs
2024-02-16 20:02:50 +00:00

32 lines
606 B
Rust

//@ run-pass
#![allow(dead_code)]
#![allow(unused_variables)]
// Testing creating two vtables with the same self type, but different
// traits.
use std::any::Any;
trait Wrap {
fn get(&self) -> isize;
fn wrap(self: Box<Self>) -> Box<dyn Any+'static>;
}
impl Wrap for isize {
fn get(&self) -> isize {
*self
}
fn wrap(self: Box<isize>) -> Box<dyn Any+'static> {
self as Box<dyn Any+'static>
}
}
fn is<T:Any>(x: &dyn Any) -> bool {
x.is::<T>()
}
fn main() {
let x = Box::new(22isize) as Box<dyn Wrap>;
println!("x={}", x.get());
let y = x.wrap();
}